21 #include "cableClass.h"
22 #include "cableClassType.h"
23 #include "cableContext.h"
24 #include "cableMethod.h"
25 #include "cableNamespace.h"
26 #include "cableSourceRepresentation.h"
27 #include "cableTypedef.h"
28 #include "cableVariable.h"
29 #include "cableXMLSourceParser.h"
30 #include "cxxFundamentalType.h"
32 #include "gxsys/ios/fstream"
33 #include "gxsys/ios/iostream"
34 #include "gxsys/ios/sstream"
35 #include "gxsys/stl/map"
36 #include "gxsys/stl/set"
37 #include "gxsys/stl/string"
97 if (!inFileName || (0 == strlen(inFileName)))
106 gxsys_ios::ifstream inFile(inFileName, std::ios_base::in|std::ios_base::binary);
114 cable::XMLSourceParser::Pointer parser = cable::XMLSourceParser::New();
115 parser->SetStream(&inFile);
121 parser->SetStream(0);
125 return parser->GetSourceRepresentation();
141 const cable::Namespace* gns = sr->GetGlobalNamespace();
146 cable::Context::Iterator lower = gns->LowerBound(
"_cable_");
147 cable::Context::Iterator upper = gns->UpperBound(
"_cable_");
148 cable::Namespace* cns = 0;
151 cns = cable::Namespace::SafeDownCast(*lower);
166 gxsys_stl::map<const cable::Class*, cable::Typedef*> TypedefLookup;
167 gxsys_stl::set<const cable::Class*> ClassesToBeIncluded;
169 const cable::Namespace* wns = 0;
170 cable::Context::Iterator wlower = cns->LowerBound(
"wrappers");
171 cable::Context::Iterator wupper = cns->UpperBound(
"wrappers");
172 if (wlower != wupper)
174 wns = cable::Namespace::SafeDownCast(*wlower);
182 for (cable::Context::Iterator w = wns->Begin(); w != wns->End(); ++w)
184 cable::Typedef* td = cable::Typedef::SafeDownCast(*w);
187 const cable::ClassType* ct = cable::ClassType::SafeDownCast(td->GetType());
190 const cable::Class* c = ct->GetClass();
191 TypedefLookup.insert(gxsys_stl::make_pair(c, td));
192 ClassesToBeIncluded.insert(c);
199 for (gxsys_stl::set<const cable::Class*>::iterator i =
200 ClassesToBeIncluded.begin(); !err && i != ClassesToBeIncluded.end(); ++i)
202 const cable::Class* c = *i;
237 gxsys_ios::ostringstream ossCS;
239 csg.SetSourceRepresentation(sr);
240 csg.SetStream(&ossCS);
245 gxsys_ios::ostringstream ossEL;
248 cselg.SetSourceRepresentation(sr);
249 cselg.SetStream(&ossEL);
258 csslg.SetSourceRepresentation(sr);
259 csslg.SetStream(&ossEL);
265 gxsys_ios::ostringstream ossUT;
268 csutg.SetSourceRepresentation(sr);
269 csutg.SetStream(&ossUT);
virtual bool ClassIsWrappable(const cable::Class *c)
virtual void SetSettings(MummySettings *settings)
Set the associated settings object.
#define LogVerboseInfo(m)
virtual const char * GetGccxmlFileName()
virtual int Initialize(int argc, char *argv[])
virtual void SetTargetClass(const cable::Class *c)
Set the current target class.
virtual int ProcessSource(cable::SourceRepresentation *sr)
Processes the source representation to initialize some settings and determine what class to wrap...
virtual void SetCsharpGenerator(MummyCsharpGenerator *generator)
virtual cable::SourceRepresentation * BuildSourceRepresentation()
Builds an object model "source representation" from the input file produced by gccxml.
virtual void SetTargetClass(const cable::Class *c)
Set the current target class.
virtual void SetSettings(MummySettings *settings)
Set the associated settings object.
virtual ~MummyApplication()
virtual int ProcessSource(cable::SourceRepresentation *sr)
virtual void SetCsharpGenerator(MummyCsharpGenerator *generator)
virtual int Main(int argc, char *argv[])
"Command line style" entry point. Run "mummy --help" from a command prompt to see command line option...
virtual MummySettings * GetSettings()
Get the associated settings object.
virtual void SetCsharpGenerator(MummyCsharpGenerator *generator)
void WriteToFile(const char *filename, const char *s)
bool ValidateBaseClasses(const cable::Class *c)
virtual int ProcessClass(cable::SourceRepresentation *sr, const cable::Class *c)
Processes the class to wrap and generates appropriate output files based on the generators used...