open_toontown_panda3d/dtool/src/interrogate
rdb 115a716a7d Implement support for custom TypedWritable subclasses in Python
Fixes #1495
2023-07-26 19:55:40 +02:00
..
CMakeLists.txt CMake: Use find_program to detect host tools when cross-compiling 2019-11-13 15:30:26 -07:00
README.md Add README.md files for various directories 2017-10-31 19:20:24 +01:00
functionRemap.cxx Merge branch 'release/1.10.x' 2023-05-08 20:08:48 +02:00
functionRemap.h Merge branch 'release/1.10.x' 2023-05-08 20:08:48 +02:00
functionWriter.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
functionWriter.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
functionWriterPtrFromPython.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
functionWriterPtrFromPython.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
functionWriterPtrToPython.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
functionWriterPtrToPython.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
functionWriters.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
functionWriters.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
interfaceMaker.cxx interrogate: Squelch weird "Manifests" output from interrogate_module 2022-03-09 16:23:37 +01:00
interfaceMaker.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
interfaceMakerC.cxx interrogate: fix comment in C bindings for default arguments 2019-09-10 09:37:25 +02:00
interfaceMakerC.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
interfaceMakerPython.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
interfaceMakerPython.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
interfaceMakerPythonNative.cxx Implement support for custom TypedWritable subclasses in Python 2023-07-26 19:55:40 +02:00
interfaceMakerPythonNative.h Implement support for custom TypedWritable subclasses in Python 2023-07-26 19:55:40 +02:00
interfaceMakerPythonObj.cxx general: Fix assorted compiler warnings 2022-03-01 16:09:07 +01:00
interfaceMakerPythonObj.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
interfaceMakerPythonSimple.cxx general: Fix assorted compiler warnings 2022-03-01 16:09:07 +01:00
interfaceMakerPythonSimple.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
interrogate.cxx Merge branch 'release/1.10.x' into incoming 2022-11-29 20:58:51 +01:00
interrogate.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
interrogateBuilder.cxx interrogate: rename `operator [] =` to `operator []=` 2022-10-24 13:24:30 +02:00
interrogateBuilder.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02: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: use fully qualified module name in PyModule_Create 2019-12-11 16:49:42 +01:00
parameterRemap.I general: Replace NULL (and 0 as pointer) with C++11 nullptr 2018-06-03 16:35:13 -06:00
parameterRemap.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
parameterRemap.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
parameterRemapBasicStringPtrToString.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
parameterRemapBasicStringPtrToString.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
parameterRemapBasicStringRefToString.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
parameterRemapBasicStringRefToString.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
parameterRemapBasicStringToString.cxx interrogate: fix missing std:: prefix for string_holder 2019-09-10 09:37:25 +02:00
parameterRemapBasicStringToString.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02: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 interrogate: do not use MOVE in generated code, but use std::move 2018-09-09 13:48:50 +02:00
parameterRemapConcreteToPointer.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
parameterRemapConstToNonConst.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
parameterRemapConstToNonConst.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
parameterRemapEnumToInt.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
parameterRemapEnumToInt.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
parameterRemapHandleToInt.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
parameterRemapHandleToInt.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
parameterRemapPTToPointer.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
parameterRemapPTToPointer.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
parameterRemapReferenceToConcrete.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
parameterRemapReferenceToConcrete.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
parameterRemapReferenceToPointer.cxx interrogate: do not use MOVE in generated code, but use std::move 2018-09-09 13:48:50 +02:00
parameterRemapReferenceToPointer.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
parameterRemapThis.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
parameterRemapThis.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
parameterRemapToString.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
parameterRemapToString.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02: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 cppparser: Implement is_trivially_copyable type trait 2023-02-20 21:04:36 +01:00
typeManager.cxx Merge branch 'release/1.10.x' 2022-05-10 16:12:36 +02:00
typeManager.h interrogate: Do not write wrappers taking rvalue reference to interrogatedb 2022-05-10 15:58:34 +02: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.