diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2011-01-28 17:51:05 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:13:51 -0300 |
commit | fd8e28fa13c7424f0ebba60d90d025cf4ac3b7b9 (patch) | |
tree | f51c667b0f8aa1c1b832392bf9f7866e66fc6aa1 | |
parent | 70774513a8190d4eaf18496e7833ab4c521fbb34 (diff) |
Added the "%CPPTYPE" type system variable.
%CPPTYPE will be converted to the original C++ name of a class,
without any "Wrapper" suffix or namespace prefix.
Documentation for the new variable was added as well.
Reviewed by Hugo Parente <hugo.lima@openbossa.org>
Reviewed by Luciano Wolf <luciano.wolf@openbossa.org>
-rw-r--r-- | doc/typesystemvariables.rst | 12 | ||||
-rw-r--r-- | generator/shibokengenerator.cpp | 4 |
2 files changed, 16 insertions, 0 deletions
diff --git a/doc/typesystemvariables.rst b/doc/typesystemvariables.rst index 9f31bce45..7e9beef6e 100644 --- a/doc/typesystemvariables.rst +++ b/doc/typesystemvariables.rst @@ -143,6 +143,18 @@ Variables Replaced by the wrapped C++ object instance that owns the method in which the code with this variable was inserted. +.. _cpptype: + +**%CPPTYPE** + + Replaced by the original name of the C++ class, without any namespace prefix, + that owns the method in which the code with this variable was inserted. It will + work on class level code injections also. Notice that ``CPPTYPE`` differs from + the :ref:`%TYPE <type>` variable, for this latter may be translated to the original + C++ class name or to the C++ wrapper class name. + + Namespaces will are treated as classes, so ``CPPTYPE`` will work for them and their + enclosed functions as well. .. _function_name: diff --git a/generator/shibokengenerator.cpp b/generator/shibokengenerator.cpp index 72f396d0e..387a87690 100644 --- a/generator/shibokengenerator.cpp +++ b/generator/shibokengenerator.cpp @@ -1145,6 +1145,7 @@ void ShibokenGenerator::writeCodeSnips(QTextStream& s, // class context in which the variable is used code.replace("%PYTHONTYPEOBJECT", cpythonTypeName(context) + ".super.ht_type"); code.replace("%TYPE", wrapperName(context)); + code.replace("%CPPTYPE", context->name()); } // replace "toPython "converters @@ -1325,6 +1326,9 @@ void ShibokenGenerator::writeCodeSnips(QTextStream& s, if (func->isConstructor() && shouldGenerateCppWrapper(func->ownerClass())) code.replace("%TYPE", wrapperName(func->ownerClass())); + if (func->ownerClass()) + code.replace("%CPPTYPE", func->ownerClass()->name()); + replaceTemplateVariables(code, func); } |