コード例 #1
0
ファイル: XPathParser.cpp プロジェクト: jackiekaon/owb-mirror
int Parser::lex(void* data)
{
    YYSTYPE* yylval = static_cast<YYSTYPE*>(data);
    Token tok = nextToken();

    switch (tok.type) {
    case AXISNAME:
        yylval->axis = tok.axis;
        break;
    case MULOP:
    case RELOP:
        yylval->numop = tok.numop;
        break;
    case EQOP:
        yylval->eqop = tok.eqop;
        break;
    case NODETYPE:
    case PI:
    case FUNCTIONNAME:
    case LITERAL:
    case VARIABLEREFERENCE:
    case NUMBER:
    case NAMETEST:
        yylval->str = new String(tok.str);
        registerString(yylval->str);
        break;
    }

    return tok.type;
}
コード例 #2
0
ファイル: measure.c プロジェクト: RoaldFre/ManyParticlesMC
Task measurementTask(Measurement *measurement)
{
	/* We must make a copy because given pointer is not guaranteed to 
	 * remain valid. */
	MeasInitialData *mid = malloc(sizeof(*mid));
	memcpy(&mid->meas, measurement, sizeof(*measurement));
	mid->strBuf = NULL;

	/* Make task */
	Task task;
	task.initialData = mid;
	task.start = &measStart;
	task.tick  = &measTick;
	task.stop  = &measStop;

	int strSize = measurement->measConf.renderStrBufSize;
	if (strSize <= 0)
		return task; /* No string stuff necessary */

	/* Also create a render task to render the string */
	char *string = malloc(strSize);
	string[0] = '\0';
	mid->strBuf = string;
	RenderStringConfig rsc;
	rsc.string = string;
	rsc.x = measurement->measConf.renderStrX;
	rsc.y = measurement->measConf.renderStrY;

	registerString(&rsc);

	return task;
}
コード例 #3
0
ファイル: token.c プロジェクト: ABratovic/open-watcom-v2
static WicErrors scanComment(pTokData tokData)
{
    while (1) {
        if (NEXT_CHAR == '*') {
            pushGetNextChar();
            if (NEXT_CHAR == '/') {
                STATE = TS_START;
                getNextChar();
                popChars(1);
                goto NormalReturn;
            }
        } else if (NEXT_CHAR == '\n') {
            getNextChar();
            goto NormalReturn;
        } else if ((char) NEXT_CHAR == (char) EOF) {
            STATE = TS_START;
            return RERR_EOF_IN_COMMENT;
        } else {
            pushGetNextChar();
        }
    }

    NormalReturn:
        tokData->code = Y_PRE_COMMENT;
        tokData->repr.string = registerString(wicStrdup(currTok), FREE_STRING);
        return ERR_NONE;
}
コード例 #4
0
// http://www.w3.org/TR/css3-syntax/#consume-a-name
CSSParserString CSSTokenizer::consumeName()
{
    // Names without escapes get handled without allocations
    for (unsigned size = 0; ; ++size) {
        UChar cc = m_input.peekWithoutReplacement(size);
        if (cc == '\0' || cc == '\\')
            break;
        if (!isNameChar(cc)) {
            unsigned startOffset = m_input.offset();
            m_input.advance(size);
            return m_input.rangeAsCSSParserString(startOffset, size);
        }
    }

    StringBuilder result;
    while (true) {
        UChar cc = consume();
        if (isNameChar(cc)) {
            result.append(cc);
            continue;
        }
        if (twoCharsAreValidEscape(cc, m_input.nextInputChar())) {
            result.append(consumeEscape());
            continue;
        }
        reconsume(cc);
        return registerString(result.toString());
    }
}
コード例 #5
0
ファイル: package.c プロジェクト: caizongchao/open-mika
w_package createPackage(w_string name, w_instance loader) {
  w_package p = allocClearedMem(sizeof(w_Package));
  p->name = registerString(name);
  p->label = "package";
  p->loader = loader;

  return p;
}
コード例 #6
0
InspectorState::InspectorState(InspectorClient* client)
    : m_client(client)
{
    registerBoolean(monitoringXHR, false, "monitoringXHR", "xhrMonitor");
    registerBoolean(resourceTrackingEnabled, false, "resourceTrackingEnabled", (const char*)0);
    registerBoolean(resourceTrackingAlwaysEnabled, false, (const char*)0, "resourceTrackingEnabled");
    registerBoolean(timelineProfilerEnabled, false, "timelineProfilerEnabled", (const char*)0);
    registerBoolean(searchingForNode, false, "searchingForNodeEnabled", (const char*)0);
    registerBoolean(profilerAlwaysEnabled, false, (const char*)0, "profilerEnabled");
    registerString(frontendSettings, "", (const char*)0, "frontendSettings");
    registerBoolean(debuggerAlwaysEnabled, false, (const char*)0, "debuggerEnabled");
    registerString(lastActivePanel, InspectorController::LastActivePanel, (const char*)0, "lastActivePanel");
    registerBoolean(inspectorStartsAttached, true, (const char*)0, "InspectorStartsAttached");
    registerLong(inspectorAttachedHeight, InspectorController::defaultAttachedHeight, (const char*)0, "inspectorAttachedHeight");
    registerLong(pauseOnExceptionsState, 0, "pauseOnExceptionsState", (const char*)0);
    registerBoolean(consoleMessagesEnabled, false, "consoleMessagesEnabled", (const char*)0);
}
コード例 #7
0
ファイル: MapStyle_P.cpp プロジェクト: Congle/OsmAnd-core
uint32_t OsmAnd::MapStyle_P::lookupStringId( const QString& value )
{
    uint32_t id;
    if(lookupStringId(value, id))
        return id;

    return registerString(value);
}
コード例 #8
0
// http://dev.w3.org/csswg/css-syntax/#consume-url-token
CSSParserToken CSSTokenizer::consumeUrlToken()
{
    consumeUntilNonWhitespace();

    // URL tokens without escapes get handled without allocations
    for (unsigned size = 0; ; size++) {
        UChar cc = m_input.peekWithoutReplacement(size);
        if (cc == ')') {
            unsigned startOffset = m_input.offset();
            m_input.advance(size + 1);
            return CSSParserToken(UrlToken, m_input.rangeAsCSSParserString(startOffset, size));
        }
        if (cc <= ' ' || cc == '\\' || cc == '"' || cc == '\'' || cc == '(' || cc == '\x7f')
            break;
    }

    StringBuilder result;
    while (true) {
        UChar cc = consume();
        if (cc == ')' || cc == kEndOfFileMarker)
            return CSSParserToken(UrlToken, registerString(result.toString()));

        if (isHTMLSpace(cc)) {
            consumeUntilNonWhitespace();
            if (consumeIfNext(')') || m_input.nextInputChar() == kEndOfFileMarker)
                return CSSParserToken(UrlToken, registerString(result.toString()));
            break;
        }

        if (cc == '"' || cc == '\'' || cc == '(' || isNonPrintableCodePoint(cc))
            break;

        if (cc == '\\') {
            if (twoCharsAreValidEscape(cc, m_input.nextInputChar())) {
                result.append(consumeEscape());
                continue;
            }
            break;
        }

        result.append(cc);
    }

    consumeBadUrlRemnants();
    return CSSParserToken(BadUrlToken);
}
コード例 #9
0
ファイル: token.c プロジェクト: ABratovic/open-watcom-v2
pToken createIDTokenAfter( char *str, pTokPos pos) {
    pToken tok = createToken(createTokData(), dupTokPos(pos, NULL));
    tok->pos->spacesBefore = 1;
    tok->pos->linesBefore = 0;
    tok->data->code = Y_ID;
    tok->data->repr.string = registerString(wicStrdup(str), FREE_STRING);
    return tok;
}
コード例 #10
0
void HeapGraphSerializer::addRootNode()
{
    for (size_t i = 0; i < m_roots.size(); i++)
        reportEdgeImpl(toNodeId(m_roots[i]), 0, m_edgeTypes[WTF::PointerMember]);

    m_nodes->addItem(registerString("Root"));
    m_nodes->addItem(0);
    m_nodes->addItem(s_firstNodeId + m_address2NodeIdMap.size() + m_leafCount);
    m_nodes->addItem(0);
    m_nodes->addItem(m_roots.size());
}
コード例 #11
0
void HeapGraphSerializer::reportEdgeImpl(const int toNodeId, const char* name, int memberType)
{
    ASSERT(memberType >= 0);
    ASSERT(memberType < WTF::LastMemberTypeEntry);

    m_edges->addItem(memberType);
    m_edges->addItem(registerString(name));
    m_edges->addItem(toNodeId);

    ++m_nodeEdgesCount;
}
コード例 #12
0
ファイル: InspectorState.cpp プロジェクト: dslab-epfl/warr
InspectorState::InspectorState(InspectorClient* client)
    : m_client(client)
{
    registerBoolean(monitoringXHR, false, "monitoringXHREnabled", "xhrMonitor");
    registerBoolean(timelineProfilerEnabled, false, "timelineProfilerEnabled", String());
    registerBoolean(searchingForNode, false, "searchingForNodeEnabled", String());
    registerBoolean(profilerAlwaysEnabled, false, String(), "profilerEnabled");
    registerBoolean(debuggerAlwaysEnabled, false, String(), "debuggerEnabled");
    registerBoolean(inspectorStartsAttached, true, String(), "InspectorStartsAttached");
    registerLong(inspectorAttachedHeight, InspectorController::defaultAttachedHeight, String(), "inspectorAttachedHeight");
    registerLong(pauseOnExceptionsState, 0, "pauseOnExceptionsState", String());
    registerBoolean(consoleMessagesEnabled, false, "consoleMessagesEnabled", String());
    registerBoolean(userInitiatedProfiling, false, "userInitiatedProfiling", String());
    registerObject(stickyBreakpoints, String(), String());
    registerString(injectedScriptSource, String(), String(), String());
}
コード例 #13
0
ファイル: Types.cpp プロジェクト: cguebert/Panda
	void registerAllTypes(asIScriptEngine* engine)
	{
		registerColor(engine);
		registerInt(engine);
		registerIntVector(engine);
		registerFloat(engine);
		registerFloatVector(engine);
		registerGradient(engine);
		registerPoint(engine);
		registerRect(engine);
		registerString(engine);
		registerMesh(engine); // After Point
		registerPath(engine); // After Point
		registerPolygon(engine); // After Path

		registerAnimation(engine);
	}
