cpython.h File Reference

Classes

struct  ErrorStorage
 
struct  ModuleDefinition
 
struct  PythonDll
 
class  PythonErrorInterface
 
class  PythonTracebackErrorInterface
 
class  PythonSystemExitErrorInterface
 
struct  ProxyDefinition
 
class  CPythonLibraryInterface
 
struct  Tuple
 
struct  BaseArray
 
class  Slice
 
class  PyModuleInterface
 
struct  CPythonGil
 

Namespaces

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

Macros

#define Python27Output(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  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  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
}
 

Functions

 MAXON_DEPENDENCY_WEAK ("maxon/vm.h")
 
 MAXON_DEPENDENCY_WEAK ("maxon/cpython_raw.h")
 
 MAXON_DEPENDENCY_WEAK ("maxon/cpython_ref.h")
 
enum maxon::OWNERSHIP MAXON_ENUM_LIST (OWNERSHIP)
 
MAXON_ATTRIBUTE_FORCE_INLINE ErrorStorage operator/ (const FunctionRegistration &reg, py::NativePyCFunctionWithKeywords func)
 
enum maxon::py::PATHHANDLE MAXON_ENUM_LIST (PATHHANDLE)
 
enum maxon::py::GILSTATE MAXON_ENUM_LIST (GILSTATE)
 
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 >, Lib27, "net.maxon.python.cpythonlibs.cpy27")
 
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 PrivateExtractCPythonLibrary27 (py::NativePyObject *self)
 
void _Python27Output (maxon::TARGETAUDIENCE audience, const Char *str, Int line, const Char *file, maxon::WRITEMETA meta=maxon::WRITEMETA::DEFAULT)
 
void _Python27Output (maxon::TARGETAUDIENCE audience, const maxon::String &str, Int line, const Char *file)
 
void _Python27Output (maxon::TARGETAUDIENCE audience, maxon::StringProxy *proxy, Int line, const Char *file)
 
maxon::Error PrivateRegisterCPythonFunc (const Char *name, py::NativePyCFunctionWithKeywords underlyingFunc27, BaseArray< NativePyCFunctionTable > &functions27)
 
void PrivateCPyRefDiagnosticOutput (MAXON_SOURCE_LOCATION_DECLARATION, const Char *refName, const py::CPyRef &ref)
 

Variables

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
 
 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

◆ Python27Output

#define Python27Output (   formatString,
  ... 
)

Python27Output outputs text into the console under the Python 2.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 Component<PyExampleModule, PyModuleInterface>
{
public:
{
return pylib.CPy_None();
}
};

◆ 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)
{
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 Component<PyExampleModule, PyModuleInterface>
{
public:
{
return pylib.CPy_None();
}
};

◆ 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 Component<PyExampleModule, PyModuleInterface>
{
public:
{
return pylib.CPy_None();
}
};

◆ 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

◆ 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.

◆ 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

◆ EXECUTE_FILE

EXECUTE_FILE

◆ VERSION

VERSION

maxon:Url

Version mode

MAXON_CPYTHON_FUNCTION_REGISTER
#define MAXON_CPYTHON_FUNCTION_REGISTER(funcname)
Definition: cpython.h:3108
MAXON_COMPONENT_CPYTHON_MODULE
#define MAXON_COMPONENT_CPYTHON_MODULE(NO_CONSTANTS)
Definition: cpython.h:3037
MAXON_COMPONENT
#define MAXON_COMPONENT(KIND,...)
Definition: objectbase.h:2014
NO_CONSTANTS
#define NO_CONSTANTS
Definition: cpython.h:3001
ifpyerr_scope
#define ifpyerr_scope
Similar to iferr_scope, but used in combination with ifpyerr_return to automatically convert an excep...
Definition: cpython.h:3043
MAXON_CPYTHON_FUNCTION
#define MAXON_CPYTHON_FUNCTION(funcname, args)
Definition: cpython.h:3081
MAXON_CPYTHON_STACK
#define MAXON_CPYTHON_STACK()
Makes the 'pylib' variable available and defines a stack which is used by several parsing functions t...
Definition: cpython.h:3086
ifpyerr_return
#define ifpyerr_return
Definition: cpython.h:3059
maxon::Component
ComponentWithBase< C, ComponentRoot, INTERFACES... > Component
Definition: objectbase.h:2556