Exemplo n.º 1
0
QString BaseGenerator::getDefaultValue(const BaseField *field)
{
    switch(type)
    {
        case BaseField::TYPE_INT:
            return QString::number(static_cast<const IntField *>(field)->defaultValue);
        case BaseField::TYPE_DOUBLE:
            return QString::number(static_cast<const DoubleField *>(field)->defaultValue);
        case BaseField::TYPE_BOOL:
            return static_cast<const BoolField *>(field)->defaultValue ? "true" : "false";
        case BaseField::TYPE_ENUM:
            return QString::number(static_cast<const EnumField *>(field)->defaultValue);
        case BaseField::TYPE_STRING:
            return QString("\"") + QString(static_cast<const StringField *>(field)->defaultValue.c_str()) + QString("\"");
        case BaseField::TYPE_POINTER:
            return "NULL";
        case BaseField::TYPE_COMPOSITE:
        {
            const CompositeField *cfield = static_cast<const CompositeField *>(field);
            const Reflection *referent = cfield->reflection;
            return toCamelCase(referent->name.name, true) + "()";
        }
        case BaseField::TYPE_COMPOSITE_ARRAY:
        {
            const CompositeArrayField *cafield = static_cast<const CompositeArrayField *>(field);
            const Reflection *referent = cafield->reflection;
            return QString("std::vector<") + toCamelCase(referent->name.name, true) + ">()";
        }
        default:
            return "/* Something is not supported by generator */";
    }
}
Exemplo n.º 2
0
QString BaseGenerator::getCppTypeForElementType(const BaseField::FieldType type)
{   
    switch(type)
    {
        case BaseField::TYPE_INT:
            return "int";
        case BaseField::TYPE_TIMESTAMP:
            return "int64_t";
        case BaseField::TYPE_DOUBLE:
            return "double";
        case BaseField::TYPE_BOOL:
            return "bool";
        case BaseField::TYPE_STRING:
            return "std::string";
        case BaseField::TYPE_WSTRING:
            return "std::wstring";
        case BaseField::TYPE_ENUM:
        {
            QString enumName = toCamelCase(QString(static_cast<const EnumField*>(field)->enumReflection->name.name), true);
            return enumName+"::"+enumName;
        }
        case BaseField::TYPE_POINTER:
            return QString(static_cast<const PointerField*>(field)->targetClass) + " *";
        case BaseField::TYPE_COMPOSITE:
            return toCamelCase(static_cast<const CompositeField *>(field)->typeName, true);
        case BaseField::TYPE_COMPOSITE_ARRAY:
            return QString("std::vector<") + toCamelCase(static_cast<const CompositeField *>(field)->typeName, true) + ">";
        default:
            return "/* Something is not supported by generator */";
    }
}
Exemplo n.º 3
0
QString BaseGenerator::getDefaultElementValue(const BaseField *field)
{    
    switch(type)
    {
        case  BaseField::TYPE_INT:
        case (BaseField::TYPE_INT | BaseField::TYPE_VECTOR_BIT):
            return QString::number(static_cast<const IntField *>(field)->defaultValue);
        case  BaseField::TYPE_DOUBLE:
        case (BaseField::TYPE_DOUBLE | BaseField::TYPE_VECTOR_BIT):
            return QString::number(static_cast<const DoubleField *>(field)->defaultValue);
        case BaseField::TYPE_BOOL:
            return static_cast<const BoolField *>(field)->defaultValue ? "true" : "false";
        case BaseField::TYPE_ENUM:
            return QString::number(static_cast<const EnumField *>(field)->defaultValue);
        case BaseField::TYPE_STRING:
            return QString("\"") + QString::fromStdString (static_cast<const StringField  *>(field)->defaultValue) + QString("\"");
        case BaseField::TYPE_WSTRING:
        {
            QString result;
            result += "L\"";
            std::wstring wstr = static_cast<const WStringField *>(field)->defaultValue;
            for (std::wstring::size_type i = 0; i < wstr.size(); i++)
            {
                uint32_t c = (uint32_t)wstr[i];
                result += "\\u";
                result += QString("%1").arg((uint)c, 4, 16, QLatin1Char('0'));
            }
            result += "\"";
            return result;
        }
        case BaseField::TYPE_POINTER:
            return "NULL";
        case BaseField::TYPE_COMPOSITE:
        {
            const CompositeField *cfield = static_cast<const CompositeField *>(field);
            const Reflection *referent = cfield->reflection;
            return toCamelCase(referent->name.name, true) + "()";
        }
        case BaseField::TYPE_COMPOSITE_ARRAY:
        {
            const CompositeArrayField *cafield = static_cast<const CompositeArrayField *>(field);
            const Reflection *referent = cafield->reflection;
            return QString("std::vector<") + toCamelCase(referent->name.name, true) + ">()";
        }
        default:
            return "/* default value is not supported by generator */";
    }
}
Exemplo n.º 4
0
QString StringKit::toPascalCase(const QString& str)
{
  if (str.isEmpty())
    return "";

  QString tmpStr = toCamelCase(str);
  tmpStr[0] = tmpStr.at(0).toUpper();
  return tmpStr;
}
void ClassTemplate::addTypelistGetter(const QString &aName, const QString &aValue)
{
	QStringList types = aValue.split(";");
	if(types.size() == 1 && types[0] == "empty")
		types = QStringList{};
	QString content = "{";
	for(int i = 0; i < types.size(); i++)
	{		
		QString item = types[i];		
		item = item.remove(" ");
		if(item.contains("-component"))			
			localIncludes_.insert("generated/" + toCamelCase(item, true));
		content += toCamelCase(item, true);
		content += "::TYPE";
		if(i != types.size() - 1)
			content += ", ";
	}
	content += "}";	
	content = "\tQStringList list = QStringList" + content  + ";\n";		
	content += "\treturn list;\n";
	addMethod("QStringList", aName, "", content, true);
}
Exemplo n.º 6
0
std::string toLowerCamelCase(const std::string& s) {
  std::string result = toCamelCase(s);
  result = boost::regex_replace(result,boost::regex("^([A-Z])"),"\\l$1");
  return result;
}
Exemplo n.º 7
0
std::string toUpperCamelCase(const std::string& s) {
  std::string result = toCamelCase(s);
  result = boost::regex_replace(result,boost::regex("^([a-z])"),"\\u$1");
  return result;
}
Exemplo n.º 8
0
QString BaseGenerator::getWidgetNameForName(QString name)
{
    return toCamelCase(name, true) + getWidgetSuffixForType(BaseField::TYPE_COMPOSITE);
}
void ClassTemplate::resolveStringProperty(ClassProperty *aProperty, QSet<ClassProperty *> &aCleanSet,
										  QSet<ClassProperty *> &aCallstack, QSet<ClassProperty *>aAll)
{
	//qDebug() << "resolveStringProperty " << aProperty->name();
	if(aCallstack.contains(aProperty))
	{
		qDebug() << "Property tokens circular dependency! " + aProperty->name();
		return;
	}

	if(aCleanSet.contains(aProperty))
	{
		//resolved already
		return;
	}

	QString value = aProperty->defaultValue();
	if((!value.contains("{") && !value.contains("}")) || aProperty->isConst())
	{
		aCleanSet.insert(aProperty);
		if(!aProperty->isConst())
			initializationSection_ +=
				"\t" + aProperty->name() + " = " + wrap(value) + ";\n";
		//nothing to resolve
		return;
	}

	QRegularExpression token("\\{([^\\}]+)\\}");
	QString temp = value;
	QRegularExpressionMatchIterator i = token.globalMatch(value);
	while (i.hasNext())
	{
		QRegularExpressionMatch match = i.next();
		QString toReplace = match.captured(0);
		if(toReplace == "{a}")
			continue;//skipping article
		QString token = toReplace;
		token = token.replace("{", "");
		token = token.replace("}", "");
		ClassProperty *property = propertyByName(token, aAll);
		if(!property)
		{
			temp = temp.replace(toReplace, "\" + " + toCamelCase(token, false) + "() + \"");
		}
		else if(aCleanSet.contains(property))
		{
			temp = temp.replace(toReplace, "\" + " + toCamelCase(token, false) + "() + \"");
		}
		else
		{
			/*aCallstack.insert(aProperty);
			resolveStringProperty(property, aCleanSet, aCallstack, aAll);//recursion
			temp = temp.replace(toReplace, "\" + " + toCamelCase(token, false) + "_ + \"");
			aCallstack.remove(aProperty);*/
			qDebug() << "Pattern contains non-const tokens: " + value;
		}
	}

	aCleanSet.insert(aProperty);	
	initializationSection_ +=
			"\t" + aProperty->name() + " = " + wrap(temp) + ";\n";
}