Package pyplusplus :: Package decl_wrappers :: Module variable_wrapper :: Class variable_t

type variable_t

source code

                                         object --+    
                                                  |    
                        decl_wrapper.decl_wrapper_t --+
                                                      |
                                     object --+       |
                                              |       |
pygccxml.declarations.declaration.declaration_t --+   |
                                                  |   |
          pygccxml.declarations.variable.variable_t --+
                                                      |
                                                     variable_t

defines a set of properties, that will instruct Py++ how to expose the variable

Instance Methods
 
__init__(self, *arguments, **keywords)
creates class that describes C++ global or member variable
source code
 
get_getter_call_policies(self) source code
 
set_getter_call_policies(self, call_policies) source code
 
get_setter_call_policies(self) source code
 
set_setter_call_policies(self, call_policies) source code
 
get_apply_smart_ptr_wa(self) source code
 
set_apply_smart_ptr_wa(self, value) source code
 
get_use_make_functions(self) source code
 
set_use_make_functions(self, value) source code
 
get_expose_address(self) source code
 
set_expose_address(self, value) source code
 
get_expose_value(self) source code
 
set_expose_value(self, value) source code
 
get_is_read_only(self) source code
 
set_is_read_only(self, v) source code
 
is_wrapper_needed(self)
returns an explanation( list of str ) why wrapper is needed.
source code

Inherited from decl_wrapper.decl_wrapper_t: disable_messages, disable_warnings, exclude, get_already_exposed, get_exportable, include, readme, rename, set_already_exposed, set_exportable, why_not_exportable

Inherited from pygccxml.declarations.variable.variable_t: __eq__, i_depend_on_them

Inherited from pygccxml.declarations.declaration.declaration_t: __lt__, __ne__, __str__, create_decl_string

Class Variables
  __call_policies_doc__ = 'There are usecase, when exporting mem...
  __use_make_functions_doc__ = 'Generate code using make_getter ...
  __expose_address_doc__ = 'There are some cases when Boost.Pyth...
  __expose_value_doc__ = 'Boost.Python is not able to expose uni...

Inherited from decl_wrapper.decl_wrapper_t: SPECIAL_TYPEDEF_PICK_ANY

Properties
  getter_call_policies
There are usecase, when exporting member variable forces Py++ to create accessors functions.
  setter_call_policies
There are usecase, when exporting member variable forces Py++ to create accessors functions.
  apply_smart_ptr_wa
Generate code using make_getter and make_setter functions
  use_make_functions
Generate code using make_getter and make_setter functions
  expose_address
There are some cases when Boost.Python doesn't provide a convenient way to expose the variable to Python.
  expose_value
Boost.Python is not able to expose unions.
  is_read_only

Inherited from decl_wrapper.decl_wrapper_t: alias, already_exposed, disabled_messages, documentation, exportable, ignore, include_files, logger

Inherited from pygccxml.declarations.variable.variable_t: access_type, bits, byte_offset, type, type_qualifiers, value

Inherited from pygccxml.declarations.declaration.declaration_t: attributes, cache, compiler, decl_string, demangled, is_artificial, location, mangled, name, parent, partial_decl_string, partial_name, top_parent

Method Details

__init__(self, *arguments, **keywords)
(Constructor)

source code 

creates class that describes C++ global or member variable

Overrides: pygccxml.declarations.declaration.declaration_t.__init__

is_wrapper_needed(self)

source code 

returns an explanation( list of str ) why wrapper is needed.

If wrapper is not needed than [] will be returned.


Class Variable Details

__call_policies_doc__

Value:
'''There are usecase, when exporting member variable forces Py++ to
    create accessors functions. Sometime, those functions requires cal\
l policies.
    To be more specific: when you export member variable that has refe\
rence or
    pointer type, you need to tell Boost.Python library how to manage \
object
    life-time. In all cases, Py++ will give reasonable default value. \
...

__use_make_functions_doc__

Value:
'''Generate code using make_getter and make_setter functions

    Basically you don\'t need to use this, untill you have one of the \
next use-cases:
    * member variable is smart pointer - in this case Boost.Python has\
 small problem
      to expose it right. Using the functions is a work around to the \
