diff --git a/scripts/mkqtdecl_common/c++.treetop b/scripts/mkqtdecl_common/c++.treetop index 8c3dbcb68..e9f4a41aa 100644 --- a/scripts/mkqtdecl_common/c++.treetop +++ b/scripts/mkqtdecl_common/c++.treetop @@ -149,15 +149,15 @@ grammar CPP end rule enum_spec - id:id initspec:( s "=" s init:block_wo_comma )? + a id:id a initspec:( s "=" s init:block_wo_comma )? end rule enum_body - enum_spec ( s "," s enum_spec )* + enum_spec ( s "," s enum_spec )* ","? end rule enum_type - "enum" ![a-zA-Z0-9_] a s id:id? bodyspec:( s "{" s body:enum_body s "}" )? + "enum" ![a-zA-Z0-9_] a "class"? s id:id? ( s ":" s type )? bodyspec:( s "{" s body:enum_body s "}" )? end rule virtual_spec diff --git a/scripts/mkqtdecl_common/produce.rb b/scripts/mkqtdecl_common/produce.rb index 188f59ad8..88613d73e 100755 --- a/scripts/mkqtdecl_common/produce.rb +++ b/scripts/mkqtdecl_common/produce.rb @@ -166,6 +166,19 @@ class CPPNamespace end +class CPPEnum + + def resolve_typedefs(scope) + end + + def rescope(prev_scope, other_scope, idpath) + end + + def each_qid(&block) + end + +end + class CPPStruct def resolve_typedefs(scope) @@ -448,7 +461,7 @@ class CPPStruct end elsif bc_obj - raise("#{bc.class_id.to_s} is not a base class in #{self.id.to_s}") + puts("Warning: #{bc.class_id.to_s} is not a base class in #{self.id.to_s}") else puts("Cannot find base class: #{bc.class_id.to_s} of #{self.parent.myself} - declaration ignored") end @@ -1817,7 +1830,7 @@ END bc_methods_by_name = {} base_classes.each do |bc| bc_decl_obj = decl_obj.resolve_qid(bc.class_id) - bc_decl_obj && bc_decl_obj.struct.collect_all_methods(bc_methods_by_name, conf) + bc_decl_obj && bc_decl_obj.respond_to?(:struct) && bc_decl_obj.struct.collect_all_methods(bc_methods_by_name, conf) end mmap = {}