diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-07-06 20:50:04 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-07-06 20:50:04 -0700 |
commit | 8e4dc2caa67d22b47f0a209ed1828c2a291aea85 (patch) | |
tree | 93c4237214da30e71b058c429f62490f024d876f /third_party/CppHeaderParser/CppHeaderParser/examples | |
parent | c2d3b71f9959f90f38b360e9861c931a53b085f5 (diff) |
improved bindings generator
Diffstat (limited to 'third_party/CppHeaderParser/CppHeaderParser/examples')
-rw-r--r-- | third_party/CppHeaderParser/CppHeaderParser/examples/SampleClass.h | 85 | ||||
-rwxr-xr-x | third_party/CppHeaderParser/CppHeaderParser/examples/readSampleClass.py | 25 |
2 files changed, 108 insertions, 2 deletions
diff --git a/third_party/CppHeaderParser/CppHeaderParser/examples/SampleClass.h b/third_party/CppHeaderParser/CppHeaderParser/examples/SampleClass.h index e6315a29..628e50f8 100644 --- a/third_party/CppHeaderParser/CppHeaderParser/examples/SampleClass.h +++ b/third_party/CppHeaderParser/CppHeaderParser/examples/SampleClass.h @@ -1,5 +1,8 @@ #include <vector> #include <string> + +typedef char* string; + using namespace std; class SampleClass { @@ -32,7 +35,7 @@ public: *********************************/ unsigned int meth4(); private: - void * meth5(){return NULL}; + void * meth5(){return NULL}; // invalid c++, fixing parser anyways. /// prop1 description string prop1; @@ -62,3 +65,83 @@ namespace Alpha }; }; } + +// tests by hart // +namespace Gamma { + typedef std::string mystring; +} +typedef std::string _StringBase; +typedef _StringBase String; + +namespace Theta { + class ThetaClass { + public: + ThetaClass(); + ~ThetaClass(); + protected: + struct mystruct { + bool xxx; + }; + void this_method_protected(); + } + + struct ThetaStruct { + bool test1; + }; + + class ThetaClass2 { + public: + ThetaClass2(); + static inline void static_inlined_method(); + inline friend void myfriendmethod(); + static std::vector<float> returns_std_vector(); + float operator + (); + template<typename AAA> std::vector<float> template_method( const AAA & aaa ); + + } + + inline int ThetaClass::method_defined_outside() { + return 1; + } + inline ThetaClass::operator ThetaClass() const + { + return ThetaClass(); + } + + +} + +struct FreeStruct { + bool freestructs_boolvar; + float freestructs_floatvar; +}; + +namespace A { + + class FixMe { + virtual ~__forced_unwind() throw(); + virtual void purevirt() = 0; + int realMethod() { + return 1 + } + }; // legal to end class with }; ? + + class SubClassFixMe : public FixMe { + public: + void purevirt(); + } + + namespace B { + + } + class StillAbstract : public FixMe { + public: + void somemethod(); + pointer operator->() const { return &(operator*()); } // example of operator used in method def + + } + +} +namespace C __attribute__ ((__visibility__ ("default"))) { +} + diff --git a/third_party/CppHeaderParser/CppHeaderParser/examples/readSampleClass.py b/third_party/CppHeaderParser/CppHeaderParser/examples/readSampleClass.py index e6b2e296..c7c0ec52 100755 --- a/third_party/CppHeaderParser/CppHeaderParser/examples/readSampleClass.py +++ b/third_party/CppHeaderParser/CppHeaderParser/examples/readSampleClass.py @@ -48,4 +48,27 @@ print "\nNamespace for OmegaClass is:" print cppHeader.classes["OmegaClass"]["namespace"] print "\nType for omegaString is:" -print cppHeader.classes["AlphaClass"]["properties"]["public"][0]["type"]
\ No newline at end of file +print cppHeader.classes["AlphaClass"]["properties"]["public"][0]["type"] + +# by hart +print 'global typedefs:' +print cppHeader.typedefs + +print 'order of classes:' +for cls in cppHeader.classes_order: + print '\t', cls['name'] + +print 'order of typedefs:' +for name in cppHeader.typedefs_order: + print '\t', name + +print cppHeader.classes['ThetaClass'] +print '_'*80 +print cppHeader.classes['ThetaClass2'] + +print cppHeader.structs + +print cppHeader.namespaces + +print cppHeader.classes['FixMe'] + |