File: MummySettings.h

package info (click to toggle)
mummy 1.0.2-5
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 1,616 kB
  • sloc: cpp: 10,667; cs: 1,107; makefile: 21; xml: 8; sh: 5
file content (187 lines) | stat: -rw-r--r-- 6,753 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
//----------------------------------------------------------------------------
// MummySettings.h
//
// Author(s) : David Cole
//
// Copyright (C) 2006-2007 Kitware, Inc.
//----------------------------------------------------------------------------

#include "MummyUtilities.h" // first mummy include for root classes

#include "gxsys/stl/string"
#include "gxsys/stl/vector"

class MummySettingsInternals;

namespace cable
{
  class Class;
  class SourceRepresentation;
}

namespace gxsys
{
  class CommandLineArguments;
}


//----------------------------------------------------------------------------
class ClassWrappingSettings
{
public:
  gxsys_stl::string name;
  gxsys_stl::string pattern;
  gxsys_stl::string sortkey;
  gxsys_stl::string defaultFactoryMethod;
  bool emitDefaultFactoryMethod;
  gxsys_stl::string countedMethodsRegex;
  gxsys_stl::string defaultDisposalMethod;
  bool shadow;
  gxsys_stl::string externalHints;
  gxsys_stl::string extraExportLayerCode;
  gxsys_stl::string extraCsharpCode;
  gxsys_stl::string extraCsharpUnitTestCode;
  gxsys_stl::string csharpConstructorModifier;
  gxsys_stl::string registerMethod;
  gxsys_stl::string unRegisterMethod;
  gxsys_stl::string getRefCountMethod;
  gxsys_stl::string registerBaseClass;
  gxsys_stl::string registerInclude;
  gxsys_stl::string getMummyTypeEntryMethod;
  gxsys_stl::string setMummyTypeEntryMethod;
  bool excludeMarkedLines;
  gxsys_stl::string beginExcludeRegex;
  gxsys_stl::string endExcludeRegex;
  bool partialClass;
  gxsys_stl::string exceptionBaseClass;
  gxsys_stl::string exceptionCloneMethod;
  gxsys_stl::string exceptionInclude;
  gxsys_stl::string wrappedObjectBase;

  ClassWrappingSettings(
    gxsys_stl::string nm = gxsys_stl::string(""),
    gxsys_stl::string pat = gxsys_stl::string(""),
    gxsys_stl::string sk = gxsys_stl::string(""),
    gxsys_stl::string fm = gxsys_stl::string(""),
    bool edfm = false,
    gxsys_stl::string cmr = gxsys_stl::string(""),
    gxsys_stl::string dm = gxsys_stl::string(""),
    bool sh = false,
    gxsys_stl::string exH = gxsys_stl::string(""),
    gxsys_stl::string exEL = gxsys_stl::string(""),
    gxsys_stl::string exCS = gxsys_stl::string(""),
    gxsys_stl::string exCSUT = gxsys_stl::string(""),
    gxsys_stl::string csCM = gxsys_stl::string(""),
    gxsys_stl::string rm = gxsys_stl::string(""),
    gxsys_stl::string um = gxsys_stl::string(""),
    gxsys_stl::string grcm = gxsys_stl::string(""),
    gxsys_stl::string rbc = gxsys_stl::string(""),
    gxsys_stl::string ri = gxsys_stl::string(""),
    gxsys_stl::string gmtem = gxsys_stl::string(""),
    gxsys_stl::string smtem = gxsys_stl::string(""),
    bool eml = false,
    gxsys_stl::string ber = gxsys_stl::string(""),
    gxsys_stl::string eer = gxsys_stl::string(""),
    bool partial = false,
    gxsys_stl::string ebc = gxsys_stl::string(""),
    gxsys_stl::string ecm = gxsys_stl::string(""),
    gxsys_stl::string ei = gxsys_stl::string(""),
    gxsys_stl::string wob = gxsys_stl::string("")
    ) :
    name(nm),
    pattern(pat),
    sortkey(sk),
    defaultFactoryMethod(fm),
    emitDefaultFactoryMethod(edfm),
    countedMethodsRegex(cmr),
    defaultDisposalMethod(dm),
    shadow(sh),
    externalHints(exH),
    extraExportLayerCode(exEL),
    extraCsharpCode(exCS),
    extraCsharpUnitTestCode(exCSUT),
    csharpConstructorModifier(csCM),
    registerMethod(rm),
    unRegisterMethod(um),
    getRefCountMethod(grcm),
    registerBaseClass(rbc),
    registerInclude(ri),
    getMummyTypeEntryMethod(gmtem),
    setMummyTypeEntryMethod(smtem),
    excludeMarkedLines(eml),
    beginExcludeRegex(ber),
    endExcludeRegex(eer),
    partialClass(partial),
    exceptionBaseClass(ebc),
    exceptionCloneMethod(ecm),
    exceptionInclude(ei),
    wrappedObjectBase(wob)
  {
  }
};


