Home | History | Annotate | Download | only in libobjc

Lines Matching defs:layout

348       struct objc_struct_layout layout;
351 objc_layout_structure (type, &layout);
352 while (objc_layout_structure_next_member (&layout))
354 objc_layout_finish_structure (&layout, &size, NULL);
541 struct objc_struct_layout layout;
544 objc_layout_structure (type, &layout);
545 while (objc_layout_structure_next_member (&layout))
547 objc_layout_finish_structure (&layout, NULL, &align);
1057 struct objc_struct_layout layout;
1060 objc_layout_structure (type, &layout);
1061 while (objc_layout_structure_next_member (&layout))
1066 objc_layout_structure_get_info (&layout, &position, &align, &type);
1078 struct objc_struct_layout *layout)
1089 layout->original_type = type;
1101 layout->type = type;
1102 layout->prev_type = NULL;
1103 layout->record_size = 0;
1104 layout->record_align = __CHAR_BIT__;
1106 layout->record_align = MAX (layout->record_align, STRUCTURE_SIZE_BOUNDARY);
1110 objc_layout_structure_next_member (struct objc_struct_layout *layout)
1123 BOOL unionp = layout->original_type[-1] == _C_UNION_B;
1126 if (layout->prev_type)
1128 type = objc_skip_type_qualifiers (layout->prev_type);
1130 layout->record_size = MAX (layout->record_size,
1134 layout->record_size += objc_sizeof_type (type) * __CHAR_BIT__;
1146 layout->record_size += bfld_field_size;
1150 if ((unionp && *layout->type == _C_UNION_E)
1151 || (!unionp && *layout->type == _C_STRUCT_E))
1155 layout->type = objc_skip_variable_name (layout->type);
1156 type = objc_skip_type_qualifiers (layout->type);
1187 layout->record_align = MAX (layout->record_align, desired_align);
1196 layout->record_align = MAX (layout->record_align, desired_align);
1215 layout->record_align = MAX (layout->record_align, type_align);
1219 layout->record_align = MAX (layout->record_align, desired_align);
1227 layout->record_size = atoi (type + 1);
1228 else if (layout->record_size % desired_align != 0)
1232 layout->record_size = ROUND (layout->record_size, desired_align);
1237 layout->prev_type = layout->type;
1238 layout->type = objc_skip_typespec (layout->type); /* skip component */
1243 void objc_layout_finish_structure (struct objc_struct_layout *layout,
1247 BOOL unionp = layout->original_type[-1] == _C_UNION_B;
1248 if (layout->type
1249 && ((!unionp && *layout->type == _C_STRUCT_E)
1250 || (unionp && *layout->type == _C_UNION_E)))
1256 layout->record_align = ROUND_TYPE_ALIGN (layout->original_type-1,
1258 layout->record_align);
1260 layout->record_align = MAX (1, layout->record_align);
1264 layout->record_size = ROUND (layout->record_size, layout->record_align);
1266 layout->type = NULL;
1269 *size = layout->record_size / __CHAR_BIT__;
1271 *align = layout->record_align / __CHAR_BIT__;
1274 void objc_layout_structure_get_info (struct objc_struct_layout *layout,
1280 *offset = layout->record_size / __CHAR_BIT__;
1282 *align = layout->record_align / __CHAR_BIT__;
1284 *type = layout->prev_type;