Lines Matching refs:dcl

258 static int parse_declaration_specifiers(int sym, zend_ffi_dcl *dcl);
259 static int parse_specifier_qualifier_list(int sym, zend_ffi_dcl *dcl);
260 static int parse_type_qualifier_list(int sym, zend_ffi_dcl *dcl);
261 static int parse_type_qualifier(int sym, zend_ffi_dcl *dcl);
262 static int parse_type_specifier(int sym, zend_ffi_dcl *dcl);
263 static int parse_struct_or_union_specifier(int sym, zend_ffi_dcl *dcl);
264 static int parse_struct_contents(int sym, zend_ffi_dcl *dcl);
267 static int parse_enum_specifier(int sym, zend_ffi_dcl *dcl);
270 static int parse_declarator(int sym, zend_ffi_dcl *dcl, const char **name, size_t *name_len);
271 static int parse_abstract_declarator(int sym, zend_ffi_dcl *dcl);
272 static int parse_parameter_declarator(int sym, zend_ffi_dcl *dcl, const char **name, size_t *name_l…
273 static int parse_pointer(int sym, zend_ffi_dcl *dcl);
274 static int parse_array_or_function_declarators(int sym, zend_ffi_dcl *dcl, zend_ffi_dcl *nested_dcl…
276 static int parse_type_name(int sym, zend_ffi_dcl *dcl);
277 static int parse_attributes(int sym, zend_ffi_dcl *dcl);
278 static int parse_attrib(int sym, zend_ffi_dcl *dcl);
2022 zend_ffi_dcl dcl; in parse_declarations() local
2023 dcl = common_dcl; in parse_declarations()
2024 sym = parse_declarator(sym, &dcl, &name, &name_len); in parse_declarations()
2041 sym = parse_attributes(sym, &dcl); in parse_declarations()
2046 zend_ffi_declare(name, name_len, &dcl); in parse_declarations()
2049 dcl = common_dcl; in parse_declarations()
2050 sym = parse_declarator(sym, &dcl, &name, &name_len); in parse_declarations()
2052 sym = parse_attributes(sym, &dcl); in parse_declarations()
2057 zend_ffi_declare(name, name_len, &dcl); in parse_declarations()
2068 static int parse_declaration_specifiers(int sym, zend_ffi_dcl *dcl) { in parse_declaration_specifiers() argument
2072 if (dcl->flags & ZEND_FFI_DCL_STORAGE_CLASS) yy_error_sym("unexpected", sym); in parse_declaration_specifiers()
2074 dcl->flags |= ZEND_FFI_DCL_TYPEDEF; in parse_declaration_specifiers()
2077 if (dcl->flags & ZEND_FFI_DCL_STORAGE_CLASS) yy_error_sym("unexpected", sym); in parse_declaration_specifiers()
2079 dcl->flags |= ZEND_FFI_DCL_EXTERN; in parse_declaration_specifiers()
2082 if (dcl->flags & ZEND_FFI_DCL_STORAGE_CLASS) yy_error_sym("unexpected", sym); in parse_declaration_specifiers()
2084 dcl->flags |= ZEND_FFI_DCL_STATIC; in parse_declaration_specifiers()
2087 if (dcl->flags & ZEND_FFI_DCL_STORAGE_CLASS) yy_error_sym("unexpected", sym); in parse_declaration_specifiers()
2089 dcl->flags |= ZEND_FFI_DCL_AUTO; in parse_declaration_specifiers()
2092 if (dcl->flags & ZEND_FFI_DCL_STORAGE_CLASS) yy_error_sym("unexpected", sym); in parse_declaration_specifiers()
2094 dcl->flags |= ZEND_FFI_DCL_REGISTER; in parse_declaration_specifiers()
2100 dcl->flags |= ZEND_FFI_DCL_INLINE; in parse_declaration_specifiers()
2104 dcl->flags |= ZEND_FFI_DCL_NO_RETURN; in parse_declaration_specifiers()
2115 zend_ffi_align_as_type(dcl, &align_dcl); in parse_declaration_specifiers()
2119 zend_ffi_align_as_val(dcl, &align_val); in parse_declaration_specifiers()
2136 sym = parse_attributes(sym, dcl); in parse_declaration_specifiers()
2148 sym = parse_type_qualifier(sym, dcl); in parse_declaration_specifiers()
2168 sym = parse_type_specifier(sym, dcl); in parse_declaration_specifiers()
2173 …0\377\377\377\377\107\360\017\000\000\000\002\000")) && (sym != YY_ID || !(dcl->flags & ZEND_FFI_D… in parse_declaration_specifiers()
2177 static int parse_specifier_qualifier_list(int sym, zend_ffi_dcl *dcl) { in parse_specifier_qualifier_list() argument
2183 sym = parse_type_specifier(sym, dcl); in parse_specifier_qualifier_list()
2185 sym = parse_type_qualifier(sym, dcl); in parse_specifier_qualifier_list()
2187 sym = parse_attributes(sym, dcl); in parse_specifier_qualifier_list()
2191 …ID || zend_ffi_is_typedef_name((const char*)yy_text, yy_pos - yy_text) || (dcl->flags & ZEND_FFI_D… in parse_specifier_qualifier_list()
2195 static int parse_type_qualifier_list(int sym, zend_ffi_dcl *dcl) { in parse_type_qualifier_list() argument
2198 sym = parse_type_qualifier(sym, dcl); in parse_type_qualifier_list()
2200 sym = parse_attributes(sym, dcl); in parse_type_qualifier_list()
2208 static int parse_type_qualifier(int sym, zend_ffi_dcl *dcl) { in parse_type_qualifier() argument
2211 dcl->flags |= ZEND_FFI_DCL_CONST; in parse_type_qualifier()
2212 dcl->attr |= ZEND_FFI_ATTR_CONST; in parse_type_qualifier()
2215 dcl->flags |= ZEND_FFI_DCL_RESTRICT; in parse_type_qualifier()
2218 dcl->flags |= ZEND_FFI_DCL_VOLATILE; in parse_type_qualifier()
2221 dcl->flags |= ZEND_FFI_DCL_ATOMIC; in parse_type_qualifier()
2228 static int parse_type_specifier(int sym, zend_ffi_dcl *dcl) { in parse_type_specifier() argument
2233 if (dcl->flags & ZEND_FFI_DCL_TYPE_SPECIFIERS) yy_error_sym("unexpected", sym); in parse_type_specifier()
2235 dcl->flags |= ZEND_FFI_DCL_VOID; in parse_type_specifier()
2238 …if (dcl->flags & (ZEND_FFI_DCL_TYPE_SPECIFIERS-(ZEND_FFI_DCL_SIGNED|ZEND_FFI_DCL_UNSIGNED))) yy_er… in parse_type_specifier()
2240 dcl->flags |= ZEND_FFI_DCL_CHAR; in parse_type_specifier()
2243 …if (dcl->flags & (ZEND_FFI_DCL_TYPE_SPECIFIERS-(ZEND_FFI_DCL_SIGNED|ZEND_FFI_DCL_UNSIGNED|ZEND_FFI… in parse_type_specifier()
2245 dcl->flags |= ZEND_FFI_DCL_SHORT; in parse_type_specifier()
2248 …if (dcl->flags & (ZEND_FFI_DCL_TYPE_SPECIFIERS-(ZEND_FFI_DCL_SIGNED|ZEND_FFI_DCL_UNSIGNED|ZEND_FFI… in parse_type_specifier()
2250 dcl->flags |= ZEND_FFI_DCL_INT; in parse_type_specifier()
2253 if (dcl->flags & ZEND_FFI_DCL_LONG) { in parse_type_specifier()
2254 …if (dcl->flags & (ZEND_FFI_DCL_TYPE_SPECIFIERS-(ZEND_FFI_DCL_LONG|ZEND_FFI_DCL_SIGNED|ZEND_FFI_DCL… in parse_type_specifier()
2255 dcl->flags |= ZEND_FFI_DCL_LONG_LONG; in parse_type_specifier()
2257 …if (dcl->flags & (ZEND_FFI_DCL_TYPE_SPECIFIERS-(ZEND_FFI_DCL_LONG|ZEND_FFI_DCL_SIGNED|ZEND_FFI_DCL… in parse_type_specifier()
2258 dcl->flags |= ZEND_FFI_DCL_LONG; in parse_type_specifier()
2263 …if (dcl->flags & (ZEND_FFI_DCL_TYPE_SPECIFIERS-(ZEND_FFI_DCL_COMPLEX))) yy_error_sym("unexpected",… in parse_type_specifier()
2265 dcl->flags |= ZEND_FFI_DCL_FLOAT; in parse_type_specifier()
2268 …if (dcl->flags & (ZEND_FFI_DCL_TYPE_SPECIFIERS-(ZEND_FFI_DCL_LONG|ZEND_FFI_DCL_COMPLEX))) yy_error… in parse_type_specifier()
2270 dcl->flags |= ZEND_FFI_DCL_DOUBLE; in parse_type_specifier()
2273 …if (dcl->flags & (ZEND_FFI_DCL_TYPE_SPECIFIERS-(ZEND_FFI_DCL_CHAR|ZEND_FFI_DCL_SHORT|ZEND_FFI_DCL_… in parse_type_specifier()
2275 dcl->flags |= ZEND_FFI_DCL_SIGNED; in parse_type_specifier()
2278 …if (dcl->flags & (ZEND_FFI_DCL_TYPE_SPECIFIERS-(ZEND_FFI_DCL_CHAR|ZEND_FFI_DCL_SHORT|ZEND_FFI_DCL_… in parse_type_specifier()
2280 dcl->flags |= ZEND_FFI_DCL_UNSIGNED; in parse_type_specifier()
2283 if (dcl->flags & ZEND_FFI_DCL_TYPE_SPECIFIERS) yy_error_sym("unexpected", sym); in parse_type_specifier()
2285 dcl->flags |= ZEND_FFI_DCL_BOOL; in parse_type_specifier()
2291 …if (dcl->flags & (ZEND_FFI_DCL_TYPE_SPECIFIERS-(ZEND_FFI_DCL_FLOAT|ZEND_FFI_DCL_DOUBLE|ZEND_FFI_DC… in parse_type_specifier()
2293 dcl->flags |= ZEND_FFI_DCL_COMPLEX; in parse_type_specifier()
2297 if (dcl->flags & ZEND_FFI_DCL_TYPE_SPECIFIERS) yy_error_sym("unexpected", sym); in parse_type_specifier()
2298 sym = parse_struct_or_union_specifier(sym, dcl); in parse_type_specifier()
2301 if (dcl->flags & ZEND_FFI_DCL_TYPE_SPECIFIERS) yy_error_sym("unexpected", sym); in parse_type_specifier()
2302 sym = parse_enum_specifier(sym, dcl); in parse_type_specifier()
2305 if (dcl->flags & ZEND_FFI_DCL_TYPE_SPECIFIERS) yy_error_sym("unexpected", sym); in parse_type_specifier()
2308 dcl->flags |= ZEND_FFI_DCL_TYPEDEF_NAME; in parse_type_specifier()
2309 zend_ffi_resolve_typedef(name, name_len, dcl); in parse_type_specifier()
2317 static int parse_struct_or_union_specifier(int sym, zend_ffi_dcl *dcl) { in parse_struct_or_union_specifier() argument
2320 dcl->flags |= ZEND_FFI_DCL_STRUCT; in parse_struct_or_union_specifier()
2323 dcl->flags |= ZEND_FFI_DCL_UNION; in parse_struct_or_union_specifier()
2328 sym = parse_attributes(sym, dcl); in parse_struct_or_union_specifier()
2334 zend_ffi_declare_tag(name, name_len, dcl, 1); in parse_struct_or_union_specifier()
2336 sym = parse_struct_contents(sym, dcl); in parse_struct_or_union_specifier()
2337 zend_ffi_declare_tag(name, name_len, dcl, 0); in parse_struct_or_union_specifier()
2340 zend_ffi_make_struct_type(dcl); in parse_struct_or_union_specifier()
2341 sym = parse_struct_contents(sym, dcl); in parse_struct_or_union_specifier()
2348 static int parse_struct_contents(int sym, zend_ffi_dcl *dcl) { in parse_struct_contents() argument
2359 sym = parse_struct_declaration(sym, dcl); in parse_struct_contents()
2393 sym = parse_struct_declaration(sym, dcl); in parse_struct_contents()
2404 sym = parse_attributes(sym, dcl); in parse_struct_contents()
2406 zend_ffi_adjust_struct_size(dcl); in parse_struct_contents()
2462 static int parse_enum_specifier(int sym, zend_ffi_dcl *dcl) { in parse_enum_specifier() argument
2467 dcl->flags |= ZEND_FFI_DCL_ENUM; in parse_enum_specifier()
2469 sym = parse_attributes(sym, dcl); in parse_enum_specifier()
2476 zend_ffi_declare_tag(name, name_len, dcl, 0); in parse_enum_specifier()
2478 sym = parse_enumerator_list(sym, dcl); in parse_enum_specifier()
2484 sym = parse_attributes(sym, dcl); in parse_enum_specifier()
2487 zend_ffi_declare_tag(name, name_len, dcl, 1); in parse_enum_specifier()
2493 zend_ffi_make_enum_type(dcl); in parse_enum_specifier()
2494 sym = parse_enumerator_list(sym, dcl); in parse_enum_specifier()
2500 sym = parse_attributes(sym, dcl); in parse_enum_specifier()
2570 static int parse_declarator(int sym, zend_ffi_dcl *dcl, const char **name, size_t *name_len) { in parse_declarator() argument
2574 sym = parse_pointer(sym, dcl); in parse_declarator()
2593 sym = parse_array_or_function_declarators(sym, dcl, &nested_dcl); in parse_declarator()
2595 if (nested) zend_ffi_nested_declaration(dcl, &nested_dcl); in parse_declarator()
2599 static int parse_abstract_declarator(int sym, zend_ffi_dcl *dcl) { in parse_abstract_declarator() argument
2603 sym = parse_pointer(sym, dcl); in parse_abstract_declarator()
2618 sym = parse_array_or_function_declarators(sym, dcl, &nested_dcl); in parse_abstract_declarator()
2620 if (nested) zend_ffi_nested_declaration(dcl, &nested_dcl); in parse_abstract_declarator()
2624 static int parse_parameter_declarator(int sym, zend_ffi_dcl *dcl, const char **name, size_t *name_l… in parse_parameter_declarator() argument
2628 sym = parse_pointer(sym, dcl); in parse_parameter_declarator()
2648 sym = parse_array_or_function_declarators(sym, dcl, &nested_dcl); in parse_parameter_declarator()
2650 if (nested) zend_ffi_nested_declaration(dcl, &nested_dcl); in parse_parameter_declarator()
2654 static int parse_pointer(int sym, zend_ffi_dcl *dcl) { in parse_pointer() argument
2660 zend_ffi_make_pointer_type(dcl); in parse_pointer()
2662 sym = parse_type_qualifier_list(sym, dcl); in parse_pointer()
2668 static int parse_array_or_function_declarators(int sym, zend_ffi_dcl *dcl, zend_ffi_dcl *nested_dcl… in parse_array_or_function_declarators() argument
2791 sym = parse_array_or_function_declarators(sym, dcl, nested_dcl); in parse_array_or_function_declarators()
2793 dcl->attr |= attr; in parse_array_or_function_declarators()
2794 zend_ffi_make_array_type(dcl, &len); in parse_array_or_function_declarators()
2853 sym = parse_array_or_function_declarators(sym, dcl, nested_dcl); in parse_array_or_function_declarators()
2855 dcl->attr |= attr; in parse_array_or_function_declarators()
2856 zend_ffi_make_func_type(dcl, args, nested_dcl); in parse_array_or_function_declarators()
2876 static int parse_type_name(int sym, zend_ffi_dcl *dcl) { in parse_type_name() argument
2877 sym = parse_specifier_qualifier_list(sym, dcl); in parse_type_name()
2878 sym = parse_abstract_declarator(sym, dcl); in parse_type_name()
2882 static int parse_attributes(int sym, zend_ffi_dcl *dcl) { in parse_attributes() argument
2899 sym = parse_attrib(sym, dcl); in parse_attributes()
2902 sym = parse_attrib(sym, dcl); in parse_attributes()
2924 zend_ffi_add_msvc_attribute_value(dcl, name, name_len, &val); in parse_attributes()
2938 zend_ffi_set_abi(dcl, ZEND_FFI_ABI_CDECL); in parse_attributes()
2942 zend_ffi_set_abi(dcl, ZEND_FFI_ABI_STDCALL); in parse_attributes()
2946 zend_ffi_set_abi(dcl, ZEND_FFI_ABI_FASTCALL); in parse_attributes()
2950 zend_ffi_set_abi(dcl, ZEND_FFI_ABI_THISCALL); in parse_attributes()
2954 zend_ffi_set_abi(dcl, ZEND_FFI_ABI_VECTORCALL); in parse_attributes()
2963 static int parse_attrib(int sym, zend_ffi_dcl *dcl) { in parse_attrib() argument
2973 zend_ffi_add_attribute(dcl, name, name_len); in parse_attrib()
2979 zend_ffi_add_attribute_value(dcl, name, name_len, 0, &val); in parse_attrib()
2984 zend_ffi_add_attribute_value(dcl, name, name_len, ++n, &val); in parse_attrib()
3300 zend_ffi_dcl dcl = ZEND_FFI_ATTR_INIT; in parse_cast_expression() local
3303 sym = parse_type_name(sym, &dcl); in parse_cast_expression()
3311 if (do_cast) zend_ffi_expr_cast(val, &dcl); in parse_cast_expression()
3318 zend_ffi_dcl dcl = ZEND_FFI_ATTR_INIT; in parse_unary_expression() local
3431 sym = parse_type_name(sym, &dcl); in parse_unary_expression()
3436 zend_ffi_expr_sizeof_type(val, &dcl); in parse_unary_expression()
3450 sym = parse_type_name(sym, &dcl); in parse_unary_expression()
3455 zend_ffi_expr_alignof_type(val, &dcl); in parse_unary_expression()
3462 sym = parse_type_name(sym, &dcl); in parse_unary_expression()
3467 zend_ffi_expr_alignof_type(val, &dcl); in parse_unary_expression()
3568 int zend_ffi_parse_type(const char *str, size_t len, zend_ffi_dcl *dcl) { in zend_ffi_parse_type() argument
3577 sym = parse_type_name(get_sym(), dcl); in zend_ffi_parse_type()
3581 zend_ffi_validate_type_name(dcl); in zend_ffi_parse_type()