pyplusplus.code_creators package

Overview

Code creators.

This sub-package contains the code creator classes which are nodes in the code creator tree. This tree represents the entire source code of the final extension module (even when the source code will later be distributed among several source files) and each individual code creator represents a single block of source code.

The base class for all code creators is code_creators.code_creator_t.

Modules

algorithm

This module is a collection of unrelated algorithms, that works on code creators tree.

pyplusplus.code_creators.algorithm.complete_py_name(decl)
class pyplusplus.code_creators.algorithm.creator_finder

This class is used as container for different find algorithms.

static find_by_class_instance(what, where, recursive=True)
static find_by_declaration(declaration_matcher, where, recursive=True)
Finds code creator by declaration. declaration_matcher should be callable, that takes single argument declaration, and returns True or False where - code creator or list of code creators This function returns a list of all relevant code creators
static find_by_declaration_single(declaration_matcher, where, recursive=True)
pyplusplus.code_creators.algorithm.make_flatten(creator_or_creators)
pyplusplus.code_creators.algorithm.make_flatten_generator(creator_or_creators)
pyplusplus.code_creators.algorithm.make_flatten_list(creator_or_creators)
pyplusplus.code_creators.algorithm.make_id_creator(code_creator)

array_1_registrator

class pyplusplus.code_creators.array_1_registrator.array_1_registrator_t(array_type)

Bases: pyplusplus.code_creators.registration_based.registration_based_t

This class creates code that register static sized array

array_type
call_policies

bookmark

class pyplusplus.code_creators.bookmark.bookmark_t(comment='')
Bases: pyplusplus.code_creators.compound.compound_t

calldef

class pyplusplus.code_creators.calldef.calldef_overloads_class_t(functions)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

alias
functions
max_function
max_function_identifier
min_max_num_of_args()
name
parent_decl
class pyplusplus.code_creators.calldef.calldef_overloads_t(overloads_class)

Bases: pyplusplus.code_creators.registration_based.registration_based_t

create_def_code()
create_end_def_code()
create_function_type_alias_code(exported_class_alias=None)
create_keywords_args()
create_overloads_cls()
function_type_alias
overloads_class
class pyplusplus.code_creators.calldef.calldef_t(function, wrapper=None)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

associated_decl_creators
references to declaration code creators.
create_call_policies(default_generates_code_too=False)
create_def_code()
create_doc()
create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
create_keywords_args()
def_identifier()
exported_class_alias
function_type_alias
param_sep()
pure_virtual_identifier()
wrapper
class pyplusplus.code_creators.calldef.calldef_wrapper_t(function)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

args_declaration()
function_call_args()
override_identifier()
throw_specifier_code()
unoverriden_function_body()
wrapped_class_identifier()
class pyplusplus.code_creators.calldef.casting_constructor_t(constructor)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

Creates boost.python code needed to register type conversions( implicitly_convertible ). This case treat situation when class has public non explicit constuctor from another type.

class pyplusplus.code_creators.calldef.casting_member_operator_t(operator)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

Creates boost.python code needed to register casting operators. For some operators Pythonic name is given: __int__, __long__, __float__, __str__

class pyplusplus.code_creators.calldef.casting_operator_t(operator)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

Creates boost.python code needed to register type conversions( implicitly_convertible )

class pyplusplus.code_creators.calldef.constructor_t(constructor, wrapper=None)

Bases: pyplusplus.code_creators.calldef.calldef_t

Creates boost.python code needed to expose constructor.

create_init_code()
class pyplusplus.code_creators.calldef.constructor_wrapper_t(constructor)

Bases: pyplusplus.code_creators.calldef.calldef_wrapper_t

Creates C++ code that builds wrapper arround exposed constructor.

class pyplusplus.code_creators.calldef.copy_constructor_wrapper_t(constructor)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

Creates wrapper class constructor from wrapped class instance.

parent_class
class pyplusplus.code_creators.calldef.destructor_wrapper_t(class_)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

Creates class wrapper destructor from the code provided by the user

class pyplusplus.code_creators.calldef.free_fun_overloads_class_t(free_funs)
Bases: pyplusplus.code_creators.calldef.calldef_overloads_class_t
class pyplusplus.code_creators.calldef.free_fun_overloads_t(overloads_class)

Bases: pyplusplus.code_creators.calldef.calldef_overloads_t

