Esempio n. 1
0
bool ModuleParser::parseGlobalType(Global& global)
{
    uint8_t mutability;
    if (!parseValueType(global.type) || !parseVarUInt1(mutability))
        return false;
    global.mutability = static_cast<Global::Mutability>(mutability);
    return true;
}
Esempio n. 2
0
/*  parseAttributes
 *
 *  Parse the various attributes of an XML-styled config file entry
 */
LOCAL char*
parseAttributes(
    tOptions*           pOpts,
    char*               pzText,
    tOptionLoadMode*    pMode,
    tOptionValue*       pType )
{
    size_t lenLoadType = strlen( zLoadType );
    size_t lenKeyWords = strlen( zKeyWords );
    size_t lenSetMem   = strlen( zSetMembers );

    do  {
        switch (*pzText) {
        case '/': pType->valType = OPARG_TYPE_NONE;
        case '>': return pzText;

        default:
        case NUL: return NULL;

        case ' ':
        case '\t':
        case '\n':
        case '\f':
        case '\r':
        case '\v':
            break;
        }

        while (isspace( (int)*++pzText ))   ;

        if (strncmp( pzText, zLoadType, lenLoadType ) == 0) {
            pzText = parseValueType( pzText+lenLoadType, pType );
            continue;
        }

        if (strncmp( pzText, zKeyWords, lenKeyWords ) == 0) {
            pzText = parseKeyWordType( pOpts, pzText+lenKeyWords, pType );
            continue;
        }

        if (strncmp( pzText, zSetMembers, lenSetMem ) == 0) {
            pzText = parseSetMemType( pOpts, pzText+lenSetMem, pType );
            continue;
        }

        pzText = parseLoadMode( pzText, pMode );
    } while (pzText != NULL);

    return pzText;
}
Esempio n. 3
0
/*  parseAttributes
 *
 *  Parse the various attributes of an XML-styled config file entry
 */
LOCAL char*
parseAttributes(
    tOptions*           pOpts,
    char*               pzText,
    tOptionLoadMode*    pMode,
    tOptionValue*       pType )
{
    size_t len;

    do  {
        if (! IS_WHITESPACE_CHAR(*pzText))
            switch (*pzText) {
            case '/': pType->valType = OPARG_TYPE_NONE;
            case '>': return pzText;

            default:
            case NUL: return NULL;
            }

        while (IS_WHITESPACE_CHAR(*++pzText))     ;
        len = 0;
        while (IS_LOWER_CASE_CHAR(pzText[len]))   len++;

        switch (find_xat_attribute_id(pzText, len)) {
        case XAT_KWD_TYPE:
            pzText = parseValueType( pzText+len, pType );
            break;

        case XAT_KWD_WORDS:
            pzText = parseKeyWordType( pOpts, pzText+len, pType );
            break;

        case XAT_KWD_MEMBERS:
            pzText = parseSetMemType( pOpts, pzText+len, pType );
            break;

        case XAT_KWD_COOKED:
            pzText += len;
            if (! IS_END_XML_TOKEN_CHAR(*pzText))
                goto invalid_kwd;

            *pMode = OPTION_LOAD_COOKED;
            break;

        case XAT_KWD_UNCOOKED:
            pzText += len;
            if (! IS_END_XML_TOKEN_CHAR(*pzText))
                goto invalid_kwd;

            *pMode = OPTION_LOAD_UNCOOKED;
            break;

        case XAT_KWD_KEEP:
            pzText += len;
            if (! IS_END_XML_TOKEN_CHAR(*pzText))
                goto invalid_kwd;

            *pMode = OPTION_LOAD_KEEP;
            break;

        default:
        case XAT_KWD_INVALID:
        invalid_kwd:
            pType->valType = OPARG_TYPE_NONE;
            return skipUnknown( pzText );
        }
    } while (pzText != NULL);

    return pzText;
}