void Tokenizer::initialize(const Config &config) { QString versionSym = config.getString(CONFIG_VERSIONSYM); QString sourceEncoding = config.getString(CONFIG_SOURCEENCODING); if (sourceEncoding.isEmpty()) sourceEncoding = QLatin1String("ISO-8859-1"); #ifndef QT_NO_TEXTCODEC sourceCodec = QTextCodec::codecForName(sourceEncoding.toLocal8Bit()); #endif comment = new QRegExp("/(?:\\*.*\\*/|/.*\n|/[^\n]*$)"); comment->setMinimal(true); versionX = new QRegExp("$cannot possibly match^"); if (!versionSym.isEmpty()) versionX->setPattern("[ \t]*(?:" + QRegExp::escape(versionSym) + ")[ \t]+\"([^\"]*)\"[ \t]*"); definedX = new QRegExp("defined ?\\(?([A-Z_0-9a-z]+) ?\\)"); QStringList d = config.getStringList(CONFIG_DEFINES); d += "qdoc"; defines = new QRegExp(d.join('|')); falsehoods = new QRegExp(config.getStringList(CONFIG_FALSEHOODS).join('|')); memset(kwordHashTable, 0, sizeof(kwordHashTable)); for (int i = 0; i < Tok_LastKeyword - Tok_FirstKeyword + 1; i++) insertKwordIntoHash(kwords[i], i + 1); ignoredTokensAndDirectives = new QHash<QByteArray, bool>; QStringList tokens = config.getStringList(LANGUAGE_CPP + Config::dot + CONFIG_IGNORETOKENS); foreach (const QString &t, tokens) { const QByteArray tb = t.toLatin1(); ignoredTokensAndDirectives->insert(tb, false); insertKwordIntoHash(tb.data(), -1); } QStringList directives = config.getStringList(LANGUAGE_CPP + Config::dot + CONFIG_IGNOREDIRECTIVES); foreach (const QString &d, directives) { const QByteArray db = d.toLatin1(); ignoredTokensAndDirectives->insert(db, true); insertKwordIntoHash(db.data(), -1); } }