Exemple #1
0
char *stringValue(Val_t val) {
  s57key_t *key = findKey(val.key);
  strcpy(outstr, "");
  switch (val.type) {
    case A:
    case S:
      strcpy(outstr, val.val.a);
      break;
    case E:
      if (findVal(key, val.val.e) == NULL)
        break;
      strcpy(outstr, findEnum(key, val.val.e));
      break;
    case L: {
      strcpy(outstr, "");
      Lst_t *lst = val.val.l;
      while (lst != NULL) {
        strcat(outstr, findEnum(key, lst->val));
        lst = lst->next;
        if (lst != NULL)
          strcat(outstr, ";");
      }
    }
      break;
    case I:
      sprintf(outstr, "%ld", val.val.i);
      break;
    case F:
      sprintf(outstr, "%g", val.val.f);
      break;
  }
  return outstr;
}
Exemple #2
0
AbstractEnumDataInformation* OsdParser::enumFromXML(const QDomElement& xmlElem, bool isFlags)
{
    if (!mEnumsParsed) //not always needed
        parseEnums();

    QString name = xmlElem.attribute(QLatin1String("name"), i18n("<invalid name>"));
    QString typeStr = xmlElem.attribute(QLatin1String("type"), QString());
    if (typeStr.isEmpty())
    {
        kWarning() << "no type attribute defined";
        return NULL;
    }
    QString enumName = xmlElem.attribute(QLatin1String("enum"), QString());
    if (enumName.isEmpty())
    {
        kWarning() << "no enum attribute defined";
        return NULL;
    }
    EnumDefinition::Ptr def = findEnum(enumName);
    if (!def)
    {
        kWarning() << "no enum with name " << enumName << "found.";
        return NULL;
    }
    PrimitiveDataInformation* prim = PrimitiveFactory::newInstance(name, typeStr);
    if (!prim)
    {
        kWarning() << "primitive type is null!!";
        return NULL;
    }

    if (isFlags)
       return new FlagDataInformation(name, prim, def);
    else
        return new EnumDataInformation(name, prim, def);
}