string InterfaceGenerator::generateMethod(Method & m) { string tmp = TEMPLATE_INTERFACE_METHOD; //set methodname replaceAll(tmp, "<methodName>", m.name); replaceAll(tmp, "<methodComment>", "[method] " + m.name + ": " + m.comment); std::stringstream aliases; std::stringstream pcom; for (Argument::List::iterator a = m.inArguments.begin(); a != m.inArguments.end(); a++) { pcom << tab << tab << " * [in] " << argType(*a) << " " << a->name << ": " << a->comment << endl; if (!a->alias.empty()){ aliases << tab << tab << "typedef " << argType(*a) << " " << a->alias << ";" << endl; } } for (Argument::List::iterator a = m.outArguments.begin(); a != m.outArguments.end(); a++) { pcom << tab << tab << " * [out] " << argType(*a) << " " << a->name << ": " << a->comment << endl; if (!a->alias.empty()){ aliases << tab << tab << "typedef " << argType(*a) << " " << a->alias << ";" << endl; } } replaceAll(tmp, "<paramsComments>", pcom.str()); replaceAll(tmp, "<aliases>", aliases.str()); replaceAll(tmp, "<returnType>", returnType(m, true)); replaceAll(tmp, "<parameters>", methodArgDefinition(m, true)); return tmp; }
string InterfaceGenerator::generateSignal(Signal & s) { std::string stypedef = ""; if (s.arguments.size() > 1) { stypedef += "struct " + eventArgType(s) + " { \n"; int i = 0; for (Argument::List::iterator a = s.arguments.begin(); a != s.arguments.end(); a++, i++) { stypedef += argType(*a) + " " + a->name + ";\n"; } stypedef += "}"; } else { stypedef += "typedef " + this->argType(s.arguments.front()) + " " + eventArgType(s); } string tmp = TEMPLATE_INTERFACE_SIGNAL; replaceAll(tmp, "<signalName>", s.name); replaceAll(tmp, "<signalTypeDefinition>", stypedef); replaceAll(tmp, "<signalType>", eventArgType(s)); return tmp; }
QVariant QGpgMECryptoConfigEntry::stringToValue( const QString& str, bool unescape ) const { const bool isString = isStringType(); if ( isList() ) { if ( argType() == ArgType_None ) { bool ok = true; const QVariant v = str.isEmpty() ? 0U : str.toUInt( &ok ) ; if ( !ok ) kWarning(5150) << "list-of-none should have an unsigned int as value:" << str; return v; } QList<QVariant> lst; QStringList items = str.split( ',', QString::SkipEmptyParts ); for( QStringList::const_iterator valit = items.constBegin(); valit != items.constEnd(); ++valit ) { QString val = *valit; if ( isString ) { if ( val.isEmpty() ) { lst << QVariant( QString() ); continue; } else if ( unescape ) { if( val[0] != '"' ) // see README.gpgconf kWarning(5150) <<"String value should start with '\"' :" << val; val = val.mid( 1 ); } } lst << QVariant( unescape ? gpgconf_unescape( val ) : val ); } return lst; } else { // not a list QString val( str ); if ( isString ) { if ( val.isEmpty() ) return QVariant( QString() ); // not set [ok with lists too?] else if ( unescape ) { if( val[0] != '"' ) // see README.gpgconf kWarning(5150) <<"String value should start with '\"' :" << val; val = val.mid( 1 ); } } return QVariant( unescape ? gpgconf_unescape( val ) : val ); } }
string InterfaceGenerator::generateStruct(Interface & i, Struct &s) { string tmp = TEMPLATE_STRUCTS; replaceAll(tmp, "<namespaceStart>", generateNamespaceStart(i.namesp)); replaceAll(tmp, "<namespaceEnd>", generateNamespaceEnd(i.namesp)); replaceAll(tmp, "<structName>", s.name); std::string ms; //methods for (Argument::List::iterator m = s.members.begin(); m != s.members.end(); m++) { std::string member; member = "\t\t" + argType(*m) + " " + m->name + ";\n"; ms.append(member); } replaceAll(tmp, "<members>", ms); std::cout << "tmp: " << tmp; std::cout << "members: " << ms; return tmp; }