77from swift .codegen .lib import cpp , generator , schema
88
99
10- def _get_type (t : str ) -> str :
10+ def _get_type (t : str , trap_affix : str ) -> str :
1111 if t == "string" :
1212 return "std::string"
1313 if t == "boolean" :
1414 return "bool"
1515 if t [0 ].isupper ():
16- return f"TrapLabel <{ t } Tag>"
16+ return f"{ trap_affix } Label <{ t } Tag>"
1717 return t
1818
1919
20- def _get_field (cls : schema .Class , p : schema .Property ) -> cpp .Field :
20+ def _get_field (cls : schema .Class , p : schema .Property , trap_affix : str ) -> cpp .Field :
2121 trap_name = None
2222 if not p .is_single :
2323 trap_name = inflection .pluralize (inflection .camelize (f"{ cls .name } _{ p .name } " ))
2424 args = dict (
2525 name = p .name + ("_" if p .name in cpp .cpp_keywords else "" ),
26- type = _get_type (p .type ),
26+ type = _get_type (p .type , trap_affix ),
2727 is_optional = p .is_optional ,
2828 is_repeated = p .is_repeated ,
2929 trap_name = trap_name ,
@@ -33,8 +33,9 @@ def _get_field(cls: schema.Class, p: schema.Property) -> cpp.Field:
3333
3434
3535class Processor :
36- def __init__ (self , data : Dict [str , schema .Class ]):
36+ def __init__ (self , data : Dict [str , schema .Class ], trap_affix : str ):
3737 self ._classmap = data
38+ self ._trap_affix = trap_affix
3839
3940 @functools .lru_cache (maxsize = None )
4041 def _get_class (self , name : str ) -> cpp .Class :
@@ -45,7 +46,7 @@ def _get_class(self, name: str) -> cpp.Class:
4546 return cpp .Class (
4647 name = name ,
4748 bases = [self ._get_class (b ) for b in cls .bases ],
48- fields = [_get_field (cls , p ) for p in cls .properties ],
49+ fields = [_get_field (cls , p , self . _trap_affix ) for p in cls .properties ],
4950 final = not cls .derived ,
5051 trap_name = trap_name ,
5152 )
@@ -56,10 +57,10 @@ def get_classes(self):
5657
5758
5859def generate (opts , renderer ):
59- processor = Processor ({cls .name : cls for cls in schema .load (opts .schema ).classes })
60+ processor = Processor ({cls .name : cls for cls in schema .load (opts .schema ).classes }, opts . trap_affix )
6061 out = opts .cpp_output
61- renderer .render (cpp .ClassList (processor .get_classes (), opts .cpp_namespace , opts .trap_suffix ,
62- opts .cpp_include_dir ), out / "TrapClasses .h" )
62+ renderer .render (cpp .ClassList (processor .get_classes (), opts .cpp_namespace , opts .trap_affix ,
63+ opts .cpp_include_dir ), out / f" { opts . trap_affix } Classes .h" )
6364
6465
6566tags = ("cpp" , "schema" )
0 commit comments