コード例 #14
0
ファイル: token.c プロジェクト: ABratovic/open-watcom-v2
static WicErrors scanCPlusPlusComment(pTokData tokData)
{
    char prevChar = 0;
    while (1) {
        if (NEXT_CHAR == '\n') {
            tokData->code = Y_PRE_COMMENT;
            tokData->repr.string = registerString(wicStrdup(currTok),
                                    FREE_STRING);
            if (prevChar != '\\') {
                STATE = TS_START;
            }
            return ERR_NONE;
        } else {
            prevChar = NEXT_CHAR;
            pushGetNextChar();
        }
    }
}
コード例 #15
0
// http://dev.w3.org/csswg/css-syntax/#consume-a-string-token
CSSParserToken CSSTokenizer::consumeStringTokenUntil(UChar endingCodePoint)
{
    // Strings without escapes get handled without allocations
    for (unsigned size = 0; ; size++) {
        UChar cc = m_input.peekWithoutReplacement(size);
        if (cc == endingCodePoint) {
            unsigned startOffset = m_input.offset();
            m_input.advance(size + 1);
            return CSSParserToken(StringToken, m_input.rangeAsCSSParserString(startOffset, size));
        }
        if (isNewLine(cc)) {
            m_input.advance(size);
            return CSSParserToken(BadStringToken);
        }
        if (cc == '\0' || cc == '\\')
            break;
    }

    StringBuilder output;
    while (true) {
        UChar cc = consume();
        if (cc == endingCodePoint || cc == kEndOfFileMarker)
            return CSSParserToken(StringToken, registerString(output.toString()));
        if (isNewLine(cc)) {
            reconsume(cc);
            return CSSParserToken(BadStringToken);
        }
        if (cc == '\\') {
            if (m_input.nextInputChar() == kEndOfFileMarker)
                continue;
            if (isNewLine(m_input.nextInputChar()))
                consumeSingleWhitespaceIfNext(); // This handles \r\n for us
            else
                output.append(consumeEscape());
        } else {
            output.append(cc);
        }
    }
}
コード例 #16
0
ファイル: token.c プロジェクト: ABratovic/open-watcom-v2
static WicErrors scanIncludeFileName(pTokData tokData, char termChar) {
    WicErrors retVal = ERR_NONE;

    for( ;; ) {
        if (NEXT_CHAR == '\n' || NEXT_CHAR == (char) EOF) {
            retVal = RERR_INV_INCLUDE_FILE_NAME;
            break;
        }
        if( NEXT_CHAR == termChar ) {
            getNextChar();
            break;
        }

        pushGetNextChar();
    }

    if (retVal == ERR_NONE) {
        tokData->code = Y_INCLUDE_FILE_NAME;
        tokData->repr.string = registerString(wicStrdup(currTok), FREE_STRING);
    }
    return( retVal );
}
コード例 #17
0
HeapGraphSerializer::HeapGraphSerializer(Client* client)
    : m_client(client)
    , m_strings(Strings::create())
    , m_edges(Edges::create())
    , m_nodeEdgesCount(0)
    , m_nodes(Nodes::create())
    , m_baseToRealNodeIdMap(BaseToRealNodeIdMap::create())
    , m_typeStrings(InspectorObject::create())
    , m_leafCount(0)
{
    ASSERT(m_client);
    m_strings->addItem(String()); // An empty string with 0 index.

    memset(m_edgeTypes, 0, sizeof(m_edgeTypes));

    m_edgeTypes[WTF::PointerMember] = registerTypeString("weak");
    m_edgeTypes[WTF::RetainingPointer] = registerTypeString("property");

    // FIXME: It is used as a magic constant for 'object' node type.
    registerTypeString("object");

    m_unknownClassNameId = registerString("unknown");
}
コード例 #18
0
ファイル: package.c プロジェクト: caizongchao/open-mika
/**
 ** Get the w_Package for a class, creating it if it does not already exist.
 */
