cpython.h File Reference

Classes

struct   ErrorStorage
struct   ModuleDefinition
struct   PythonDll
struct   CPyMemAllocatorEx
class   PythonErrorInterface
class   PythonTracebackErrorInterface
class   PythonSystemExitErrorInterface
struct   ProxyDefinition
class   CPythonLibraryInterface
struct   Tuple
struct   BaseArray
class   切片
class   PyModuleInterface
struct   CPythonGil

Namespaces

  maxon
  maxon::py
  maxon::py::specialtype
  maxon::CPythonLibs

Macros

#define  Python37Output (formatString, ...)
#define  CPYREFDIAGNOSTICOUTPUT (ref)
#define  PRIVATE_MAXON_CPYTHON_FUNCTION (funcname, args)
#define  PRIVATE_MAXON_CPYTHON_STACK ()
#define  PRIVATE_MAXON_CPYTHON_FUNCTION_REGISTER (funcname, SUPERTYPE)
#define  PRIVATE_MAXON_ifpyerr_scope ()
#define  PRIVATE_MAXON_ifpyerr_return ()
#define  NO_CONSTANTS
#define  PRIVATE_MAXON_COMPONENT_CPYTHON_MODULE ( NO_CONSTANTS )
#define  MAXON_COMPONENT_CPYTHON_MODULE ( NO_CONSTANTS )
#define  MAXON_PYTHON_RELEASE_GIL (pylib)
#define  MAXON_PYTHON_ACQUIRE_GIL (pylib)
#define  ifpyerr_scope
#define  ifpyerr_return
#define  MAXON_CPYTHON_FUNCTION (funcname, args)
#define  MAXON_CPYTHON_STACK ()
#define  MAXON_CPYTHON_FUNCTION_REGISTER (funcname)
#define  MAXON_CPYTHON_FUNCTION_SUBTYPE_REGISTER (funcname, SUPERTYPE)

Typedefs

using  FunctionRegistration = Delegate< Result< void >(py::NativePyCFunctionWithKeywords func)>
template<typename T = Generic>
using  DelegatePyObject_FromData = Delegate< CPyRef(const T *, const CPyTypeRef &expected)>
using  CPyCapsule_Destructor = void(NativePyObject *)
using  DelegatePyObject_AsData = Delegate< Result< Bool >(const DataType &expected, const CPyRef &src, Data *dst)>
using  NativePyCFunctionTable = Tuple< const Char *, py::NativePyCFunctionWithKeywords >

Enumerations

enum   PyStringEncodings {
   Utf8 ,
   Utf16 ,
   Utf32 ,
   PyDecode
}
enum   OWNERSHIP {
   NORMAL ,
   CALLER ,
   CALLEE ,
   CALLER_BUT_COPY
}
enum   PATHHANDLE {
   OVERWRITE ,
   APPEND_AT_END ,
   INSERT_AT_BEGINNING
}
enum   GILSTATE {
   NOT_ACTIVE ,
   ACTIVE_BUT_NOT_CURRENT_THREAD ,
   ACTIVE_AND_CURRENT_THREAD
}
enum   CPyMemAllocatorDomain {
   CPYMEM_DOMAIN_RAW ,
   CPYMEM_DOMAIN_MEM ,
   CPYMEM_DOMAIN_OBJ
}
enum   SPECIALPATH {
   MAXON_MODULES ,
   PREFS_PYTHON_GENERATED_DIRECTORY ,
   PREFS_PYTHON_GLOBAL_LIBS ,
   PREFS_PYTHON_LOCAL_LIBS
}
enum   PYGILSTATE {
   LOCKED ,
   UNLOCKED
}
enum   PYINPUT {
   SINGLE ,
   FILE ,
   EVAL
}
enum   PYSTARTOPERATION {
   NONE ,
   EXECUTE_CODE ,
   EXECUTE_MODULE ,
   EXECUTE_FILE ,
   VERSION
}