problem.
...

__expose_address_doc__

Value:
'''There are some cases when Boost.Python doesn\'t provide a convenien\
t way
    to expose the variable to Python. For example:

    double* x[10];
    //or
    char* buffer; //in case you want to modify the buffer in place

...

__expose_value_doc__

Value:
'''Boost.Python is not able to expose unions. Using ctypes module
    it is possible to get access to the data stored in a variable, whi\
ch
    has some union type.

    This property controls whether Py++ should expose the variable val\
ue
    or not. In case, this variable has type union, this property will \
...

Property Details

getter_call_policies

There are usecase, when exporting member variable forces Py++ to create accessors functions. Sometime, those functions requires call policies. To be more specific: when you export member variable that has reference or pointer type, you need to tell Boost.Python library how to manage object life-time. In all cases, Py++ will give reasonable default value. I am sure, that there are use cases, when you will have to change it. You should use this property to change it.

Get Method:
get_getter_call_policies(self)
Set Method:
set_getter_call_policies(self, call_policies)

setter_call_policies

There are usecase, when exporting member variable forces Py++ to create accessors functions. Sometime, those functions requires call policies. To be more specific: when you export member variable that has reference or pointer type, you need to tell Boost.Python library how to manage object life-time. In all cases, Py++ will give reasonable default value. I am sure, that there are use cases, when you will have to change it. You should use this property to change it.

Get Method:
get_setter_call_policies(self)
Set Method:
set_setter_call_policies(self, call_policies)

apply_smart_ptr_wa

Generate code using make_getter and make_setter functions

Basically you don't need to use this, untill you have one of the next use-cases:
* member variable is smart pointer - in this case Boost.Python has small problem
  to expose it right. Using the functions is a work around to the problem.
* member variable defined custom r-value converter - may be you don't know
  but the conversion is applied only on functions arguments. So you need to
  use make_getter/make_setter in order to allow user to enjoy from the
  conversion.

Setting "apply_smart_ptr_wa" and/or "use_make_functions" to "True" will tell
Py++ to generate such code.

Get Method:
get_apply_smart_ptr_wa(self)
Set Method:
set_apply_smart_ptr_wa(self, value)

use_make_functions

Generate code using make_getter and make_setter functions

Basically you don't need to use this, untill you have one of the next use-cases:
* member variable is smart pointer - in this case Boost.Python has small problem
  to expose it right. Using the functions is a work around to the problem.
* member variable defined custom r-value converter - may be you don't know
  but the conversion is applied only on functions arguments. So you need to
  use make_getter/make_setter in order to allow user to enjoy from the
  conversion.

Setting "apply_smart_ptr_wa" and/or "use_make_functions" to "True" will tell
Py++ to generate such code.

Get Method:
get_use_make_functions(self)
Set Method:
set_use_make_functions(self, value)

expose_address

There are some cases when Boost.Python doesn't provide a convenient way to expose the variable to Python. For example:

double* x[10]; //or char* buffer; //in case you want to modify the buffer in place

In this cases Py++ doesn't help too. In these cases it is possible to expose the actual address of the variable. After that, you can use built-in "ctypes" package to edit the content of the variable.

Get Method:
get_expose_address(self)
Set Method:
set_expose_address(self, value)

expose_value

Boost.Python is not able to expose unions. Using ctypes module it is possible to get access to the data stored in a variable, which has some union type.

This property controls whether Py++ should expose the variable value or not. In case, this variable has type union, this property will be False.

Get Method:
get_expose_value(self)
Set Method:
set_expose_value(self, value)

is_read_only

Get Method:
get_is_read_only(self)
Set Method:
set_is_read_only(self, v)