w_package getPackageForClazz(w_clazz clazz, w_instance loader) {
  w_string class_name = clazz->dotified;
  w_instance effective_loader = loader ? loader : systemClassLoader;
  w_hashtable ht = loader2packages(effective_loader);
  w_string package_name;
  w_int i;
  w_int j;
  w_package p;

  for (i = 0; string_char(class_name, i) == '['; ++i); 
  for (j = string_length(class_name) - 1; string_char(class_name, j) != '.'; --j); 
  package_name = j > i ? w_substring(class_name, i, j - i) : registerString(string_empty);
  ht_lock(ht);
  p = (w_package)ht_read_no_lock(ht, (w_word)package_name);
  if (!p) {
    p = createPackage(package_name, effective_loader);
    ht_write_no_lock(ht, (w_word)package_name, (w_word)p);
  }
  clazz->package = p;
  ht_unlock(ht);
  deregisterString(package_name);

  return p;
}
コード例 #19
0
ファイル: token.c プロジェクト: ABratovic/open-watcom-v2
pToken createPLUSToken(void) {
    pToken tok = createToken(createTokData(), NULL);
    tok->data->code = Y_PLUS;
    tok->data->repr.string = registerString("+", !FREE_STRING);
    return tok;
}
コード例 #20
0
int HeapGraphSerializer::registerTypeString(const char* string)
{
    int stringId = registerString(string);
    m_typeStrings->setNumber(string, stringId);
    return stringId;
}
コード例 #21
0
ファイル: token.c プロジェクト: ABratovic/open-watcom-v2
WicErrors getNextToken(pToken tok)
{
    pTokTab tokTabPtr;
    WicErrors retVal = ERR_NONE;
    static long tokAfterDefine = 2;  // used to flag '(' in #define x( as a
                                  // special parentheses
    int temp;

    assert(currTokF >= 0);

    currTokLen = 0;
    currTok[currTokLen] = 0;
    TOK_NUM_AFTER_NEW_LINE++;   /* Used for #preprocessor directives */
    tokAfterDefine++;   /* Used for #preprocessor directives */

    g_currLineNum = LINE_NUM;
    g_currColNum = COL_NUM;

    /* When getNextToken gets called, STATE may be one of:
        TS_START, TS_COMMENT. */

    temp = skipBlank();
    if (STATE == TS_START) {
        setTokPos(
            tok->pos,
            TOK_FILE_NAME,
            currTokF,
            LINE_NUM,
            COL_NUM,
            LINES_BEFORE,
            temp,
            orderLineNum
        );
        while (NEXT_CHAR == '') {
            getNextChar();
            tok->pos->spacesBefore = skipBlank();
        }

        if (isalpha(NEXT_CHAR) || NEXT_CHAR == '_') {
            if (!scanId()) {
                char saveChar = NEXT_CHAR;
                currTokLen = 0;
                currTok[currTokLen] = 0;
                getNextChar();
                if (saveChar == '"') {
                    retVal = scanStr(tok->data);
                } else {
                    retVal = scanChar(tok->data);
                }
                goto Return;
            }
        } else if (isdigit(NEXT_CHAR)) {
            retVal = scanNum(tok->data);
            goto Return;
        } else switch (NEXT_CHAR) {
            case '\'':
                getNextChar();
                retVal = scanChar(tok->data);
                goto Return;
                break;

            case '"':
                if (currLineIsInclude) {
                    getNextChar();
                    retVal = scanIncludeFileName(tok->data, '"');
                    goto Return;
                } else {
                    getNextChar();
                    retVal = scanStr(tok->data);
                    goto Return;
                    break;
                }

            case '\n':
                pushGetNextChar();
                currLineIsInclude = 0;
                break;

            case '!':
                pushGetNextChar();
                if (NEXT_CHAR == '=') {
                    pushGetNextChar();
                }
                break;

            case '#':
                pushGetNextChar();
                if (TOK_NUM_AFTER_NEW_LINE == 1) {
                    skipBlank();
                    if (isalpha(NEXT_CHAR) || NEXT_CHAR == '_') {
                        scanId();
                    } else {
                        tok->data->code = Y_PRE_NULL;
                        retVal = ERR_NONE;
                        goto Return;
                    }
                } else {
                    if (NEXT_CHAR == '#') {
                        pushGetNextChar();
                    }
                }
                break;

            case '%':
                pushGetNextChar();
                if (NEXT_CHAR == '=') {
                    pushGetNextChar();
                }
                break;

            case '&':
                pushGetNextChar();
                if (NEXT_CHAR == '&') {
                    pushGetNextChar();
                    if (NEXT_CHAR == '=') {
                        pushGetNextChar();
                    }
                }
                break;

            case '(':
                pushGetNextChar();
                break;

            case ')':
                pushGetNextChar();
                break;

            case '*':
                pushGetNextChar();
                if (NEXT_CHAR == '=') {
                    pushGetNextChar();
                }
                break;

            case '+':
                pushGetNextChar();
                if (NEXT_CHAR == '+') {
                    pushGetNextChar();
                } else if (NEXT_CHAR == '=') {
                    pushGetNextChar();
                }
                break;

            case ',':
                pushGetNextChar();
                break;

            case '-':
                pushGetNextChar();
                if (NEXT_CHAR == '-') {
                    pushGetNextChar();
                } else if (NEXT_CHAR == '=') {
                    pushGetNextChar();
                } else if (NEXT_CHAR == '>') {
                    pushGetNextChar();
                }
                break;

            case '.':
                pushGetNextChar();
                if (NEXT_CHAR == '.') {
                    pushGetNextChar();
                    if (NEXT_CHAR == '.') {
                        pushGetNextChar();
                    } else {
                        retVal = RERR_INV_CHAR;
                        goto Return;
                    }
                } else if (isdigit(NEXT_CHAR)) {
                    if (pushFloatDotExp(tok->data, 1)) {
                        retVal = convStr2Const(tok->data);
                        goto Return;
                    } else {
                        retVal = RERR_INV_CHAR;
                        goto Return;
                    }
                }

                break;

            case '/':
                pushGetNextChar();
                if (NEXT_CHAR == '=') {
                    pushGetNextChar();
                } else if (NEXT_CHAR == '*') {          /* comment begin */
                    popChars(1);
                    STATE = TS_COMMENT;
                    getNextChar();
                    retVal = scanComment(tok->data);
                    goto Return;
                } else if (NEXT_CHAR == '/') {
                    popChars(1);
                    STATE = TS_COMMENT;
                    getNextChar();
                    retVal = scanCPlusPlusComment(tok->data);
                    goto Return;
                }
                break;

            case ':':
                pushGetNextChar();
                if (NEXT_CHAR == '>') {
                    pushGetNextChar();
                }
                break;

            case ';':
                pushGetNextChar();
                break;

            case '<':
                if (currLineIsInclude) {
                    getNextChar();
                    retVal = scanIncludeFileName(tok->data, '>');
                    goto Return;
                } else {
                    pushGetNextChar();
                    if (NEXT_CHAR == '<') {
                        pushGetNextChar();
                        if (NEXT_CHAR == '=') {
                            pushGetNextChar();
                        }
                    } else if (NEXT_CHAR == '=') {
                        pushGetNextChar();
                    }
                }
                break;

            case '=':
                pushGetNextChar();
                if (NEXT_CHAR == '=') {
                    pushGetNextChar();
                }
                break;

            case '>':
                pushGetNextChar();
                if (NEXT_CHAR == '>') {
                    pushGetNextChar();
                    if (NEXT_CHAR == '=') {
                        pushGetNextChar();
                    }
                } else if (NEXT_CHAR == '=') {
                    pushGetNextChar();
                }
                break;

            case '?':
                pushGetNextChar();
                break;

            case '[':
                pushGetNextChar();
                break;

            case ']':
                pushGetNextChar();
                break;

            case '^':
                pushGetNextChar();
                if (NEXT_CHAR == '=')
                    pushGetNextChar();
                break;

            case '{':
                pushGetNextChar();
                break;

            case '|':
                pushGetNextChar();
                if (NEXT_CHAR == '=') {
                    pushGetNextChar();
                } else if (NEXT_CHAR == '|') {
                    pushGetNextChar();
                }
                break;

            case '}':
                pushGetNextChar();
                break;

            case '~':
                pushGetNextChar();
                break;

            case (char) EOF:
                tok->data->code = Y_EOF;
                retVal = ERR_NONE;
                goto Return;
                break;

            default:
                /* Eat up an ivalid character */
                getNextChar();
                retVal = RERR_INV_CHAR;
                goto Return;
        }

        tokTabPtr = tabLookup(currTok);
        if (tokTabPtr != NULL)
        {
            tok->data->code = tokTabPtr->code;
            if (tok->data->code == Y_PRE_INCLUDE) {
                currLineIsInclude = 1;
            }
            if (tok->data->code == Y_PRE_DEFINE) {
                tokAfterDefine = 0;
            }
            if (tok->data->code == Y_LEFT_PAREN && tokAfterDefine == 2) {
                // the case of #define x(...
                if (tok->pos->spacesBefore == 0) {
                    tok->data->code = Y_PRE_SPECIAL_LEFT_PAREN;
                }
            }
            tok->data->repr.string = registerString(tokTabPtr->name,
                                                  !FREE_STRING);
        }
        else {
            if (currTok[0] == '#') {
                retVal = RERR_INV_PREPROCESSOR;
                goto Return;
            } else {
                tok->data->code = Y_ID;
                tok->data->repr.string = registerString(wicStrdup(currTok),
                                                      FREE_STRING);
            }
        }
    } else if (STATE == TS_COMMENT) {
        setTokPos(tok->pos, TOK_FILE_NAME, currTokF, LINE_NUM, COL_NUM,
              LINES_BEFORE, 0, orderLineNum);
        retVal = scanComment(tok->data);
        goto Return;
    } else {
        assert(0);
    }

    Return:
        if (tok->data->code != Y_PRE_NEWLINE) {
            tok->pos->linesBefore  = tok->pos->lineNum - PREV_TOK_LINE_NUM;
            PREV_TOK_LINE_NUM = tok->pos->lineNum;
        } else {
            tok->pos->linesBefore = 0;
        }
        zapTokPos(g_currPos);
        g_currPos = dupTokPos(tok->pos, NULL);
        return retVal;
}
コード例 #22
0
ファイル: token.c プロジェクト: ABratovic/open-watcom-v2
pToken createCommentToken(char *str, pTokPos pos) {
    pToken tok = createToken(createTokData(), pos);
    tok->data->code = Y_PRE_COMMENT;
    tok->data->repr.string = registerString(str, FREE_STRING);
    return tok;
}
コード例 #23
0
ファイル: token.c プロジェクト: ABratovic/open-watcom-v2
pToken createEQUALToken(void) {
    pToken tok = createToken(createTokData(), NULL);
    tok->data->code = Y_EQUAL;
    tok->data->repr.string = registerString("=", !FREE_STRING);
    return tok;
}