Example #1
0
File: json.c Project: 1100110/dmd
void JsonOut::propertyStorageClass(const char *name, StorageClass stc)
{
    stc &= STCStorageClass;
    if (stc)
    {
        propertyStart(name);
        arrayStart();

        while (stc)
        {   char tmp[20];
            const char *p = StorageClassDeclaration::stcToChars(tmp, stc);
            assert(p);
            assert(strlen(p) < sizeof(tmp) / sizeof(tmp[0]));
            if (p[0] == '@')
            {
                indent();
                stringStart();
                buf->writestring(p);
                stringEnd();
                comma();
            }
            else
                item(p);
        }

        arrayEnd();
    }
}
Example #2
0
File: json.c Project: 1100110/dmd
void JsonOut::property(const char *name, Parameters *parameters)
{
    if (parameters == NULL || parameters->dim == 0)
        return;

    propertyStart(name);
    arrayStart();

    if (parameters)
        for (size_t i = 0; i < parameters->dim; i++)
        {   Parameter *p = (*parameters)[i];
            objectStart();

            if (p->ident)
                property("name", p->ident->toChars());

            property("type", "deco", p->type);

            propertyStorageClass("storageClass", p->storageClass);

            if (p->defaultArg)
                property("default", p->defaultArg->toChars());


            objectEnd();
        }

    arrayEnd();
}
Example #3
0
void JSONParser::parse()
{
  while(_start < data.length())
  {
    //Move through white space
    char firstChar = data.c_str()[_start];

    while(firstChar < 33)
      firstChar = data.c_str()[++_start];

    //Check the first character, if it is an [,],{ or } raise the approriate event
    if(firstChar == '[')
    {
      Vector_each(JSONListener*, itr, _listeners)
        (*itr)->arrayStart();
      _start++;
      gotHeader = false;
    }
    else if(firstChar == ']')