9 #ifndef _MummyCsharpGenerator_h_
10 #define _MummyCsharpGenerator_h_
14 #include "gxsys/stl/map"
15 #include "gxsys/stl/string"
16 #include "gxsys/stl/vector"
34 virtual gxsys_stl::string
GetMethodArgumentArraySize(
const cable::Class *c,
const cable::Method *m,
const cable::FunctionType *ft,
unsigned int i);
35 virtual gxsys_stl::string
GetMethodSignature(
const cable::Class *c,
const cable::Method *m);
36 virtual const char *
GetArgName(cable::FunctionType *ftype,
unsigned int i);
38 virtual gxsys_stl::string
GetPInvokeTypeString(
const cable::Type *t,
bool forReturn,
bool isArray,
bool forDelegate);
39 virtual gxsys_stl::string
GetCSharpTypeString(
const cable::Type *t,
bool forReturn,
bool isArray);
53 virtual bool MethodIsWrappable(
const cable::Method* m,
const cable::Context::Access& access);
57 virtual bool IsFactoryMethod(
const cable::Class *c,
const cable::Method *m);
58 virtual bool IsDisposalMethod(
const cable::Class *c,
const cable::Method *m);
60 virtual gxsys_stl::string
GetExportLayerFunctionName(
const cable::Class *c,
const cable::Method *m,
const gxsys_stl::string& mname);
61 virtual void EmitCSharpMethodDeclaration(gxsys_ios::ostream &os,
const cable::Class *c,
const cable::Method *m,
bool asProperty,
bool useArg0AsReturn,
const gxsys_stl::string& accessLevel);
62 virtual void EmitCSharpDllImportDeclaration(gxsys_ios::ostream &os,
const char *dllname,
const cable::Class *c,
const cable::Method *m,
const gxsys_stl::string& mname,
const char *f,
bool emitExceptionParams);
63 virtual void EmitCSharpProperty(gxsys_ios::ostream &os,
const char *dllname,
const cable::Class *c,
const cable::Method *propGetMethod,
const cable::Method *propSetMethod,
bool emitExceptionParams);
64 virtual void EmitCSharpMethodBody(gxsys_ios::ostream &os,
unsigned int indent,
const cable::Class *c,
const cable::Method *m, gxsys_stl::string& f,
const char *impliedArg0,
bool emitExceptionParams);
65 virtual void EmitCSharpMethod(gxsys_ios::ostream &os,
const char *dllname,
const cable::Class *c,
const cable::Method *m,
const gxsys_stl::string& mname,
const gxsys_stl::string& accessLevel,
bool emitExceptionParams);
66 virtual void EmitCSharpEvent(gxsys_ios::ostream& os,
const char *dllname,
const cable::Class* c,
const cable::Method* m,
const gxsys_stl::string& eventName);
67 virtual void EmitCSharpEnums(gxsys_ios::ostream &os,
const cable::Class *c);
68 virtual void EmitCSharpConstructor(gxsys_ios::ostream &os,
const char *dllname,
const cable::Class *c,
const cable::Method *m,
const gxsys_stl::string& mname,
bool emitExceptionParams);
69 virtual void EmitCSharpRegister(gxsys_ios::ostream &os,
const char *dllname,
const cable::Class *c,
const cable::Method *m,
const gxsys_stl::string& mname,
bool emitExceptionParams);
70 virtual void EmitCSharpDispose(gxsys_ios::ostream &os,
const char *dllname,
const cable::Class *c,
const cable::Method *m,
const gxsys_stl::string& mname,
const unsigned int eventCount,
bool emitExceptionParams);
73 const cable::Class *c,
74 gxsys_stl::vector<cable::Method*>& wrapped_methods,
75 cable::Method*& factoryM,
76 cable::Method*& disposalM,
77 cable::Method*& registerM,
78 cable::Method*& unRegisterM,
79 bool includeParentMethods
82 const cable::Class *c,
83 gxsys_stl::vector<cable::Method*>& wrapped_methods,
84 cable::Method*& factoryM,
85 cable::Method*& disposalM,
86 cable::Method*& registerM,
87 cable::Method*& unRegisterM
90 gxsys_stl::vector<cable::Method*>& wrapped_methods,
91 gxsys_stl::map<gxsys_stl::string, gxsys_stl::pair<cable::Method*, cable::Method*> >& wrapped_properties
104 gxsys_stl::map<const gxsys_stl::string, gxsys_stl::string>
HintsMap;
virtual void CacheExternalHints(const gxsys_stl::string &hintsfile)
virtual bool WrappedEnumExists(const gxsys_stl::string &name)
virtual void AddLookupEntries(const cable::Class *c)
virtual const char * GetArgName(cable::FunctionType *ftype, unsigned int i)
virtual void EmitCSharpDispose(gxsys_ios::ostream &os, const char *dllname, const cable::Class *c, const cable::Method *m, const gxsys_stl::string &mname, const unsigned int eventCount, bool emitExceptionParams)
virtual bool WrappedMethodExists(const gxsys_stl::string &signature)
virtual void EmitCSharpMethodDeclaration(gxsys_ios::ostream &os, const cable::Class *c, const cable::Method *m, bool asProperty, bool useArg0AsReturn, const gxsys_stl::string &accessLevel)
virtual gxsys_stl::string GetExportLayerFunctionName(const cable::Class *c, const cable::Method *m, const gxsys_stl::string &mname)
virtual void EmitCSharpConstructor(gxsys_ios::ostream &os, const char *dllname, const cable::Class *c, const cable::Method *m, const gxsys_stl::string &mname, bool emitExceptionParams)
virtual void EmitCSharpWrapperClassAsStruct(gxsys_ios::ostream &os, const cable::Class *c)
unsigned int CurrentMethodId
virtual gxsys_stl::string GetMethodSignature(const cable::Class *c, const cable::Method *m)
virtual bool TypeIsWrappable(const cable::Type *t)
virtual bool VirtualMethodOverridden(const gxsys_stl::string &signature)
virtual bool IsDisposalMethod(const cable::Class *c, const cable::Method *m)
virtual bool MethodIsWrappable(const cable::Method *m, const cable::Context::Access &access)
virtual gxsys_stl::string GetWrappedMethodName(const cable::Method *m)
virtual void EmitCSharpWrapperClass(gxsys_ios::ostream &os, const char *dllname, const cable::Class *c)
virtual const cable::Class * GetWrappableParentClass(const cable::Class *c)
virtual void EmitCSharpEnums(gxsys_ios::ostream &os, const cable::Class *c)
virtual void DumpLookupEntries()
gxsys_stl::map< const gxsys_stl::string, gxsys_stl::string > HintsMap
virtual void EmitCSharpRegister(gxsys_ios::ostream &os, const char *dllname, const cable::Class *c, const cable::Method *m, const gxsys_stl::string &mname, bool emitExceptionParams)
virtual bool ValidateWrappedMethods(const cable::Class *c, gxsys_stl::vector< cable::Method * > &wrapped_methods, cable::Method *&factoryM, cable::Method *&disposalM, cable::Method *®isterM, cable::Method *&unRegisterM)
virtual void SetTargetClass(const cable::Class *c)
Set the current target class.
gxsys_stl::map< const cable::Method *, unsigned int > MethodIdMap
virtual void AddTargetInterface(const gxsys_stl::string &iface)
virtual gxsys_stl::string GetMethodArgumentArraySize(const cable::Class *c, const cable::Method *m, const cable::FunctionType *ft, unsigned int i)
virtual void BuildPropGetsAndSetsMap(gxsys_stl::vector< cable::Method * > &wrapped_methods, gxsys_stl::map< gxsys_stl::string, gxsys_stl::pair< cable::Method *, cable::Method * > > &wrapped_properties)
virtual ~MummyCsharpGenerator()
virtual void EmitCSharpMethodBody(gxsys_ios::ostream &os, unsigned int indent, const cable::Class *c, const cable::Method *m, gxsys_stl::string &f, const char *impliedArg0, bool emitExceptionParams)
virtual bool FunctionTypeIsWrappable(const cable::FunctionType *ft)
virtual bool HasTargetInterface(const char *iface) const
virtual gxsys_stl::string GetFundamentalTypeString(const cable::Type *t)
virtual gxsys_stl::string GetCSharpTypeString(const cable::Type *t, bool forReturn, bool isArray)
virtual bool ClassIsWrappable(const cable::Class *c)
virtual bool StaticMethodRedefined(const gxsys_stl::string &signature)
virtual gxsys_stl::string GetPInvokeTypeString(const cable::Type *t, bool forReturn, bool isArray, bool forDelegate)
virtual bool MethodReturnValueIsCounted(const cable::Class *c, const cable::Method *m)
virtual void EmitCSharpMethod(gxsys_ios::ostream &os, const char *dllname, const cable::Class *c, const cable::Method *m, const gxsys_stl::string &mname, const gxsys_stl::string &accessLevel, bool emitExceptionParams)
virtual void GatherWrappedMethods(const cable::Class *c, gxsys_stl::vector< cable::Method * > &wrapped_methods, cable::Method *&factoryM, cable::Method *&disposalM, cable::Method *®isterM, cable::Method *&unRegisterM, bool includeParentMethods)
virtual bool MethodWrappableAsEvent(const cable::Method *m, const cable::Context::Access &access)
virtual bool OtherMethodRedefined(const gxsys_stl::string &signature)
virtual bool GetIsRefArg(const cable::Type *t)
Base class for all Mummy generators.
virtual bool GenerateWrappers()
virtual void EmitCSharpDllImportDeclaration(gxsys_ios::ostream &os, const char *dllname, const cable::Class *c, const cable::Method *m, const gxsys_stl::string &mname, const char *f, bool emitExceptionParams)
virtual void EmitCSharpEvent(gxsys_ios::ostream &os, const char *dllname, const cable::Class *c, const cable::Method *m, const gxsys_stl::string &eventName)
virtual bool FundamentalTypeIsWrappable(const cable::Type *t)
virtual void EmitCSharpProperty(gxsys_ios::ostream &os, const char *dllname, const cable::Class *c, const cable::Method *propGetMethod, const cable::Method *propSetMethod, bool emitExceptionParams)
unsigned int ClassLineNumber
virtual void ClearLookupEntries()
virtual bool IsKeyword(const char *p)
MummyCsharpGenerator & operator=(const MummyCsharpGenerator &)
gxsys_stl::string TargetInterface
virtual bool IsReservedMethodName(const gxsys_stl::string &name)
virtual bool IsFactoryMethod(const cable::Class *c, const cable::Method *m)