create_def_code()
create_end_def_code()
create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
class pyplusplus.code_creators.calldef.free_function_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_t

create_def_code()
create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
class pyplusplus.code_creators.calldef.make_constructor_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_t

create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
make_cnstr_identifier()
class pyplusplus.code_creators.calldef.mem_fun_overloads_class_t(mem_funs)
Bases: pyplusplus.code_creators.calldef.calldef_overloads_class_t
class pyplusplus.code_creators.calldef.mem_fun_overloads_t(overloads_class)

Bases: pyplusplus.code_creators.calldef.calldef_overloads_t

create_def_code()
create_end_def_code()
create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
pyplusplus.code_creators.calldef.mem_fun_private_pv_wrapper_t
alias of mem_fun_private_v_wrapper_t
class pyplusplus.code_creators.calldef.mem_fun_private_v_wrapper_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_wrapper_t

create_body()
create_declaration()
full_name()
function_type()
class pyplusplus.code_creators.calldef.mem_fun_protected_pv_t(function, wrapper)

Bases: pyplusplus.code_creators.calldef.calldef_t

create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
class pyplusplus.code_creators.calldef.mem_fun_protected_pv_wrapper_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_wrapper_t

create_body()
create_declaration()
full_name()
function_type()
class pyplusplus.code_creators.calldef.mem_fun_protected_s_t(function, wrapper)

Bases: pyplusplus.code_creators.calldef.calldef_t

create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
class pyplusplus.code_creators.calldef.mem_fun_protected_s_wrapper_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_wrapper_t

create_body()
create_declaration(name)
create_function()
full_name()
function_type()
class pyplusplus.code_creators.calldef.mem_fun_protected_t(function, wrapper)

Bases: pyplusplus.code_creators.calldef.calldef_t

create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
class pyplusplus.code_creators.calldef.mem_fun_protected_v_t(function, wrapper)

Bases: pyplusplus.code_creators.calldef.calldef_t

create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
class pyplusplus.code_creators.calldef.mem_fun_protected_v_wrapper_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_wrapper_t

create_declaration(name)
create_default_body()
create_default_function()
create_function()
create_virtual_body()
default_full_name()
full_name()
function_type()
class pyplusplus.code_creators.calldef.mem_fun_protected_wrapper_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_wrapper_t

create_body()
create_declaration(name)
create_function()
full_name()
function_type()
class pyplusplus.code_creators.calldef.mem_fun_pv_t(function, wrapper)

Bases: pyplusplus.code_creators.calldef.calldef_t

create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
class pyplusplus.code_creators.calldef.mem_fun_pv_wrapper_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_wrapper_t

create_body()
create_declaration()
class pyplusplus.code_creators.calldef.mem_fun_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_t

create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
class pyplusplus.code_creators.calldef.mem_fun_v_t(function, wrapper=None)

Bases: pyplusplus.code_creators.calldef.calldef_t

create_doc()
create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
class pyplusplus.code_creators.calldef.mem_fun_v_wrapper_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_wrapper_t

create_declaration(name, has_virtual=True)
create_default_body()
create_default_function()
create_function()
create_virtual_body()
default_full_name()
function_type()
class pyplusplus.code_creators.calldef.null_constructor_wrapper_t(constructor)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

Creates wrapper for compiler generated null constructor.

parent_class
class pyplusplus.code_creators.calldef.operator_t(operator)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

Creates boost.python code needed to expose supported subset of C++ operators.

class SELF_POSITION
class pyplusplus.code_creators.calldef.static_method_t(function, function_code_creator=None)

Bases: pyplusplus.code_creators.declaration_based.declaration_based_t, pyplusplus.code_creators.registration_based.registration_based_t

Creates boost.python code that expose member function as static function.

function_code_creator

calldef_ctypes

class pyplusplus.code_creators.calldef_ctypes.METHOD_MODE
class pyplusplus.code_creators.calldef_ctypes.callable_definition_t(callable)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

argtypes_code(group_in_list=True)
ftype
join_arguments(args, group_in_list=True)
restype_code()
class pyplusplus.code_creators.calldef_ctypes.function_definition_t(free_fun)
Bases: pyplusplus.code_creators.calldef_ctypes.callable_definition_t
class pyplusplus.code_creators.calldef_ctypes.opaque_init_introduction_t(class_)
Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

calldef_transformed

