Skip to content

Commit

Permalink
Fixed the include declaration files of external class enums
Browse files Browse the repository at this point in the history
  • Loading branch information
RudenkoSergej committed Mar 28, 2018
1 parent 87e563e commit f1440fc
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 13 deletions.
10 changes: 2 additions & 8 deletions source/ArgumentGenerator.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@
from FileCache import FileCache
from LifecycleTraits import CopySemantic, RefCountedSemantic
from Parser import TC2ImplMode
from NamespaceGenerator import NamespaceGenerator
from BuiltinTypeGenerator import BuiltinTypeGenerator, BaseTypeGenerator
from BuiltinTypeGenerator import BaseTypeGenerator
from Helpers import bool_to_str, include_headers


Expand Down Expand Up @@ -337,12 +336,7 @@ def pointer_2_c(expression: str) -> str:
return '*' + expression

def include_dependent_declaration_headers(self, file_generator: FileGenerator, file_cache: FileCache):
parent_generator = self.enum_argument_generator.parent_generator
if type(parent_generator) is NamespaceGenerator:
header_to_include = file_cache.enums_header(parent_generator.full_name_array)
else:
header_to_include = file_cache.class_header_decl(parent_generator.full_name_array)
file_generator.include_user_header(header_to_include)
file_generator.include_user_header(self.enum_argument_generator.declaration_header(file_cache))

def include_dependent_definition_headers(self, file_generator: FileGenerator, file_cache: FileCache):
self.include_dependent_declaration_headers(file_generator, file_cache)
Expand Down
5 changes: 2 additions & 3 deletions source/Capi.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,9 +185,8 @@ def process_external_enum(enum, parent):
external_enum = TExternalEnumeration()
external_enum.name = enum.name
external_enum.underlying_type = enum.enum_object.underlying_type
parent_name = enum.parent_generator.full_name_array
external_enum.include_declaration = file_cache.enums_header(parent_name)
external_enum.include_definition = file_cache.enums_header(parent_name)
external_enum.include_declaration = enum.declaration_header(file_cache)
external_enum.include_definition = enum.definition_header(file_cache)
parent.enumerations.append(external_enum)

def process_external_namespaces(namespaces: [object], external_namespaces: [object]):
Expand Down
2 changes: 2 additions & 0 deletions source/CreateGenerators.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
#


from BuiltinTypeGenerator import BuiltinTypeGenerator
from NamespaceGenerator import NamespaceGenerator
from Parser import TClass, TEnumeration, TNamespace, TArgument, TBeautifulCapiRoot, TMappedType, TLifecycle, TReference
from Parser import TGenericDocumentation, TDocumentation, TExternalClass, TExternalNamespace, TExternalEnumeration
from ParamsParser import TBeautifulCapiParams
Expand Down
17 changes: 15 additions & 2 deletions source/EnumGenerator.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@
#


from Parser import TEnumeration, TEnumerationItem, TNamespace, TBeautifulCapiRoot, TFunction, TClass, TArgument, \
TImplementationCode
from ExternalNamespaceGenerator import ExternalNamespaceGenerator
from FileCache import FileCache
from NamespaceGenerator import NamespaceGenerator
from Parser import TEnumeration, TEnumerationItem, TNamespace, TBeautifulCapiRoot, TFunction, TClass, TArgument
from Parser import TImplementationCode
from FileGenerator import FileGenerator, IndentScope
from DoxygenCpp import DoxygenCppGenerator

Expand Down Expand Up @@ -76,6 +79,16 @@ def generate_enum_definition(self, out: FileGenerator):
for item_definition, item in zip(items_definitions_with_comma, self.enum_object.items):
out.put_line(item_definition + DoxygenCppGenerator().get_for_enum_item(item))

def declaration_header(self, file_cache: FileCache):
parent_generator = self.parent_generator
if isinstance(parent_generator, NamespaceGenerator) or isinstance(parent_generator, ExternalNamespaceGenerator):
header = file_cache.enums_header(parent_generator.full_name_array)
else:
header = file_cache.class_header_decl(parent_generator.full_name_array)
return header

def definition_header(self, file_cache: FileCache):
return self.declaration_header(file_cache)

class EnumProcessor(object):
def __init__(self, api_description: TBeautifulCapiRoot):
Expand Down

0 comments on commit f1440fc

Please sign in to comment.