函数

  MAXON_DEPENDENCY_WEAK ("maxon/vm.h")
  MAXON_DEPENDENCY_WEAK ("maxon/cpython_raw.h")
  MAXON_DEPENDENCY_WEAK ("maxon/cpython_ref.h")
enum maxon::PyStringEncodings   MAXON_ENUM_LIST (PyStringEncodings)
enum maxon::OWNERSHIP   MAXON_ENUM_LIST (OWNERSHIP)
MAXON_ATTRIBUTE_FORCE_INLINE ErrorStorage  operator/ (const FunctionRegistration ®, py::NativePyCFunctionWithKeywords func)
enum maxon::py::PATHHANDLE   MAXON_ENUM_LIST (PATHHANDLE)
enum maxon::py::GILSTATE   MAXON_ENUM_LIST (GILSTATE)
enum maxon::py::CPyMemAllocatorDomain   MAXON_ENUM_LIST (CPyMemAllocatorDomain)
enum maxon::py::SPECIALPATH   MAXON_ENUM_LIST (SPECIALPATH)
enum maxon::py::PYGILSTATE   MAXON_ENUM_LIST (PYGILSTATE)
enum maxon::py::PYINPUT   MAXON_ENUM_LIST (PYINPUT)
enum maxon::py::PYSTARTOPERATION   MAXON_ENUM_LIST (PYSTARTOPERATION)
  MAXON_DATATYPE (NativePyObject, "net.maxon.python.datatype.nativepyobject")
  MAXON_DATATYPE (Tuple, "net.maxon.python.datatype.tuple")
  MAXON_DATATYPE (Slice, "net.maxon.python.datatype.slice")
  MAXON_DATATYPE (BaseArray, "net.maxon.python.datatype.basearray")
template<typename T >
MAXON_ATTRIBUTE_FORCE_INLINE Bool   PassedRefCheck (const CPyRef &o)
template<>
MAXON_ATTRIBUTE_FORCE_INLINE Bool   PassedRefCheck< MPyDataRef > (const CPyRef &o)
template<typename T >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< STD_IS_REPLACEMENT (pointer, T), T >::type  PrivateGetPtr (Data *data)
template<typename T >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< STD_IS_REPLACEMENT (reference, T), T >::type  PrivateGetPtr (Data *data)
template<>
MAXON_ATTRIBUTE_FORCE_INLINE Data &  PrivateGetPtr< Data & > (Data *data)
template<>
MAXON_ATTRIBUTE_FORCE_INLINE Data *  PrivateGetPtr< Data * > (Data *data)
  MAXON_REGISTRY (Class< PyModuleRef >, PyModules, "net.maxon.python.registry.pymodules")
  MAXON_REGISTRY (Class< LibraryRef >, CPythonLibs, "net.maxon.python.registry.cpythonlibs")
  MAXON_DECLARATION (Class< LibraryRef >, Lib37, "net.maxon.python.cpythonlibs.cpy37")