//----------------------------------------------------------------------------
class MummySettings
{
public:
  MummySettings();
  virtual ~MummySettings();

  virtual int Initialize(int argc, char *argv[]);

  virtual int ParseSettingsFile(const char *filename);
  virtual int ProcessSource(cable::SourceRepresentation* sr);

  static int DisplayHelp(const char* argument, const char* value, void* call_data);
  static int DisplayVersion(const char* argument, const char* value, void* call_data);

  virtual const char *GetSettingsFileName();
  virtual const char *GetCsharpFileName();
  virtual const char *GetExportLayerFileName();
  virtual const char *GetCsharpUnitTestFileName();
  virtual const char *GetGccxmlFileName();
  virtual const char *GetGroup();
  virtual const char *GetHeader();
  virtual const char *GetPackage();
  virtual const char *GetPackageVersion();
  virtual bool ShouldRun();
  virtual bool GetVerbose();
  virtual gxsys_stl::string GetMummyVersion();

  virtual void AddUnwrappableClass(const ClassWrappingSettings &cws);
  virtual void AddWrappableClass(const ClassWrappingSettings &cws);
  virtual void AddUnwrappablePattern(const ClassWrappingSettings &cws);
  virtual void AddWrappablePattern(const ClassWrappingSettings &cws);
  virtual bool FindClassWrappingSettings(const char *name, ClassWrappingSettings* cws);

  virtual void AddReference(const char *name);
  virtual void GetReferences(gxsys_stl::vector<gxsys_stl::string>& references);

  virtual bool ClassIsWrappable(const cable::Class *c);

  virtual gxsys_stl::string GetCsharpFileName(const cable::Class* c);
  virtual gxsys_stl::string GetExportLayerFileName(const cable::Class* c);
  virtual gxsys_stl::string GetCsharpUnitTestFileName(const cable::Class* c);
  virtual gxsys_stl::string GetCsharpConstructorModifier(const cable::Class* c);
  virtual gxsys_stl::string GetFactoryMethod(const cable::Class* c);
  virtual bool GetEmitDefaultFactoryMethod(const cable::Class* c);
  virtual gxsys_stl::string GetCountedMethodsRegex(const cable::Class* c);
  virtual gxsys_stl::string GetDisposalMethod(const cable::Class* c);
  virtual bool GetUseShadow(const cable::Class* c);
  virtual gxsys_stl::string GetExternalHints(const cable::Class* c);
  virtual gxsys_stl::string GetExtraCsharpCode(const cable::Class* c);
  virtual gxsys_stl::string GetExtraExportLayerCode(const cable::Class* c);
  virtual gxsys_stl::string GetExtraCsharpUnitTestCode(const cable::Class* c);
  virtual gxsys_stl::string GetRegisterMethod(const cable::Class* c);
  virtual gxsys_stl::string GetUnRegisterMethod(const cable::Class* c);
  virtual gxsys_stl::string GetRegisterBaseClass(const cable::Class* c);
  virtual gxsys_stl::string GetRegisterInclude(const cable::Class* c);
  virtual bool GetPartialClass(const cable::Class* c);

private:
  void AddArgumentHandlers(gxsys::CommandLineArguments& arguments);
  void Reset();

  MummySettingsInternals *Internals;
};