Text archives Help
- From: "James Bigler" <bigler@cs.utah.edu>
- To: manta@sci.utah.edu
- Subject: [Manta] r2112 - trunk/Core/Util
- Date: Fri, 22 Feb 2008 17:25:08 -0700 (MST)
Author: bigler
Date: Fri Feb 22 17:25:08 2008
New Revision: 2112
Modified:
trunk/Core/Util/Callback.h
trunk/Core/Util/CallbackHelpers.h
trunk/Core/Util/genCallbacks.py
Log:
Core/Util/Callback.h
Core/Util/genCallbacks.py
Added two new function types required by DynBVH.
genCallbacks.py should be fully functional now.
Core/Util/CallbackHelpers.h
Generated version of the file.
There were actually a couple of bugs in the hand written code.... :)
Modified: trunk/Core/Util/Callback.h
==============================================================================
--- trunk/Core/Util/Callback.h (original)
+++ trunk/Core/Util/Callback.h Fri Feb 22 17:25:08 2008
@@ -171,6 +171,20 @@
return new Callback_1Data_2Arg<T, Data1, Arg1, Arg2>(ptr, pmf, arg1,
arg2);
}
+ // 1 call time args --- 4 creating time args
+ template<class T, typename Data1, typename Arg1, typename Arg2, typename
Arg3, typename Arg4> static
+ CallbackBase_1Data<Data1>*
+ create(T* ptr, void (T::*pmf)(Data1, Arg1, Arg2, Arg3, Arg4), Arg1 arg1,
Arg2 arg2, Arg3 arg3, Arg4 arg4) {
+ return new Callback_1Data_4Arg<T, Data1, Arg1, Arg2, Arg3, Arg4>(ptr,
pmf, arg1, arg2, arg3, arg4);
+ }
+
+ // 1 call time args --- 5 creating time args
+ template<class T, typename Data1, typename Arg1, typename Arg2, typename
Arg3, typename Arg4, typename Arg5> static
+ CallbackBase_1Data<Data1>*
+ create(T* ptr, void (T::*pmf)(Data1, Arg1, Arg2, Arg3, Arg4, Arg5), Arg1
arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5) {
+ return new Callback_1Data_5Arg<T, Data1, Arg1, Arg2, Arg3, Arg4,
Arg5>(ptr, pmf, arg1, arg2, arg3, arg4, arg5);
+ }
+
// 2 call time args --- 0 creating time args
template<class T, typename Data1, typename Data2> static
CallbackBase_2Data<Data1, Data2>*
Modified: trunk/Core/Util/CallbackHelpers.h
==============================================================================
--- trunk/Core/Util/CallbackHelpers.h (original)
+++ trunk/Core/Util/CallbackHelpers.h Fri Feb 22 17:25:08 2008
@@ -6,12 +6,12 @@
// You should not use these directly - use Callback::create instead
namespace Manta {
- ////////////////////////////////////////////////////////////
+ //////////////////////////////
// Base classes that can be used by both the static and non-static
// Callback classes.
//
- // 0 Data
+ // 0 call time args
class CallbackBase_0Data : public CallbackHandle {
public:
CallbackBase_0Data()
@@ -26,7 +26,7 @@
CallbackBase_0Data& operator=(const CallbackBase_0Data&);
};
- // 1 Data
+ // 1 call time args
template<typename Data1>
class CallbackBase_1Data : public CallbackHandle {
public:
@@ -42,7 +42,7 @@
CallbackBase_1Data& operator=(const CallbackBase_1Data&);
};
- // 2 Data
+ // 2 call time args
template<typename Data1, typename Data2>
class CallbackBase_2Data : public CallbackHandle {
public:
@@ -58,7 +58,7 @@
CallbackBase_2Data& operator=(const CallbackBase_2Data&);
};
- // 3 Data
+ // 3 call time args
template<typename Data1, typename Data2, typename Data3>
class CallbackBase_3Data : public CallbackHandle {
public:
@@ -74,7 +74,7 @@
CallbackBase_3Data& operator=(const CallbackBase_3Data&);
};
- // 4 Data
+ // 4 call time args
template<typename Data1, typename Data2, typename Data3, typename Data4>
class CallbackBase_4Data : public CallbackHandle {
public:
@@ -90,7 +90,7 @@
CallbackBase_4Data& operator=(const CallbackBase_4Data&);
};
- // 5 Data
+ // 5 call time args
template<typename Data1, typename Data2, typename Data3, typename Data4,
typename Data5>
class CallbackBase_5Data : public CallbackHandle {
public:
@@ -106,7 +106,7 @@
CallbackBase_5Data& operator=(const CallbackBase_5Data&);
};
- // 6 Data
+ // 6 call time args
template<typename Data1, typename Data2, typename Data3, typename Data4,
typename Data5, typename Data6>
class CallbackBase_6Data : public CallbackHandle {
public:
@@ -122,17 +122,12 @@
CallbackBase_6Data& operator=(const CallbackBase_6Data&);
};
-
- //////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////
- // These are the actuall implementations with the different number
- // of arguments.
-
- //////////////////////////////////////////////////////////
- // Global functin or static class member functions
+ //////////////////////////////
+ // Global functions or static class member functions
//
- // 0 Data
+ // 0 call time args --- 0 creating time args
+
class Callback_Static_0Data_0Arg : public CallbackBase_0Data {
public:
Callback_Static_0Data_0Arg(void (*pmf)())
@@ -150,6 +145,7 @@
void (*pmf)();
};
+ // 0 call time args --- 1 creating time args
template<typename Arg1>
class Callback_Static_0Data_1Arg : public CallbackBase_0Data {
public:
@@ -169,6 +165,7 @@
Arg1 arg1;
};
+ // 0 call time args --- 2 creating time args
template<typename Arg1, typename Arg2>
class Callback_Static_0Data_2Arg : public CallbackBase_0Data {
public:
@@ -189,6 +186,7 @@
Arg2 arg2;
};
+ // 0 call time args --- 5 creating time args
template<typename Arg1, typename Arg2, typename Arg3, typename Arg4,
typename Arg5>
class Callback_Static_0Data_5Arg : public CallbackBase_0Data {
public:
@@ -212,7 +210,7 @@
Arg5 arg5;
};
- // 1 Data
+ // 1 call time args --- 0 creating time args
template<typename Data1>
class Callback_Static_1Data_0Arg : public CallbackBase_1Data<Data1> {
public:
@@ -231,6 +229,7 @@
void (*pmf)(Data1);
};
+ // 1 call time args --- 1 creating time args
template<typename Data1, typename Arg1>
class Callback_Static_1Data_1Arg : public CallbackBase_1Data<Data1> {
public:
@@ -250,6 +249,7 @@
Arg1 arg1;
};
+ // 1 call time args --- 2 creating time args
template<typename Data1, typename Arg1, typename Arg2>
class Callback_Static_1Data_2Arg : public CallbackBase_1Data<Data1> {
public:
@@ -270,7 +270,7 @@
Arg2 arg2;
};
- // 2 Data
+ // 2 call time args --- 0 creating time args
template<typename Data1, typename Data2>
class Callback_Static_2Data_0Arg : public CallbackBase_2Data<Data1, Data2>
{
public:
@@ -289,6 +289,7 @@
void (*pmf)(Data1, Data2);
};
+ // 2 call time args --- 2 creating time args
template<typename Data1, typename Data2, typename Arg1, typename Arg2>
class Callback_Static_2Data_2Arg : public CallbackBase_2Data<Data1, Data2>
{
public:
@@ -309,7 +310,7 @@
Arg2 arg2;
};
- // 3 Data
+ // 3 call time args --- 1 creating time args
template<typename Data1, typename Data2, typename Data3, typename Arg1>
class Callback_Static_3Data_1Arg : public CallbackBase_3Data<Data1, Data2,
Data3> {
public:
@@ -329,6 +330,7 @@
Arg1 arg1;
};
+ // 3 call time args --- 2 creating time args
template<typename Data1, typename Data2, typename Data3, typename Arg1,
typename Arg2>
class Callback_Static_3Data_2Arg : public CallbackBase_3Data<Data1, Data2,
Data3> {
public:
@@ -349,7 +351,7 @@
Arg2 arg2;
};
- // 4 Data
+ // 4 call time args --- 2 creating time args
template<typename Data1, typename Data2, typename Data3, typename Data4,
typename Arg1, typename Arg2>
class Callback_Static_4Data_2Arg : public CallbackBase_4Data<Data1, Data2,
Data3, Data4> {
public:
@@ -370,10 +372,10 @@
Arg2 arg2;
};
- ///////////////////////////////////////////////////////////
+ //////////////////////////////
// Class member functions
- // 0 Data
+ // 0 call time args --- 0 creating time args
template<class T>
class Callback_0Data_0Arg : public CallbackBase_0Data {
public:
@@ -393,27 +395,7 @@
void (T::*pmf)();
};
-#ifndef SWIG // For now these const versions won't compile in swig
- template<class T>
- class Callback_0Data_0Arg_const : public CallbackBase_0Data {
- public:
- Callback_0Data_0Arg_const(T* ptr, void (T::*pmf)() const)
- : ptr(ptr), pmf(pmf)
- {
- }
- virtual ~Callback_0Data_0Arg_const()
- {
- }
- virtual void call()
- {
- (ptr->*pmf)();
- }
- private:
- T* ptr;
- void (T::*pmf)() const;
- };
-#endif
-
+ // 0 call time args --- 1 creating time args
template<class T, typename Arg1>
class Callback_0Data_1Arg : public CallbackBase_0Data {
public:
@@ -434,28 +416,7 @@
Arg1 arg1;
};
-#ifndef SWIG // For now these const versions won't compile in swig
- template<class T, typename Arg1>
- class Callback_0Data_1Arg_const : public CallbackBase_0Data {
- public:
- Callback_0Data_1Arg_const(T* ptr, void (T::*pmf)(Arg1) const, Arg1 arg1)
- : ptr(ptr), pmf(pmf), arg1(arg1)
- {
- }
- virtual ~Callback_0Data_1Arg_const()
- {
- }
- virtual void call()
- {
- (ptr->*pmf)(arg1);
- }
- private:
- T* ptr;
- void (T::*pmf)(Arg1) const;
- Arg1 arg1;
- };
-#endif
-
+ // 0 call time args --- 2 creating time args
template<class T, typename Arg1, typename Arg2>
class Callback_0Data_2Arg : public CallbackBase_0Data {
public:
@@ -477,29 +438,7 @@
Arg2 arg2;
};
-#ifndef SWIG // For now these const versions won't compile in swig
- template<class T, typename Arg1, typename Arg2>
- class Callback_0Data_2Arg_const : public CallbackBase_0Data {
- public:
- Callback_0Data_2Arg_const(T* ptr, void (T::*pmf)(Arg1, Arg2) const, Arg1
arg1, Arg2 arg2)
- : ptr(ptr), pmf(pmf), arg1(arg1), arg2(arg2)
- {
- }
- virtual ~Callback_0Data_2Arg_const()
- {
- }
- virtual void call()
- {
- (ptr->*pmf)(arg1, arg2);
- }
- private:
- T* ptr;
- void (T::*pmf)(Arg1, Arg2) const;
- Arg1 arg1;
- Arg2 arg2;
- };
-#endif
-
+ // 0 call time args --- 3 creating time args
template<class T, typename Arg1, typename Arg2, typename Arg3>
class Callback_0Data_3Arg : public CallbackBase_0Data {
public:
@@ -522,11 +461,11 @@
Arg3 arg3;
};
-
- template<class T, typename Arg1, typename Arg2, typename Arg3, typename
Arg4 >
+ // 0 call time args --- 4 creating time args
+ template<class T, typename Arg1, typename Arg2, typename Arg3, typename
Arg4>
class Callback_0Data_4Arg : public CallbackBase_0Data {
public:
- Callback_0Data_4Arg(T* ptr, void (T::*pmf)(Arg1, Arg2, Arg2, Arg4), Arg1
arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4)
+ Callback_0Data_4Arg(T* ptr, void (T::*pmf)(Arg1, Arg2, Arg3, Arg4), Arg1
arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4)
: ptr(ptr), pmf(pmf), arg1(arg1), arg2(arg2), arg3(arg3), arg4(arg4)
{
}
@@ -546,7 +485,7 @@
Arg4 arg4;
};
- // 1 Data
+ // 1 call time args --- 0 creating time args
template<class T, typename Data1>
class Callback_1Data_0Arg : public CallbackBase_1Data<Data1> {
public:
@@ -566,6 +505,7 @@
void (T::*pmf)(Data1);
};
+ // 1 call time args --- 1 creating time args
template<class T, typename Data1, typename Arg1>
class Callback_1Data_1Arg : public CallbackBase_1Data<Data1> {
public:
@@ -586,6 +526,7 @@
Arg1 arg1;
};
+ // 1 call time args --- 2 creating time args
template<class T, typename Data1, typename Arg1, typename Arg2>
class Callback_1Data_2Arg : public CallbackBase_1Data<Data1> {
public:
@@ -607,6 +548,7 @@
Arg2 arg2;
};
+ // 1 call time args --- 4 creating time args
template<class T, typename Data1, typename Arg1, typename Arg2, typename
Arg3, typename Arg4>
class Callback_1Data_4Arg : public CallbackBase_1Data<Data1> {
public:
@@ -630,6 +572,7 @@
Arg4 arg4;
};
+ // 1 call time args --- 5 creating time args
template<class T, typename Data1, typename Arg1, typename Arg2, typename
Arg3, typename Arg4, typename Arg5>
class Callback_1Data_5Arg : public CallbackBase_1Data<Data1> {
public:
@@ -654,7 +597,7 @@
Arg5 arg5;
};
- // 2 Data
+ // 2 call time args --- 0 creating time args
template<class T, typename Data1, typename Data2>
class Callback_2Data_0Arg : public CallbackBase_2Data<Data1, Data2> {
public:
@@ -674,6 +617,7 @@
void (T::*pmf)(Data1, Data2);
};
+ // 2 call time args --- 1 creating time args
template<class T, typename Data1, typename Data2, typename Arg1>
class Callback_2Data_1Arg : public CallbackBase_2Data<Data1, Data2> {
public:
@@ -694,6 +638,7 @@
Arg1 arg1;
};
+ // 2 call time args --- 2 creating time args
template<class T, typename Data1, typename Data2, typename Arg1, typename
Arg2>
class Callback_2Data_2Arg : public CallbackBase_2Data<Data1, Data2> {
public:
@@ -715,6 +660,7 @@
Arg2 arg2;
};
+ // 2 call time args --- 3 creating time args
template<class T, typename Data1, typename Data2, typename Arg1, typename
Arg2, typename Arg3>
class Callback_2Data_3Arg : public CallbackBase_2Data<Data1, Data2> {
public:
@@ -737,7 +683,7 @@
Arg3 arg3;
};
- // 3 Data
+ // 3 call time args --- 0 creating time args
template<class T, typename Data1, typename Data2, typename Data3>
class Callback_3Data_0Arg : public CallbackBase_3Data<Data1, Data2, Data3>
{
public:
@@ -757,6 +703,7 @@
void (T::*pmf)(Data1, Data2, Data3);
};
+ // 3 call time args --- 1 creating time args
template<class T, typename Data1, typename Data2, typename Data3, typename
Arg1>
class Callback_3Data_1Arg : public CallbackBase_3Data<Data1, Data2, Data3>
{
public:
@@ -777,7 +724,7 @@
Arg1 arg1;
};
- // 4 Data
+ // 4 call time args --- 0 creating time args
template<class T, typename Data1, typename Data2, typename Data3, typename
Data4>
class Callback_4Data_0Arg : public CallbackBase_4Data<Data1, Data2, Data3,
Data4> {
public:
@@ -797,6 +744,7 @@
void (T::*pmf)(Data1, Data2, Data3, Data4);
};
+ // 4 call time args --- 1 creating time args
template<class T, typename Data1, typename Data2, typename Data3, typename
Data4, typename Arg1>
class Callback_4Data_1Arg : public CallbackBase_4Data<Data1, Data2, Data3,
Data4> {
public:
@@ -807,7 +755,7 @@
virtual ~Callback_4Data_1Arg()
{
}
- virtual void call(Data1 data1, Data2 data2, Data3 data3, Data4 data4,
Arg1 arg1)
+ virtual void call(Data1 data1, Data2 data2, Data3 data3, Data4 data4)
{
(ptr->*pmf)(data1, data2, data3, data4, arg1);
}
@@ -817,17 +765,18 @@
Arg1 arg1;
};
+ // 4 call time args --- 2 creating time args
template<class T, typename Data1, typename Data2, typename Data3, typename
Data4, typename Arg1, typename Arg2>
class Callback_4Data_2Arg : public CallbackBase_4Data<Data1, Data2, Data3,
Data4> {
public:
- Callback_4Data_2Arg(T* ptr, void (T::*pmf)(Data1, Data2, Data3, Data4,
Arg1), Arg1 arg1, Arg2 arg2)
+ Callback_4Data_2Arg(T* ptr, void (T::*pmf)(Data1, Data2, Data3, Data4,
Arg1, Arg2), Arg1 arg1, Arg2 arg2)
: ptr(ptr), pmf(pmf), arg1(arg1), arg2(arg2)
{
}
virtual ~Callback_4Data_2Arg()
{
}
- virtual void call(Data1 data1, Data2 data2, Data3 data3, Data4 data4,
Arg1 arg1, Arg2 arg2)
+ virtual void call(Data1 data1, Data2 data2, Data3 data3, Data4 data4)
{
(ptr->*pmf)(data1, data2, data3, data4, arg1, arg2);
}
@@ -838,7 +787,7 @@
Arg2 arg2;
};
- // 5 Data
+ // 5 call time args --- 0 creating time args
template<class T, typename Data1, typename Data2, typename Data3, typename
Data4, typename Data5>
class Callback_5Data_0Arg : public CallbackBase_5Data<Data1, Data2, Data3,
Data4, Data5> {
public:
@@ -858,7 +807,7 @@
void (T::*pmf)(Data1, Data2, Data3, Data4, Data5);
};
- // 6 Data
+ // 6 call time args --- 0 creating time args
template<class T, typename Data1, typename Data2, typename Data3, typename
Data4, typename Data5, typename Data6>
class Callback_6Data_0Arg : public CallbackBase_6Data<Data1, Data2, Data3,
Data4, Data5, Data6> {
public:
@@ -878,6 +827,74 @@
void (T::*pmf)(Data1, Data2, Data3, Data4, Data5, Data6);
};
-}
+#ifndef SWIG // For now these const versions won't compile in swig
+ //////////////////////////////
+ // Class member functions
+
+ // 0 call time args --- 0 creating time args
+ template<class T>
+ class Callback_0Data_0Arg_const : public CallbackBase_0Data {
+ public:
+ Callback_0Data_0Arg_const(T* ptr, void (T::*pmf)() const)
+ : ptr(ptr), pmf(pmf)
+ {
+ }
+ virtual ~Callback_0Data_0Arg_const()
+ {
+ }
+ virtual void call()
+ {
+ (ptr->*pmf)();
+ }
+ private:
+ T* ptr;
+ void (T::*pmf)() const;
+ };
+
+ // 0 call time args --- 1 creating time args
+ template<class T, typename Arg1>
+ class Callback_0Data_1Arg_const : public CallbackBase_0Data {
+ public:
+ Callback_0Data_1Arg_const(T* ptr, void (T::*pmf)(Arg1) const, Arg1 arg1)
+ : ptr(ptr), pmf(pmf), arg1(arg1)
+ {
+ }
+ virtual ~Callback_0Data_1Arg_const()
+ {
+ }
+ virtual void call()
+ {
+ (ptr->*pmf)(arg1);
+ }
+ private:
+ T* ptr;
+ void (T::*pmf)(Arg1) const;
+ Arg1 arg1;
+ };
+
+ // 0 call time args --- 2 creating time args
+ template<class T, typename Arg1, typename Arg2>
+ class Callback_0Data_2Arg_const : public CallbackBase_0Data {
+ public:
+ Callback_0Data_2Arg_const(T* ptr, void (T::*pmf)(Arg1, Arg2) const, Arg1
arg1, Arg2 arg2)
+ : ptr(ptr), pmf(pmf), arg1(arg1), arg2(arg2)
+ {
+ }
+ virtual ~Callback_0Data_2Arg_const()
+ {
+ }
+ virtual void call()
+ {
+ (ptr->*pmf)(arg1, arg2);
+ }
+ private:
+ T* ptr;
+ void (T::*pmf)(Arg1, Arg2) const;
+ Arg1 arg1;
+ Arg2 arg2;
+ };
+
+#endif // #ifndef SWIG
-#endif
+} // end namespace Manta
+#endif // #ifndef Manta_Interface_CallbackHelpers_h
Modified: trunk/Core/Util/genCallbacks.py
==============================================================================
--- trunk/Core/Util/genCallbacks.py (original)
+++ trunk/Core/Util/genCallbacks.py Fri Feb 22 17:25:08 2008
@@ -122,7 +122,7 @@
self.file.write(" " * indent_ammount + string + "\n")
class CallbackH (SourceFile):
- def __init__(self, filename = "test-Callback.h"):
+ def __init__(self, filename = "Callback.h"):
SourceFile.__init__(self, filename)
def writeStart(self):
@@ -216,10 +216,17 @@
self.write("")
class CallbackHelpersH (SourceFile):
- def __init__(self, filename = "test-CallbackHelpers.h"):
+ def __init__(self, filename = "CallbackHelpers.h"):
SourceFile.__init__(self, filename)
self.writtenClasses = []
+ def classDone(self, name):
+ if (name in self.writtenClasses):
+ return True
+ else:
+ self.writtenClasses.append(name)
+ return False
+
def writeStart(self):
self.write("")
self.write("#ifndef Manta_Interface_CallbackHelpers_h")
@@ -231,6 +238,13 @@
self.write("namespace Manta {")
self.indent()
+ def writeEnd(self):
+ self.unindent()
+ self.write("} // end namespace Manta")
+ self.write("#endif // #ifndef Manta_Interface_CallbackHelpers_h")
+ # Close the file
+ self.file.close()
+
def writeBaseClasses(self, functions):
self.write("/" * 30)
self.write("// Base classes that can be used by both the static and
non-static")
@@ -240,12 +254,7 @@
for function in functions:
class_name = function.baseName(withTemplate=False)
- if (class_name in self.writtenClasses):
- # Already processed this one
- continue
- else:
- # Add it to our list
- self.writtenClasses.append(class_name)
+ if (self.classDone(class_name)): continue
self.write("// %d call time args" % function.num_call_time_args)
data_list = function.dataList()
if (len(data_list) > 0):
@@ -277,12 +286,7 @@
for function in functions:
class_name = function.staticClassName(withTemplate=False)
- if (class_name in self.writtenClasses):
- # Already processed this one
- continue
- else:
- # Add it to our list
- self.writtenClasses.append(class_name)
+ if (self.classDone(class_name)): continue
self.write("// %d call time args --- %d creating time args" %
(function.num_call_time_args, function.num_creation_time_args))
self.write("%s" % function.templateParameter() )
self.write("class %s : public %s {" % (class_name,
function.baseName(withTemplate=True)))
@@ -290,9 +294,9 @@
self.indent()
self.write("%s(void (*pmf)(%s)%s)" % (class_name,
format(function.typeList()), function.functionArgList()))
self.indent()
- args = function.argList(prefix="arg")
- args = map(lambda a: "%s(%s)" % (a,a), args)
- self.write(": pmf(pmf)%s" % format( args, begin_seperator=", " )
)
+ initializers = function.argList(prefix="arg")
+ initializers = map(lambda a: "%s(%s)" % (a,a), initializers)
+ self.write(": pmf(pmf)%s" % format( initializers,
begin_seperator=", " ) )
self.unindent()
self.write("{")
self.write("}")
@@ -315,7 +319,60 @@
self.unindent()
self.write("};")
self.write("")
-
+
+ def writeClassMemberFunctions(self, functions, constant=False):
+ if (constant):
+ constant_text = " const"
+ else:
+ constant_text = ""
+ if (constant):
+ self.write("#ifndef SWIG // For now these const versions won't
compile in swig", indent_ammount=0)
+ self.write("/" * 30)
+ self.write("// Class member functions")
+ self.write("");
+ for function in functions:
+ class_name = function.className(constant, withTemplate=False)
+ if (self.classDone(class_name)): continue
+ self.write("// %d call time args --- %d creating time args" %
(function.num_call_time_args, function.num_creation_time_args))
+ self.write("template<class T" + format(function.typeList(),
begin_seperator=", ", prefix="typename") + ">")
+ self.write("class %s : public %s {" % (class_name,
function.baseName(withTemplate=True)))
+ self.write("public:")
+ self.indent()
+ self.write("%s(T* ptr, void (T::*pmf)(%s)%s%s)" % (class_name,
format(function.typeList()), constant_text, function.functionArgList()))
+ self.indent()
+ initializers = function.argList(prefix="arg")
+ initializers = map(lambda a: "%s(%s)" % (a,a), initializers)
+ self.write(": ptr(ptr), pmf(pmf)%s" % format( initializers,
begin_seperator=', '))
+ self.unindent()
+ self.write("{")
+ self.write("}")
+ self.write("virtual ~%s()" % class_name)
+ self.write("{")
+ self.write("}")
+ self.write("virtual void call(%s)" % function.callArgList())
+ self.write("{")
+ self.indent()
+ self.write("(ptr->*pmf)(%s);" % format(
function.dataList(prefix="data") + function.argList(prefix="arg") ))
+ self.unindent()
+ self.write("}")
+ self.unindent()
+ self.write("private:")
+ self.indent()
+ self.write("T* ptr;")
+ self.write("void (T::*pmf)(%s)%s;" %
+ (format(function.typeList()), constant_text))
+ map(lambda A,a: self.write("%s %s;" % (A,a)),
+ function.argList(prefix="Arg"),
+ function.argList(prefix="arg"))
+ self.unindent()
+ self.write("};")
+ self.write("")
+
+ # end for loop
+ if (constant):
+ self.write("#endif // #ifndef SWIG", indent_ammount=0)
+ self.write("")
+
@@ -337,7 +394,7 @@
addFunctions(member_functions, 0, (0,1,2,3,4))
addFunctions(const_member_functions, 0, (0,1,2))
- addFunctions(member_functions, 1, (0,1,2))
+ addFunctions(member_functions, 1, (0,1,2,4,5))
addFunctions(member_functions, 2, (0,1,2,3))
addFunctions(member_functions, 3, (0,1))
addFunctions(member_functions, 4, (0,1,2))
@@ -356,6 +413,9 @@
callbackHelpersH.writeStart()
callbackHelpersH.writeBaseClasses(static_functions + member_functions +
const_member_functions)
callbackHelpersH.writeGlobalStaticFunctions(static_functions)
+ callbackHelpersH.writeClassMemberFunctions(member_functions)
+ callbackHelpersH.writeClassMemberFunctions(const_member_functions,
constant=True)
+ callbackHelpersH.writeEnd()
if __name__ == "__main__":
main()
- [Manta] r2112 - trunk/Core/Util, James Bigler, 02/22/2008
Archive powered by MHonArc 2.6.16.