diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2011-07-27 19:25:39 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:17:04 -0300 |
commit | 0342513031e1c33d680c891a6c0bb74fc99e329d (patch) | |
tree | 699baaf2fd39564f15c03f0d480d78f74e7a986e /generator/shibokengenerator.cpp | |
parent | d59f29f9d51928ab96dd65953e791d658156b312 (diff) |
Moved some type system variable replacement to their own methods.
The new methods replace the contents of the following type system
variables:
%CONVERTTOPYTHON
%CONVERTTOCPP
%ISCONVERTIBLE
%CHECKTYPE
The replacements were part of the ShibokenGenerator::writeCodeSnips()
method.
Diffstat (limited to 'generator/shibokengenerator.cpp')
-rw-r--r-- | generator/shibokengenerator.cpp | 52 |
1 files changed, 36 insertions, 16 deletions
diff --git a/generator/shibokengenerator.cpp b/generator/shibokengenerator.cpp index 8c80e7c2c..9e0706698 100644 --- a/generator/shibokengenerator.cpp +++ b/generator/shibokengenerator.cpp @@ -1182,10 +1182,6 @@ void ShibokenGenerator::writeCodeSnips(QTextStream& s, const AbstractMetaArgument* lastArg, const AbstractMetaClass* context) { - static QRegExp toPythonRegex("%CONVERTTOPYTHON\\[([^\\[]*)\\]"); - static QRegExp toCppRegex("%CONVERTTOCPP\\[([^\\[]*)\\]"); - static QRegExp isConvertibleRegex("%ISCONVERTIBLE\\[([^\\[]*)\\]"); - static QRegExp checkTypeRegex("%CHECKTYPE\\[([^\\[]*)\\]"); static QRegExp pyArgsRegex("%PYARG_(\\d+)"); // detect is we should use pyargs instead of args as variable name for python arguments @@ -1216,18 +1212,6 @@ void ShibokenGenerator::writeCodeSnips(QTextStream& s, code.replace("%CPPTYPE", context->name()); } - // replace "toPython" converters - code.replace(toPythonRegex, "Shiboken::Converter<\\1 >::toPython"); - - // replace "toCpp" converters - code.replace(toCppRegex, "Shiboken::Converter<\\1 >::toCpp"); - - // replace "isConvertible" check - code.replace(isConvertibleRegex, "Shiboken::Converter<\\1 >::isConvertible"); - - // replace "checkType" check - code.replace(checkTypeRegex, "Shiboken::Converter<\\1 >::checkType"); - if (func) { // replace %PYARG_# variables code.replace("%PYARG_0", PYTHON_RETURN_VAR); @@ -1434,6 +1418,18 @@ void ShibokenGenerator::writeCodeSnips(QTextStream& s, replaceTemplateVariables(code, func); } + // replace "toPython" converters + replaceConvertToPythonTypeSystemVariable(code); + + // replace "toCpp" converters + replaceConvertToCppTypeSystemVariable(code); + + // replace "isConvertible" check + replaceConvertibleToCppTypeSystemVariable(code); + + // replace "checkType" check + replaceTypeCheckTypeSystemVariable(code); + if (!code.isEmpty()) { s << INDENT << "// Begin code injection" << endl; s << code; @@ -1442,6 +1438,30 @@ void ShibokenGenerator::writeCodeSnips(QTextStream& s, } } +void ShibokenGenerator::replaceConvertToPythonTypeSystemVariable(QString& code) +{ + static QRegExp toPythonRegex("%CONVERTTOPYTHON\\[([^\\[]*)\\]"); + code.replace(toPythonRegex, "Shiboken::Converter<\\1 >::toPython"); +} + +void ShibokenGenerator::replaceConvertToCppTypeSystemVariable(QString& code) +{ + static QRegExp toCppRegex("%CONVERTTOCPP\\[([^\\[]*)\\]"); + code.replace(toCppRegex, "Shiboken::Converter<\\1 >::toCpp"); +} + +void ShibokenGenerator::replaceConvertibleToCppTypeSystemVariable(QString& code) +{ + static QRegExp isConvertibleRegex("%ISCONVERTIBLE\\[([^\\[]*)\\]"); + code.replace(isConvertibleRegex, "Shiboken::Converter<\\1 >::isConvertible"); +} + +void ShibokenGenerator::replaceTypeCheckTypeSystemVariable(QString& code) +{ + static QRegExp checkTypeRegex("%CHECKTYPE\\[([^\\[]*)\\]"); + code.replace(checkTypeRegex, "Shiboken::Converter<\\1 >::checkType"); +} + bool ShibokenGenerator::injectedCodeUsesCppSelf(const AbstractMetaFunction* func) { CodeSnipList snips = func->injectedCodeSnips(CodeSnip::Any, TypeSystem::TargetLangCode); |