3
0
mirror of https://github.com/triqs/dft_tools synced 2024-11-01 11:43:47 +01:00
dft_tools/pytriqs/parameters/parameters_desc.py
Olivier Parcollet 243d4a798b wrapper: add use_module
- a module can use the converters used by another
  with the use_module('A') command.
  In which case :
    - the generate converter header for A will be included.
    - the header, at the top, now contains a simple list of all
      wrapped types, which is then included in the wrapped_types
      of the module for proper code generation.
- simplify the code generation : just generate_code.
- all arguments are analyzed from sys.argv at the import of the
  wrap_generator module. In any case, the xx_desc.py will be called from the corresponding
  cmake command, hence with the right arguments.
- Added a dependencies in my_module_B of wrap_test to show how to make
  the dependencies in the cmake file, if needed.
2014-05-30 19:34:13 +02:00

41 lines
1.3 KiB
Python

from wrap_generator import *
# The module
module = module_(full_name = "pytriqs.parameters.parameters", doc = "TO BE WRITTEN")
module.add_include("<triqs/parameters/parameters.hpp>")
module.add_using("namespace triqs::params")
# one class
g = class_(
py_type = "Parameters",
c_type = "parameters",
c_type_absolute = "triqs::params::parameters",
#serializable= "tuple",
is_printable= True,
hdf5 = True,
# Add + for merging
arithmetic = ("only_add")
)
#add a constructor
#g.add_constructor(doc = "DOC of constructor", args = [])
g.add_method(py_name = "help", calling_pattern = "auto result = self_c.help()", signature = "std::string()", doc = "help")
# add getitem/setitem ...
g.add_getitem(signature = "PyObject *(const char * key)",
calling_pattern = "PyObject * result = self_c[key].to_python()",
doc = "")
g.add_setitem(signature = "void(const char * key, PyObject * ob)",
calling_pattern = """
if (!self_c[key].from_python_convertible(ob)) return NULL; // early exit, the error is set by the converter
self_c[key].set_from_python(ob);
""",
doc = "")
module.add_class(g)
if __name__ == '__main__' :
module.generate_code()