4
Summary: Parse C++ header files and generate a data structure representing the class
5
Home-page: http://sourceforge.net/projects/cppheaderparser/
6
Author: Jashua Cloutier
7
Author-email: jashuac@bellsouth.net
9
Description: Python package "CppHeaderParser"
10
--------------------------------
11
**Purpose:** Parse C++ header files and generate a data structure representing the class
13
**Author:** Jashua Cloutier (jashuac@bellsouth.net)
17
**External modules required:** PLY
34
/// Method 2 description
36
/// @param v1 Variable 1
41
* Method 3 description
43
* \param v1 Variable 1
44
* \param v2 Variable 2
46
void meth3(const string & v1, vector<string> & v2);
48
/**********************************
49
* Method 4 description
51
* @return Return value
52
*********************************/
55
void * meth5(){return NULL};
91
sys.path = ["../"] + sys.path
92
import CppHeaderParser
94
cppHeader = CppHeaderParser.CppHeader("SampleClass.h")
95
except CppHeaderParser.CppParseError, e:
99
print "CppHeaderParser view of %s"%cppHeader
101
sampleClass = cppHeader.classes["SampleClass"]
102
print "Number of public methods %d"%(len(sampleClass["methods"]["public"]))
103
print "Number of private properties %d"%(len(sampleClass["properties"]["private"]))
104
meth3 = [m for m in sampleClass["methods"]["public"] if m["name"] == "meth3"][0] #get meth3
105
meth3ParamTypes = [t["type"] for t in meth3["parameters"]] #get meth3s parameters
106
print "Parameter Types for public method meth3 %s"%(meth3ParamTypes)
108
print "\nReturn type for meth1:"
109
print cppHeader.classes["SampleClass"]["methods"]["public"][1]["rtnType"]
111
print "\nDoxygen for meth2:"
112
print cppHeader.classes["SampleClass"]["methods"]["public"][2]["doxygen"]
114
print "\nParameters for meth3:"
115
print cppHeader.classes["SampleClass"]["methods"]["public"][3]["parameters"]
117
print "\nDoxygen for meth4:"
118
print cppHeader.classes["SampleClass"]["methods"]["public"][4]["doxygen"]
120
print "\nReturn type for meth5:"
121
print cppHeader.classes["SampleClass"]["methods"]["private"][0]["rtnType"]
123
print "\nDoxygen type for prop1:"
124
print cppHeader.classes["SampleClass"]["properties"]["private"][0]["doxygen"]
126
print "\nType for prop5:"
127
print cppHeader.classes["SampleClass"]["properties"]["private"][1]["type"]
129
print "\nNamespace for AlphaClass is:"
130
print cppHeader.classes["AlphaClass"]["namespace"]
132
print "\nReturn type for alphaMethod is:"
133
print cppHeader.classes["AlphaClass"]["methods"]["public"][0]["rtnType"]
135
print "\nNamespace for OmegaClass is:"
136
print cppHeader.classes["OmegaClass"]["namespace"]
138
print "\nType for omegaString is:"
139
print cppHeader.classes["AlphaClass"]["properties"]["public"][0]["type"]
143
CppHeaderParser view of class SampleClass
148
{'name': 'SampleClass', 'parameters': [], 'rtnType': 'void'}
149
{'doxygen': '/*!\n* Method 1\n*/', 'name': 'meth1', 'parameters': [], 'rtnType': 'string'}
150
{'doxygen': '///\n/// Method 2 description\n///\n/// @param v1 Variable 1\n///', 'name': 'meth2', 'parameters': [{'type': 'int', 'name': 'v1', 'desc': 'Variable 1'}], 'rtnType': 'int'}
151
{'doxygen': '/**\n* Method 3 description\n*\n* \\param v1 Variable 1\n* \\param v2 Variable 2\n*/', 'name': 'meth3', 'parameters': [{'type': 'const string &', 'name': 'v1', 'desc': 'Variable 1'}, {'type': 'vector<string> &', 'name': 'v2', 'desc': 'Variable 2'}], 'rtnType': 'void'}
152
{'doxygen': '/**********************************\n* Method 4 description\n*\n* @return Return value\n*********************************/', 'name': 'meth4', 'parameters': [], 'rtnType': 'unsigned int'}
156
{'doxygen': '/// prop1 description', 'type': 'string', 'name': 'prop1'}
157
{'doxygen': '//! prop5 description', 'type': 'int', 'name': 'prop5'}
159
{'name': 'meth5', 'parameters': [], 'rtnType': 'void *'}
161
class Alpha::AlphaClass
166
{'type': 'string', 'name': 'alphaString'}
168
{'name': 'AlphaClass', 'parameters': [], 'rtnType': 'void'}
169
{'name': 'alphaMethod', 'parameters': [], 'rtnType': 'void'}
173
class Alpha::Omega::OmegaClass
178
{'type': 'string', 'name': 'omegaString'}
180
{'name': 'OmegaClass', 'parameters': [], 'rtnType': 'void'}
185
Number of public methods 5
186
Number of private properties 2
187
Parameter Types for public method meth3 ['const string &', 'vector<string> &']
189
Return type for meth1:
194
/// Method 2 description
196
/// @param v1 Variable 1
199
Parameters for meth3:
200
[{'type': 'const string &', 'name': 'v1', 'desc': 'Variable 1'}, {'type': 'vector<string> &', 'name': 'v2', 'desc': 'Variable 2'}]
203
/**********************************
204
* Method 4 description
206
* @return Return value
207
*********************************/
209
Return type for meth5:
212
Doxygen type for prop1:
213
/// prop1 description
218
Namespace for AlphaClass is:
221
Return type for alphaMethod is:
224
Namespace for OmegaClass is:
227
Type for omegaString is:
235
Keywords: c++ header parser ply
236
Platform: Platform Independent
237
Classifier: Operating System :: OS Independent
238
Classifier: Programming Language :: Python
239
Classifier: Programming Language :: Python :: 2
240
Classifier: Programming Language :: Python :: 3
241
Classifier: Programming Language :: C++
242
Classifier: License :: OSI Approved :: BSD License
243
Classifier: Development Status :: 5 - Production/Stable
244
Classifier: Intended Audience :: Developers
245
Classifier: Topic :: Software Development
246
Classifier: Topic :: Software Development :: Code Generators
247
Classifier: Topic :: Software Development :: Compilers
248
Classifier: Topic :: Software Development :: Disassemblers