open_toontown_panda3d/dtool/src/interrogate
Sam Edwards 95785407a3 CMake: General whitespace fixes
- Remove trailing whitespace from ends of lines
- Convert tabs to (two) spaces
2018-04-20 02:30:04 -06:00
..
CMakeLists.txt CMake: General whitespace fixes 2018-04-20 02:30:04 -06:00
README.md Add README.md files for various directories 2017-10-31 19:20:24 +01:00
functionRemap.cxx interrogate: pass "args" tuple to function that takes PyObject *args 2017-12-12 16:20:59 +01:00
functionRemap.h Add set_shader_inputs for efficiently setting multiple shader inputs 2017-02-06 13:16:27 +01:00
functionWriter.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
functionWriter.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
functionWriterPtrFromPython.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
functionWriterPtrFromPython.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
functionWriterPtrToPython.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
functionWriterPtrToPython.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
functionWriters.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
functionWriters.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
interfaceMaker.cxx interrogate: more improvements to seq/map wrappers 2017-11-27 17:29:50 +01:00
interfaceMaker.h interrogate: more improvements to seq/map wrappers 2017-11-27 17:29:50 +01:00
interfaceMakerC.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
interfaceMakerC.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
interfaceMakerPython.cxx Replace __builtin_expect macros with LIKELY/UNLIKELY 2017-10-09 00:22:28 +02:00
interfaceMakerPython.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
interfaceMakerPythonNative.cxx interrogate: allow passing None for args that have NULL as default value 2018-04-05 20:49:13 +02:00
interfaceMakerPythonNative.h interrogate: support MAKE_MAP_PROPERTY 2017-10-09 00:02:46 +02:00
interfaceMakerPythonObj.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
interfaceMakerPythonObj.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
interfaceMakerPythonSimple.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
interfaceMakerPythonSimple.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
interrogate.cxx Fix various compilation issues on Mac. 2017-01-08 17:17:56 -05:00
interrogate.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
interrogateBuilder.cxx interrogate: don't mark base types as global 2018-02-27 18:47:51 +01:00
interrogateBuilder.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
interrogate_composite1.cxx *** empty log message *** 2005-05-23 21:04:31 +00:00
interrogate_composite2.cxx Wrap TypeHandle and ButtonHandle as ints in C wrappers 2015-09-10 15:29:31 +02:00
interrogate_module.cxx interrogate_module: warn about circular dependencies between classes 2018-02-27 20:23:36 +01:00
parameterRemap.I New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemap.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemap.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapBasicStringPtrToString.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapBasicStringPtrToString.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapBasicStringRefToString.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapBasicStringRefToString.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapBasicStringToString.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapBasicStringToString.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapCharStarToString.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapCharStarToString.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapConcreteToPointer.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapConcreteToPointer.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapConstToNonConst.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapConstToNonConst.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapEnumToInt.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapEnumToInt.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapHandleToInt.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapHandleToInt.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapPTToPointer.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapPTToPointer.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapReferenceToConcrete.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapReferenceToConcrete.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapReferenceToPointer.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapReferenceToPointer.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapThis.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapThis.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapToString.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapToString.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapUnchanged.cxx New file headers, new comment style 2016-02-17 17:47:48 +01:00
parameterRemapUnchanged.h New file headers, new comment style 2016-02-17 17:47:48 +01:00
parse_file.cxx Fix various compilation issues on Mac. 2017-01-08 17:17:56 -05:00
typeManager.cxx interrogate: simplify coercion code 2017-11-06 19:53:38 +01:00
typeManager.h interrogate: simplify coercion code 2017-11-06 19:53:38 +01:00

README.md

A key advantage of Panda3D is that it provides developers with the ability to use both C++ and Python simultaneously. Essentially, Panda3D gives programmers the best of both worlds, as they are able to take advantage of the high performance and low-level programming found in C++ in addition to the flexibility, interactive scripting, and rapid-prototyping capabilities of Python. This feature is made possible due to Pythons ability to call C libraries, and ultimately make use of Panda3Ds Interrogate System: an automated C++ Extension Module generation utility similar to SWIG. Although Python is the favored scripting language of Panda3D, the engine is highly extensible in this aspect, as any language that has a foreign function interface can make use of the Interrogate System.

The Interrogate System works like a compiler by scanning and parsing C++ code for the Panda3D-specific, “PUBLISHED” keyword. This keyword marks the particular methods of a class that are to be exposed within a C++ Extension Module for that class which is eventually generated. One benefit of using the “PUBLISHED” keyword is that it alleviates the need for an interface file that provides function prototypes for the class methods that will be exposed within the extension module, as is the case with SWIG. Interrogate turns a class into a loose collection of Python interface wrapper functions that make up the C++ Extension Module.

This package depends on the 'cppparser' package, which contains the code that parses the C++ headers, and the 'interrogatedb' package, which contains the intermediate representation of the interfaces that can be saved to a database file for FFI generation tools to consume.