aboutsummaryrefslogtreecommitdiff
path: root/third_party/CppHeaderParser/CppHeaderParser/examples
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2011-07-06 20:50:04 -0700
committerAlon Zakai <alonzakai@gmail.com>2011-07-06 20:50:04 -0700
commit8e4dc2caa67d22b47f0a209ed1828c2a291aea85 (patch)
tree93c4237214da30e71b058c429f62490f024d876f /third_party/CppHeaderParser/CppHeaderParser/examples
parentc2d3b71f9959f90f38b360e9861c931a53b085f5 (diff)
improved bindings generator
Diffstat (limited to 'third_party/CppHeaderParser/CppHeaderParser/examples')
-rw-r--r--third_party/CppHeaderParser/CppHeaderParser/examples/SampleClass.h85
-rwxr-xr-xthird_party/CppHeaderParser/CppHeaderParser/examples/readSampleClass.py25
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']
+