open_toontown_panda3d/dtool/src/interrogate
rdb 105f938d68 interrogate: Fix non-deterministic order of external import types
Fixes #1651
2024-05-28 11:11:21 +02:00
..
README.md Add README.md files for various directories 2017-10-31 19:20:24 +01:00
functionRemap.cxx interrogate: Support explicit `cls` parameter for static methods 2023-05-05 10:55:06 +02:00
functionRemap.h interrogate: Support explicit `cls` parameter for static methods 2023-05-05 10:55:06 +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 general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02: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 interrogate: Fix non-deterministic order of external import types 2024-05-28 11:11:21 +02:00
interfaceMakerPythonNative.h interrogate: Add cleverness to avoid writing out dead code 2024-01-05 13:56:02 +01:00
interfaceMakerPythonObj.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
interfaceMakerPythonObj.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
interfaceMakerPythonSimple.cxx general: Remove `using std::*` from headers 2018-06-14 16:04:49 +02:00
interfaceMakerPythonSimple.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
interrogate.cxx interrogate: Change error message to mention interrogate 2022-11-29 20:14:33 +01:00
interrogate.h general: Fully qualify header references into the std namespace 2018-06-07 10:35:12 +02:00
interrogateBuilder.cxx interrogatedb: Add new functions to interrogate_interface.h: 2022-05-10 15:58:34 +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: Export Python entry points with EXPORT_CLASS 2019-01-03 12:39:22 +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 Remove pystub dependency from interrogate and friends 2018-11-06 21:49:17 +01:00
typeManager.cxx interrogate: Do not write wrappers taking rvalue reference to interrogatedb 2022-05-10 15:58:34 +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.