class pyplusplus.code_creators.calldef_transformed.constructor_transformed_t(constructor, wrapper=None)

Bases: pyplusplus.code_creators.calldef.calldef_t

controller
create_call_policies()
ft
class pyplusplus.code_creators.calldef_transformed.free_fun_transformed_t(function, wrapper=None)

Bases: pyplusplus.code_creators.calldef_transformed.sealed_fun_transformed_t

Creates code for public non-virtual member functions.

create_def_code()
create_keywords_args()
class pyplusplus.code_creators.calldef_transformed.free_fun_transformed_wrapper_t(function)

Bases: pyplusplus.code_creators.calldef_transformed.sealed_fun_transformed_wrapper_t

Constructor.

Parameter:function (calldef_t) – Function declaration
args_declaration()
create_declaration(name)
full_name()
function_type()
resolve_function_ref()
wrapper_name()
class pyplusplus.code_creators.calldef_transformed.mem_fun_transformed_t(function, wrapper=None)

Bases: pyplusplus.code_creators.calldef_transformed.sealed_fun_transformed_t

Creates code for public non-virtual member functions.

create_keywords_args()
class pyplusplus.code_creators.calldef_transformed.mem_fun_transformed_wrapper_t(function)

Bases: pyplusplus.code_creators.calldef_transformed.sealed_fun_transformed_wrapper_t

Constructor.

Parameter:function (calldef_t) – Function declaration
args_declaration()
full_name()
function_type()
resolve_function_ref()
wrapper_name()
class pyplusplus.code_creators.calldef_transformed.mem_fun_v_transformed_t(function, wrapper=None)

Bases: pyplusplus.code_creators.calldef.calldef_t

controller
create_call_policies()
create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
create_keywords_args()
ft
function_type_alias
class pyplusplus.code_creators.calldef_transformed.mem_fun_v_transformed_wrapper_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_wrapper_t

args_default_declaration()
args_override_declaration()
controller
create_default()
create_override()
default_full_name()
default_function_type()
default_name()
ft
wrapped_class_identifier()
pyplusplus.code_creators.calldef_transformed.remove_duplicate_linesep(code)
class pyplusplus.code_creators.calldef_transformed.sealed_fun_transformed_t(function, wrapper=None)

Bases: pyplusplus.code_creators.calldef.calldef_t

controller
create_call_policies()
create_function_ref_code(use_function_alias=False)
create_function_type_alias_code(exported_class_alias=None)
ft
class pyplusplus.code_creators.calldef_transformed.sealed_fun_transformed_wrapper_t(function)

Bases: pyplusplus.code_creators.calldef.calldef_wrapper_t

controller
create_fun_definition()
ft
resolve_function_ref()

calldef_utils

class pyplusplus.code_creators.calldef_utils.argument_utils_t(declaration, identifier_creator, arguments=None)
args_declaration()
argument_name(index)
call_args()
keywords_args()
class pyplusplus.code_creators.calldef_utils.return_stmt_creator_t(creator, controller, result_var, return_vars)

Bases: object

pre_return_code
statement

class_declaration

class pyplusplus.code_creators.class_declaration.class_declaration_introduction_t(class_declaration)
Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t
class pyplusplus.code_creators.class_declaration.class_declaration_t(class_inst)

Bases: pyplusplus.code_creators.scoped.scoped_t, pyplusplus.code_creators.registration_based.registration_based_t

class_var_name
is_exposed_using_scope()
typedef_name
class pyplusplus.code_creators.class_declaration.class_introduction_t(class_)

Bases: pyplusplus.code_creators.compound.compound_t, pyplusplus.code_creators.declaration_based.declaration_based_t

ctypes_base_class
class pyplusplus.code_creators.class_declaration.class_t(class_inst, wrapper=None)

Bases: pyplusplus.code_creators.scoped.scoped_t, pyplusplus.code_creators.registration_based.registration_based_t

Creates boost.python code that needed to export a class

class_var_name
create_typedef_code()
held_type
is_exposed_using_scope()
typedef_name
wrapper
class pyplusplus.code_creators.class_declaration.class_wrapper_t(declaration, class_creator)

Bases: pyplusplus.code_creators.scoped.scoped_t

creates C++ code, which creates wrapper around a class

base_wrappers
boost_wrapper_identifier
class_creator
exposed_identifier
full_name
held_type
wrapper_alias

