#pragma once #include "zcc_compile.h" class DCoreActor; void SetImplicitArgs(TArray* args, TArray* argflags, TArray* argnames, PContainerType* cls, uint32_t funcflags, int useflags); class ZCCRazeCompiler : public ZCCCompiler { public: ZCCRazeCompiler(ZCC_AST &tree, DObject *outer, PSymbolTable &symbols, PNamespace *outnamespace, int lumpnum, const VersionInfo & ver) : ZCCCompiler(tree, outer, symbols, outnamespace, lumpnum, ver) {} int Compile() override; protected: bool PrepareMetaData(PClass *type) override; private: void CompileAllProperties(); bool CompileProperties(PClass *type, TArray &Properties, FName prefix); bool CompileFlagDefs(PClass *type, TArray &Properties, FName prefix); bool CompileFlagDefs(PContainerType* type, TArray& Properties, FName prefix); void DispatchProperty(FPropertyInfo *prop, ZCC_PropertyStmt *property, DCoreActor *defaults, Baggage &bag); void DispatchScriptProperty(PProperty *prop, ZCC_PropertyStmt *property, DCoreActor *defaults, Baggage &bag); void ProcessDefaultProperty(PClassActor *cls, ZCC_PropertyStmt *prop, Baggage &bag); void ProcessDefaultFlag(PClassActor *cls, ZCC_FlagStmt *flg); void InitDefaults() override final; };