template<typename T >
std::enable_if< STD_IS_REPLACEMENT (same, T, py::CPyTypeRef), T >::type  CPyCast (const CPyRef &o)
template<typename T >
std::enable_if< STD_IS_REPLACEMENT (same, T, py::CPyFrameRef), T >::type  CPyCast (const CPyRef &o)
template<typename T >
std::enable_if< STD_IS_REPLACEMENT (same, T, py::CPyTracebackRef), T >::type  CPyCast (const CPyRef &o)
template<typename T >
std::enable_if< STD_IS_REPLACEMENT (same, T, py::CPyCodeRef), T >::type  CPyCast (const CPyRef &o)
template<typename T >
std::enable_if< STD_IS_REPLACEMENT (same, T, py::MPyClassRef), T >::type  CPyCast (const CPyRef &o)
template<typename T >
std::enable_if< STD_IS_REPLACEMENT (same, T, py::MPyMemberRef), T >::type  CPyCast (const CPyRef &o)
template<typename T >
std::enable_if< STD_IS_REPLACEMENT (same, T, py::MPyFunctionRef), T >::type  CPyCast (const CPyRef &o)
template<typename T >
std::enable_if< STD_IS_REPLACEMENT (same, T, py::MPyDataTypeRef), T >::type  CPyCast (const CPyRef &o)
template<typename T >
std::enable_if< STD_IS_REPLACEMENT (same, T, py::MPyDataRef), T >::type  CPyCast (const CPyRef &o)
template<typename T >
std::enable_if< STD_IS_REPLACEMENT (same, T, py::MPyCallerContextRef), T >::type  CPyCast (const CPyRef &o)
py::CPythonLibraryRef  PrivateExtractCPythonLibrary37 (py::NativePyObject *self)
void  _Python37Output ( maxon::TARGETAUDIENCE audience, const Char *str, Int line, const Char *file, maxon::WRITEMETA meta= maxon::WRITEMETA::DEFAULT )
void  _Python37Output ( maxon::TARGETAUDIENCE audience, const maxon::String &str, Int line, const Char *file)
void  _Python37Output ( maxon::TARGETAUDIENCE audience, maxon::StringProxy *proxy, Int line, const Char *file)
maxon::Error  PrivateRegisterCPythonFunc (const Char *name, py::NativePyCFunctionWithKeywords underlyingFunc37, BaseArray< NativePyCFunctionTable > &functions37)
void  PrivateCPyRefDiagnosticOutput ( MAXON_SOURCE_LOCATION_DECLARATION , const Char *refName, const py::CPyRef &ref)

变量

  Utf8
  Utf16
  Utf32
  PyDecode
const Id  ID_LOGGER_PYTHON
  NORMAL
  CALLER
  CALLEE
  CALLER_BUT_COPY
  OVERWRITE
  APPEND_AT_END
  INSERT_AT_BEGINNING
  NOT_ACTIVE
  ACTIVE_BUT_NOT_CURRENT_THREAD
  ACTIVE_AND_CURRENT_THREAD
struct maxon::py::ModuleDefinition   MAXON_ENUM_LIST
  CPYMEM_DOMAIN_RAW
  CPYMEM_DOMAIN_MEM
  CPYMEM_DOMAIN_OBJ
  MAXON_MODULES
  PREFS_PYTHON_GENERATED_DIRECTORY
  PREFS_PYTHON_GLOBAL_LIBS
  PREFS_PYTHON_LOCAL_LIBS
  LOCKED
  UNLOCKED
  SINGLE
  FILE
  EVAL
  NONE
  EXECUTE_CODE
  EXECUTE_MODULE
  EXECUTE_FILE
  VERSION

Macro Definition Documentation

◆  Python37Output

#define Python37Output (   formatString,
  ...  
)

Python37Output outputs text into the console under the Python 3.7 category. The full output syntax can be used for the format string. Note that if you do not specify any additional parameters after the formatting string no formatting takes place - the raw string will stay unchanged. THREADSAFE.

◆  CPYREFDIAGNOSTICOUTPUT

#define CPYREFDIAGNOSTICOUTPUT (   ref )

◆  PRIVATE_MAXON_CPYTHON_FUNCTION

#define PRIVATE_MAXON_CPYTHON_FUNCTION (   funcname,
  args 
)

◆  PRIVATE_MAXON_CPYTHON_STACK

#define PRIVATE_MAXON_CPYTHON_STACK ( )

◆  PRIVATE_MAXON_CPYTHON_FUNCTION_REGISTER

#define PRIVATE_MAXON_CPYTHON_FUNCTION_REGISTER (   funcname,
  SUPERTYPE 
)

◆  PRIVATE_MAXON_ifpyerr_scope

#define PRIVATE_MAXON_ifpyerr_scope ( )

◆  PRIVATE_MAXON_ifpyerr_return

#define PRIVATE_MAXON_ifpyerr_return ( )

◆  NO_CONSTANTS