code_creator

class pyplusplus.code_creators.code_creator.code_creator_t

Bases: object

code_creator_t is the base class for all code creators.

This class defines the interface that every code creator should implement. Also it provides few convenience functions.

The purpose of a code creator is the generation of a block of C++ source code as it will appear in the final source code for the extension module. The source code is obtained by calling the code_creator_t.create() method. Derived classes must implement the code_creator_t._create_impl() method which is called by the code_creator_t.create() method.

Constructor.

Parameter:parent (code_creator_t) – Parent code creator.
class CODE_GENERATOR_TYPES
code_creator_t.beautify(code)

function that returns code without leading and trailing white spaces.

Parameter:code (str) – A code block with C++ source code.
Return type:str
code_creator_t.code_generator
code_creator_t.create()

generates source code

Return type:str
code_creator_t.get_system_files(recursive=False, unique=False, language='any')
static code_creator_t.iif(condition, true_, false_)
static code_creator_t.indent(code, size=1)

function that implements code indent algorithm.

Parameters:
  • code (str) – C++/Python code block.
  • size (int) – The number of indentation levels that the code is shifted
Return type:

str

static code_creator_t.is_comment(line, language='C++')

function that returns true if content of the line is comment, otherwise false.

Parameters:
  • line (str) – C++ source code
  • language – the programming language, the line was written in. Possible values: C++, Python
Return type:

bool

code_creator_t.parent
Parent code creator or None if this is the root node. @type: code_creators.code_creator_t
code_creator_t.target_configuration
Target configuration. @type: target_configuration_t
code_creator_t.top_parent

top_parent - reference to top parent code creator

@type: code_creators.code_creator_t

static code_creator_t.unindent(code)

function that implements code unindent algorithm.

Parameter:code (str) – C++ code block.
Return type:str
static code_creator_t.unique_headers(headers)
code_creator_t.works_on_instance
class pyplusplus.code_creators.code_creator.separator_t(num=1)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

Creates Python import directive

compound

class pyplusplus.code_creators.compound.compound_t

Bases: pyplusplus.code_creators.code_creator.code_creator_t

Constructor.

Parameter:parent (code_creators.code_creator_t) – Parent code creator.
adopt_creator(creator, index=None)

Add a creator to the list of children creators.

Parameters:
  • creator (code_creators.code_creator_t) – Creator object
  • index (int) – Desired position of the creator or None to append it to the end of the list
adopt_creators(creators, index=None)

Add a creators to the list of children creators.

Parameters:
  • creators – list of creators object
  • index (int) – Desired position of the creator or None to append it to the end of the list
static create_internal_code(creators, indent_code=True)

concatenate the code from a list of code creators.

Parameter:creators (list of code_creators.code_creator_t) – A list with code creators
Return type:str
creators
A list of children nodes. @type: list of code_creators.code_creator_t
find_by_creator_class(class_, unique=True, recursive=False)
get_system_files(recursive=False, unique=False, language='any')
remove_creator(creator)

Remove a children code creator object.

@precondition: creator must be a children of self :param creator: The creator node to remove :type creator: code_creators.code_creator_t

ctypes_formatter

defines types visitor class interface

pyplusplus.code_creators.ctypes_formatter.as_ctype(type_, treat_char_ptr_as_binary_data=False)
class pyplusplus.code_creators.ctypes_formatter.type_converter_t(type_, treat_char_ptr_as_binary_data, decl_formatter=<function complete_py_name at 0x15c4e60>)

Bases: pygccxml.declarations.type_visitor.type_visitor_t

types visitor interface

All functions within this class should be redefined in derived classes.

create_converter(type_)
visit_array()
visit_bool()
visit_char()
visit_const()
visit_declarated()
visit_double()
visit_ellipsis()
visit_float()
visit_free_function_type()
visit_int()
visit_long_double()
visit_long_int()
visit_long_long_int()
visit_long_long_unsigned_int()
visit_long_unsigned_int()
visit_pointer()
visit_reference()
visit_restrict()
visit_short_int()
visit_short_unsigned_int()
visit_signed_char()
visit_unsigned_char()
visit_unsigned_int()
visit_void()
visit_volatile()
visit_wchar()

ctypes_integration_creators

class pyplusplus.code_creators.ctypes_integration_creators.expose_sizeof_t(class_)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

