mummy
1.0.2
|
00001 //---------------------------------------------------------------------------- 00002 // MummySettings.h 00003 // 00004 // Author(s) : David Cole 00005 // 00006 // Copyright (C) 2006-2007 Kitware, Inc. 00007 //---------------------------------------------------------------------------- 00008 00009 #include "MummyUtilities.h" // first mummy include for root classes 00010 00011 #include "gxsys/stl/string" 00012 #include "gxsys/stl/vector" 00013 00014 class MummySettingsInternals; 00015 00016 namespace cable 00017 { 00018 class Class; 00019 class SourceRepresentation; 00020 } 00021 00022 namespace gxsys 00023 { 00024 class CommandLineArguments; 00025 } 00026 00027 00028 //---------------------------------------------------------------------------- 00029 class ClassWrappingSettings 00030 { 00031 public: 00032 gxsys_stl::string name; 00033 gxsys_stl::string pattern; 00034 gxsys_stl::string sortkey; 00035 gxsys_stl::string defaultFactoryMethod; 00036 bool emitDefaultFactoryMethod; 00037 gxsys_stl::string countedMethodsRegex; 00038 gxsys_stl::string defaultDisposalMethod; 00039 bool shadow; 00040 gxsys_stl::string externalHints; 00041 gxsys_stl::string extraExportLayerCode; 00042 gxsys_stl::string extraCsharpCode; 00043 gxsys_stl::string extraCsharpUnitTestCode; 00044 gxsys_stl::string csharpConstructorModifier; 00045 gxsys_stl::string registerMethod; 00046 gxsys_stl::string unRegisterMethod; 00047 gxsys_stl::string getRefCountMethod; 00048 gxsys_stl::string registerBaseClass; 00049 gxsys_stl::string registerInclude; 00050 gxsys_stl::string getMummyTypeEntryMethod; 00051 gxsys_stl::string setMummyTypeEntryMethod; 00052 bool excludeMarkedLines; 00053 gxsys_stl::string beginExcludeRegex; 00054 gxsys_stl::string endExcludeRegex; 00055 bool partialClass; 00056 gxsys_stl::string exceptionBaseClass; 00057 gxsys_stl::string exceptionCloneMethod; 00058 gxsys_stl::string exceptionInclude; 00059 gxsys_stl::string wrappedObjectBase; 00060 00061 ClassWrappingSettings( 00062 gxsys_stl::string nm = gxsys_stl::string(""), 00063 gxsys_stl::string pat = gxsys_stl::string(""), 00064 gxsys_stl::string sk = gxsys_stl::string(""), 00065 gxsys_stl::string fm = gxsys_stl::string(""), 00066 bool edfm = false, 00067 gxsys_stl::string cmr = gxsys_stl::string(""), 00068 gxsys_stl::string dm = gxsys_stl::string(""), 00069 bool sh = false, 00070 gxsys_stl::string exH = gxsys_stl::string(""), 00071 gxsys_stl::string exEL = gxsys_stl::string(""), 00072 gxsys_stl::string exCS = gxsys_stl::string(""), 00073 gxsys_stl::string exCSUT = gxsys_stl::string(""), 00074 gxsys_stl::string csCM = gxsys_stl::string(""), 00075 gxsys_stl::string rm = gxsys_stl::string(""), 00076 gxsys_stl::string um = gxsys_stl::string(""), 00077 gxsys_stl::string grcm = gxsys_stl::string(""), 00078 gxsys_stl::string rbc = gxsys_stl::string(""), 00079 gxsys_stl::string ri = gxsys_stl::string(""), 00080 gxsys_stl::string gmtem = gxsys_stl::string(""), 00081 gxsys_stl::string smtem = gxsys_stl::string(""), 00082 bool eml = false, 00083 gxsys_stl::string ber = gxsys_stl::string(""), 00084 gxsys_stl::string eer = gxsys_stl::string(""), 00085 bool partial = false, 00086 gxsys_stl::string ebc = gxsys_stl::string(""), 00087 gxsys_stl::string ecm = gxsys_stl::string(""), 00088 gxsys_stl::string ei = gxsys_stl::string(""), 00089 gxsys_stl::string wob = gxsys_stl::string("") 00090 ) : 00091 name(nm), 00092 pattern(pat), 00093 sortkey(sk), 00094 defaultFactoryMethod(fm), 00095 emitDefaultFactoryMethod(edfm), 00096 countedMethodsRegex(cmr), 00097 defaultDisposalMethod(dm), 00098 shadow(sh), 00099 externalHints(exH), 00100 extraExportLayerCode(exEL), 00101 extraCsharpCode(exCS), 00102 extraCsharpUnitTestCode(exCSUT), 00103 csharpConstructorModifier(csCM), 00104 registerMethod(rm), 00105 unRegisterMethod(um), 00106 getRefCountMethod(grcm), 00107 registerBaseClass(rbc), 00108 registerInclude(ri), 00109 getMummyTypeEntryMethod(gmtem), 00110 setMummyTypeEntryMethod(smtem), 00111 excludeMarkedLines(eml), 00112 beginExcludeRegex(ber), 00113 endExcludeRegex(eer), 00114 partialClass(partial), 00115 exceptionBaseClass(ebc), 00116 exceptionCloneMethod(ecm), 00117 exceptionInclude(ei), 00118 wrappedObjectBase(wob) 00119 { 00120 } 00121 }; 00122 00123 00124 //---------------------------------------------------------------------------- 00125 class MummySettings 00126 { 00127 public: 00128 MummySettings(); 00129 virtual ~MummySettings(); 00130 00131 virtual int Initialize(int argc, char *argv[]); 00132 00133 virtual int ParseSettingsFile(const char *filename); 00134 virtual int ProcessSource(cable::SourceRepresentation* sr); 00135 00136 static int DisplayHelp(const char* argument, const char* value, void* call_data); 00137 static int DisplayVersion(const char* argument, const char* value, void* call_data); 00138 00139 virtual const char *GetSettingsFileName(); 00140 virtual const char *GetCsharpFileName(); 00141 virtual const char *GetExportLayerFileName(); 00142 virtual const char *GetCsharpUnitTestFileName(); 00143 virtual const char *GetGccxmlFileName(); 00144 virtual const char *GetGroup(); 00145 virtual const char *GetHeader(); 00146 virtual const char *GetPackage(); 00147 virtual const char *GetPackageVersion(); 00148 virtual bool ShouldRun(); 00149 virtual bool GetVerbose(); 00150 virtual gxsys_stl::string GetMummyVersion(); 00151 00152 virtual void AddUnwrappableClass(const ClassWrappingSettings &cws); 00153 virtual void AddWrappableClass(const ClassWrappingSettings &cws); 00154 virtual void AddUnwrappablePattern(const ClassWrappingSettings &cws); 00155 virtual void AddWrappablePattern(const ClassWrappingSettings &cws); 00156 virtual bool FindClassWrappingSettings(const char *name, ClassWrappingSettings* cws); 00157 00158 virtual void AddReference(const char *name); 00159 virtual void GetReferences(gxsys_stl::vector<gxsys_stl::string>& references); 00160 00161 virtual bool ClassIsWrappable(const cable::Class *c); 00162 00163 virtual gxsys_stl::string GetCsharpFileName(const cable::Class* c); 00164 virtual gxsys_stl::string GetExportLayerFileName(const cable::Class* c); 00165 virtual gxsys_stl::string GetCsharpUnitTestFileName(const cable::Class* c); 00166 virtual gxsys_stl::string GetCsharpConstructorModifier(const cable::Class* c); 00167 virtual gxsys_stl::string GetFactoryMethod(const cable::Class* c); 00168 virtual bool GetEmitDefaultFactoryMethod(const cable::Class* c); 00169 virtual gxsys_stl::string GetCountedMethodsRegex(const cable::Class* c); 00170 virtual gxsys_stl::string GetDisposalMethod(const cable::Class* c); 00171 virtual bool GetUseShadow(const cable::Class* c); 00172 virtual gxsys_stl::string GetExternalHints(const cable::Class* c); 00173 virtual gxsys_stl::string GetExtraCsharpCode(const cable::Class* c); 00174 virtual gxsys_stl::string GetExtraExportLayerCode(const cable::Class* c); 00175 virtual gxsys_stl::string GetExtraCsharpUnitTestCode(const cable::Class* c); 00176 virtual gxsys_stl::string GetRegisterMethod(const cable::Class* c); 00177 virtual gxsys_stl::string GetUnRegisterMethod(const cable::Class* c); 00178 virtual gxsys_stl::string GetRegisterBaseClass(const cable::Class* c); 00179 virtual gxsys_stl::string GetRegisterInclude(const cable::Class* c); 00180 virtual bool GetPartialClass(const cable::Class* c); 00181 00182 private: 00183 void AddArgumentHandlers(gxsys::CommandLineArguments& arguments); 00184 void Reset(); 00185 00186 MummySettingsInternals *Internals; 00187 };