#define NO_CONSTANTS

◆  PRIVATE_MAXON_COMPONENT_CPYTHON_MODULE

#define PRIVATE_MAXON_COMPONENT_CPYTHON_MODULE (   NO_CONSTANTS )

◆  MAXON_COMPONENT_CPYTHON_MODULE

#define MAXON_COMPONENT_CPYTHON_MODULE (   NO_CONSTANTS )

Required macro in the Python module scope to define if the module defines constants or not. Example:

class PyExampleModule : public 组件 <PyExampleModule, PyModuleInterface> { MAXON_COMPONENT (); MAXON_COMPONENT_CPYTHON_MODULE ( NO_CONSTANTS ); public : MAXON_CPYTHON_FUNCTION (Foo, args) { MAXON_CPYTHON_STACK (); return pylib.CPy_None(); } MAXON_CPYTHON_FUNCTION_REGISTER (Foo); };

◆  MAXON_PYTHON_RELEASE_GIL

#define MAXON_PYTHON_RELEASE_GIL (   pylib )

◆  MAXON_PYTHON_ACQUIRE_GIL

#define MAXON_PYTHON_ACQUIRE_GIL (   pylib )

◆  ifpyerr_scope

#define ifpyerr_scope

Similar to iferr_scope, but used in combination with ifpyerr_return to automatically convert an exception and to set the exception indicator of Python.

◆  ifpyerr_return

#define ifpyerr_return

Similar to iferr_return, but used in combination with ifpyerr_scope to automatically convert an exception and to set the exception indicator of Python.

Result<void> DoSomething(); CPyRef Convert( const CPythonLibraryRef& pylib) { ifpyerr_scope ; DoSomething() ifpyerr_return ; return pylib.CPy_None(); }

◆  MAXON_CPYTHON_FUNCTION

#define MAXON_CPYTHON_FUNCTION (   funcname,
  args 
)

Defines a lambda in a Python C-module.

class PyExampleModule : public 组件 <PyExampleModule, PyModuleInterface> { MAXON_COMPONENT (); MAXON_COMPONENT_CPYTHON_MODULE ( NO_CONSTANTS ); public : MAXON_CPYTHON_FUNCTION (Foo, args) { MAXON_CPYTHON_STACK (); return pylib.CPy_None(); } MAXON_CPYTHON_FUNCTION_REGISTER (Foo); };

◆  MAXON_CPYTHON_STACK

#define MAXON_CPYTHON_STACK ( )

Makes the 'pylib' variable available and defines a stack which is used by several parsing functions to convert objects to the requested.

◆  MAXON_CPYTHON_FUNCTION_REGISTER

#define MAXON_CPYTHON_FUNCTION_REGISTER (   funcname )

Macro to register a lambda in a Python C-module. Example:

class PyExampleModule : public 组件 <PyExampleModule, PyModuleInterface> { MAXON_COMPONENT (); MAXON_COMPONENT_CPYTHON_MODULE ( NO_CONSTANTS ); public : MAXON_CPYTHON_FUNCTION (Foo, args) { MAXON_CPYTHON_STACK (); return pylib.CPy_None(); } MAXON_CPYTHON_FUNCTION_REGISTER (Foo); };

◆  MAXON_CPYTHON_FUNCTION_SUBTYPE_REGISTER

#define MAXON_CPYTHON_FUNCTION_SUBTYPE_REGISTER (   funcname,
  SUPERTYPE 
)

Function Documentation

◆  MAXON_DEPENDENCY_WEAK() [1/3]

MAXON_DEPENDENCY_WEAK ( "maxon/vm.h"  )

◆  MAXON_DEPENDENCY_WEAK() [2/3]

MAXON_DEPENDENCY_WEAK ( "maxon/cpython_raw.h"  )

◆  MAXON_DEPENDENCY_WEAK() [3/3]

MAXON_DEPENDENCY_WEAK ( "maxon/cpython_ref.h"  )

Variable Documentation