creates code that expose address of the object to Python

class pyplusplus.code_creators.ctypes_integration_creators.expose_this_t(class_)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

creates code that expose address of the object to Python

ctypes_module

custom

class pyplusplus.code_creators.custom.custom_t(works_on_instance=True)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

Base class for custom code. works_on_instance: If true, the custom code can be applied directly to obj inst. Ex: ObjInst.”CustomCode”

class pyplusplus.code_creators.custom.custom_text_t(text, works_on_instance=True)

Bases: pyplusplus.code_creators.custom.custom_t

text

declaration_based

class pyplusplus.code_creators.declaration_based.declaration_based_t(declaration)

Code creator that is based on a declaration.

Constructor.

Parameters:
  • declaration (decl_wrappers.decl_wrapper_t) – Declaration object
  • parent (code_creator_t) – Parent code creator.
alias
complete_py_name
decl_identifier
declaration
The declaration this code creator is based on. @type: decl_wrappers.decl_wrapper_t
documentation
get_user_headers(recursive=False, unique=False)
return list of user header files to be included from the generated file
undecorated_decl_name

embedded_code_repository

class pyplusplus.code_creators.embedded_code_repository.embedded_code_repository_t(code_repository_module)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

Creates Python import directive

enum

class pyplusplus.code_creators.enum.enum_t(enum)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

create code that exposes C++ enumeration

export_values
value_aliases
class pyplusplus.code_creators.enum.pyenum_t(enum)
Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

exception_translator

class pyplusplus.code_creators.exception_translator.exception_translator_register_t(exception_class, exception_translator)
Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t
class pyplusplus.code_creators.exception_translator.exception_translator_t(exception_class)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

translator_name

global_variable

class pyplusplus.code_creators.global_variable.array_gv_t(variable, wrapper)

Bases: pyplusplus.code_creators.global_variable.global_variable_base_t

Creates boost.python code that exposes array global variable.

class pyplusplus.code_creators.global_variable.array_gv_wrapper_t(variable)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

Creates C++ code that register array class.

wrapper_creator_full_name
wrapper_creator_name
wrapper_creator_type
wrapper_type
class pyplusplus.code_creators.global_variable.global_variable_addressof_t(variable)

Bases: pyplusplus.code_creators.global_variable.global_variable_base_t

Creates boost.python code that exposes address of global variable.

This functionality is pretty powerful if you use it with “ctypes” - standard package.

class pyplusplus.code_creators.global_variable.global_variable_base_t(variable, wrapper=None)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

Base class for all global variables code creators. Mainly exists to simplify file writers algorithms.

wrapper
class pyplusplus.code_creators.global_variable.global_variable_reference_t(var)
Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t
class pyplusplus.code_creators.global_variable.global_variable_t(variable)

Bases: pyplusplus.code_creators.global_variable.global_variable_base_t

Creates boost.python code that exposes global variable.

include

class pyplusplus.code_creators.include.import_t(module_name)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

Creates Python import directive

class pyplusplus.code_creators.include.include_t(header, user_defined=False, system=False)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

Creates C++ code for include directive

header
include_dirs_optimization
is_system
Return True if header file is system( Boost.Python or Py++ ) header file
is_user_defined

include_directories

class pyplusplus.code_creators.include_directories.include_directories_t

Bases: pyplusplus.code_creators.instruction.instruction_t

The instance of this class holds a list of user defined directories. code_creators.include_t and code_creators.precompiled_header_t code creators use it to generate relative include directives.

is_std(header)
is_user_defined(header)
static normalize(path)
normalize_header(header)
std
user_defined

indexing_suites

class pyplusplus.code_creators.indexing_suites.indexing_suite1_t(container)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

configuration
container
guess_suite_name()
class pyplusplus.code_creators.indexing_suites.indexing_suite2_t(container)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

does_user_disable_methods()
generate_algorithm_mask()
class pyplusplus.code_creators.indexing_suites.value_traits_t(value_class)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

generate_value_class_fwd_declaration()
generate_value_traits()

instruction

class pyplusplus.code_creators.instruction.instruction_t(silent=True)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

This class is used as a base class for different instruction for code creators.

get_silent()
set_silent(silent)
silent
silent property controls, whether instruction should be written within generated code or not. Default value is True - not written.

library_reference

class pyplusplus.code_creators.library_reference.library_reference_t(library_path, library_var_name=None, is_cpp_library=True)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

Creates reference to a library

library_var_name

license

class pyplusplus.code_creators.license.license_t(text)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

This class allows user to put his license on the top of every generated file. License text will be generated as is.

beautify(code)
text

member_variable

class pyplusplus.code_creators.member_variable.array_mv_t(variable, wrapper)

Bases: pyplusplus.code_creators.member_variable.member_variable_base_t

Creates boost.python code that exposes array member variable.

class pyplusplus.code_creators.member_variable.array_mv_wrapper_t(variable)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

registers array class

wrapped_class_type
wrapper_creator_full_name
wrapper_creator_name
wrapper_creator_type
wrapper_type
class pyplusplus.code_creators.member_variable.bit_field_t(variable, wrapper)

Bases: pyplusplus.code_creators.member_variable.member_variable_base_t

Creates boost.python code that exposes bit fields member variables

class pyplusplus.code_creators.member_variable.bit_field_wrapper_t(variable)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

creates get/set accessors for bit fields

getter_full_name
getter_type
has_setter
indent(code, size=1)

function that implements code indent algorithm.

Parameters:
  • code (str) – C++/Python code block.
  • size (int) – The number of indentation levels that the code is shifted
Return type:

str

setter_full_name
setter_type
class pyplusplus.code_creators.member_variable.fields_definition_t(class_)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

has_unnamed_type(var)
class pyplusplus.code_creators.member_variable.mem_var_ref_t(variable, wrapper)

Bases: pyplusplus.code_creators.member_variable.member_variable_base_t

creates get/set accessors for class member variable, that has type reference.

class pyplusplus.code_creators.member_variable.mem_var_ref_wrapper_t(variable)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

creates get/set accessors for class member variable, that has type reference.

getter_full_name
getter_type
has_setter
indent(code, size=1)

function that implements code indent algorithm.

Parameters:
  • code (str) – C++/Python code block.
  • size (int) – The number of indentation levels that the code is shifted
Return type:

str

setter_full_name
setter_type
class pyplusplus.code_creators.member_variable.member_variable_addressof_t(variable, wrapper=None)

Bases: pyplusplus.code_creators.member_variable.member_variable_base_t

Creates boost.python code that exposes address of member variable.

This functionality is pretty powerful if you use it with “ctypes” - standard package.

has_setter()
class pyplusplus.code_creators.member_variable.member_variable_base_t(variable, wrapper=None)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

Base class for all member variables code creators. Mainly exists to simplify file writers algorithms.

wrapper
class pyplusplus.code_creators.member_variable.member_variable_t(variable, wrapper=None)

Bases: pyplusplus.code_creators.member_variable.member_variable_base_t

Creates boost.python code that exposes member variable.

class pyplusplus.code_creators.member_variable.member_variable_wrapper_t(variable)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

creates get/set accessors for class variables, that has type pointer

getter_full_name
getter_type
has_setter
indent(code, size=1)

function that implements code indent algorithm.

Parameters:
  • code (str) – C++/Python code block.
  • size (int) – The number of indentation levels that the code is shifted
Return type:

str

inst_arg_type(has_const)
setter_full_name
setter_type

module

class pyplusplus.code_creators.module.bpmodule_t(global_ns)

Bases: pyplusplus.code_creators.module.module_t

This class represents the source code for the entire extension module.

The root of the code creator tree is always a module_t object.

Constructor.

add_declaration_code(code, position)
add_include(header, user_defined=True, system=False)
add_namespace_alias(alias, full_namespace_name)
add_namespace_usage(namespace_name)
adopt_declaration_creator(creator)
adopt_include(include_creator)

Insert an code_creators.include_t object.

The include creator is inserted right after the last include file.

Parameter:include_creator (code_creators.include_t) – Include creator object
body
Return reference to code_creators.module_body_t code creator
do_include_dirs_optimization()
last_include_index()

return the children index of the last code_creators.include_t object.

An exception is raised when there is no include_t object among the children creators.

Return type:int
replace_included_headers(headers, leave_system_headers=True)
std_directories
user_defined_directories
class pyplusplus.code_creators.module.ctypes_module_t(global_ns)

Bases: pyplusplus.code_creators.module.module_t

This class represents the source code for the entire extension module.

The root of the code creator tree is always a module_t object.