◆  Utf8

Utf8

◆  Utf16

Utf16

◆  Utf32

Utf32

◆  PyDecode

PyDecode

◆  NORMAL

NORMAL

◆  CALLER

CALLER

Default ownership.

◆  CALLEE

CALLEE

Caller owns the object.

◆  CALLER_BUT_COPY

CALLER_BUT_COPY

Callee owns the object.

◆  OVERWRITE

OVERWRITE

◆  APPEND_AT_END

APPEND_AT_END

Overwrite sys.path.

◆  INSERT_AT_BEGINNING

INSERT_AT_BEGINNING

Append array to sys.path.

Insert array at sys.path[0]

◆  NOT_ACTIVE

NOT_ACTIVE

◆  ACTIVE_BUT_NOT_CURRENT_THREAD

ACTIVE_BUT_NOT_CURRENT_THREAD

GIL is not hold by any thread.

◆  ACTIVE_AND_CURRENT_THREAD

ACTIVE_AND_CURRENT_THREAD

GIL is hold by another thread.

◆  CPYMEM_DOMAIN_RAW

CPYMEM_DOMAIN_RAW

◆  CPYMEM_DOMAIN_MEM

CPYMEM_DOMAIN_MEM

◆  CPYMEM_DOMAIN_OBJ

CPYMEM_DOMAIN_OBJ

◆  MAXON_MODULES

MAXON_MODULES

◆  PREFS_PYTHON_GENERATED_DIRECTORY

PREFS_PYTHON_GENERATED_DIRECTORY

Path to the 'maxon' module.

◆  PREFS_PYTHON_GLOBAL_LIBS

PREFS_PYTHON_GLOBAL_LIBS

Path to the 'generated' directory.

◆  PREFS_PYTHON_LOCAL_LIBS

PREFS_PYTHON_LOCAL_LIBS

Path to the globals 'libs directory which all Cinema 4D instances share.

Path to the local 'libs directory which only the current Cinema 4D instance uses.

◆  LOCKED

LOCKED

◆  UNLOCKED

UNLOCKED

GIL is locked.

GIL is unlocked.

◆  SINGLE

SINGLE

◆  FILE

FILE

The start symbol from the Python grammar for a single statement.

◆  EVAL

EVAL

The start symbol from the Python grammar for sequences of statements as read from a file or other source.

◆  NONE

NONE

◆  EXECUTE_CODE

EXECUTE_CODE

◆  EXECUTE_MODULE

EXECUTE_MODULE

maxon::String

◆  EXECUTE_FILE

EXECUTE_FILE

maxon::String

◆  VERSION

VERSION

maxon:Url

Version mode

MAXON_CPYTHON_FUNCTION_REGISTER
#define MAXON_CPYTHON_FUNCTION_REGISTER(funcname)
定义: cpython.h:3074
MAXON_COMPONENT_CPYTHON_MODULE
#define MAXON_COMPONENT_CPYTHON_MODULE(NO_CONSTANTS)
定义: cpython.h:3003
MAXON_COMPONENT
#define MAXON_COMPONENT(KIND,...)
定义: objectbase.h:2036
NO_CONSTANTS
#define NO_CONSTANTS
定义: cpython.h:2967
ifpyerr_scope
#define ifpyerr_scope
Similar to iferr_scope, but used in combination with ifpyerr_return to automatically convert an excep...
定义: cpython.h:3009
MAXON_CPYTHON_FUNCTION
#define MAXON_CPYTHON_FUNCTION(funcname, args)
定义: cpython.h:3047
MAXON_CPYTHON_STACK
#define MAXON_CPYTHON_STACK()
Makes the 'pylib' variable available and defines a stack which is used by several parsing functions t...
定义: cpython.h:3052
ifpyerr_return
#define ifpyerr_return
定义: cpython.h:3025
maxon::Component
ComponentWithBase< C, ComponentRoot, INTERFACES... > Component
定义: objectbase.h:2604