Constructor.

library_var_name
class pyplusplus.code_creators.module.module_t(global_ns, code_generator_type)

Bases: pyplusplus.code_creators.compound.compound_t

This class represents the source code for the entire extension module.

The root of the code creator tree is always a module_t object.

Constructor.

global_ns
reference to global_ns ( namespace_t ) declaration
license

License text.

The license text will always be the first children node. @type: str or code_creators.license_t

specially_exposed_decls
update_documentation(doc_extractor)

module_body

class pyplusplus.code_creators.module_body.module_body_t(name)

Bases: pyplusplus.code_creators.compound.compound_t

name

namespace

class pyplusplus.code_creators.namespace.namespace_alias_t(alias, full_namespace_name)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

alias
full_namespace_name
class pyplusplus.code_creators.namespace.namespace_as_pyclass_t(ns)
Bases: pyplusplus.code_creators.compound.compound_t, pyplusplus.code_creators.declaration_based.declaration_based_t
class pyplusplus.code_creators.namespace.namespace_using_t(namespace_name)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

namespace_name

name_mappings

class pyplusplus.code_creators.name_mappings.name_mappings_t(exported_symbols)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

creates dictionary { [un]decorated name : [un]decorated name }

opaque_type_registrator

class pyplusplus.code_creators.opaque_type_registrator.opaque_type_registrator_t(pointee)

Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

This class creates code that register static sized array

properties

class pyplusplus.code_creators.properties.property_t(property_def, wrapper=None)

Bases: pyplusplus.code_creators.registration_based.registration_based_t

create_accessor_code(f, ftype_alias)
create_class_typedef_on_demand(f, prefix='')
create_function_type_alias_code(f, ftype_alias, exported_class_alias=None)
create_property_code()
has_long_line()
is_same_parent()
make_function_identifier
property_def

registration_based

class pyplusplus.code_creators.registration_based.registration_based_t(associated_decl_creators=None)

Bases: pyplusplus.code_creators.code_creator.code_creator_t

Code creator that is based on a declaration.

associated_decl_creators
references to global declaration code creators.

scoped

class pyplusplus.code_creators.scoped.scoped_t(declaration)
Bases: pyplusplus.code_creators.declaration_based.declaration_based_t, pyplusplus.code_creators.compound.compound_t

smart_pointers

class pyplusplus.code_creators.smart_pointers.held_type_t(smart_ptr)

Bases: object

Helper class that can hold smart pointer name and create identifier for the held type from that given a creator.

Parameter:smart_ptr – smart pointer type as string
create(creator)
Return string of type to use for held type. Ex: boost::shared_ptr class
smart_ptr
class pyplusplus.code_creators.smart_pointers.smart_pointer_registrator_t(smart_ptr, class_creator)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

Converter for boost::python::register_ptr_to_python.

Lets boost python know that it can use smart_ptr to hold a an object. See: http://www.boost.org/libs/python/doc/v2/register_ptr_to_python.html

smart_ptr: string of pointer type. Ex: boost::shared_ptr

class_creator
smart_ptr
class pyplusplus.code_creators.smart_pointers.smart_pointers_converter_t(smart_ptr, source, target)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

creator for boost::python::implicitly_convertible. This creates a statement that allows the usage of C++ implicit conversion from source to target. See: http://www.boost.org/libs/python/doc/v2/implicit.html

smart_ptr
source
target

target_configuration

class pyplusplus.code_creators.target_configuration.target_configuration_t

Bases: object

Developers do not always work with latest version of boost.python or latest version of compiler. So there is a need to generate code that configured to specific version, feature or compiler. Instance of this class will be shared between all instances of code creators. Every relevant code creator will respect relevant configuration settings.

boost_python_has_wrapper_held_type
boost_python_supports_void_ptr

typedef_as_pyvar

class pyplusplus.code_creators.typedef_as_pyvar.typedef_as_pyvar_t(ns)
Bases: pyplusplus.code_creators.code_creator.code_creator_t, pyplusplus.code_creators.declaration_based.declaration_based_t

unnamed_enum

class pyplusplus.code_creators.unnamed_enum.unnamed_enum_t(unnamed_enum)

Bases: pyplusplus.code_creators.registration_based.registration_based_t, pyplusplus.code_creators.declaration_based.declaration_based_t

value_aliases
blog comments powered by Disqus