Example #1
0
inline void SaveTokenIdxSetToFile(std::ostream& f,const TokenIdxSet& data)
{
    SaveIntToFile(f, (int)(data.size()));
    for (TokenIdxSet::iterator it = data.begin(); it != data.end(); it++)
    {
        int num = *it;
        SaveIntToFile(f, num);
    }
}
Example #2
0
bool Parser::WriteToCache(wxOutputStream* f)
{
    bool result = false;

    TRACK_THREAD_LOCKER(s_TokensTreeCritical);
    wxCriticalSectionLocker locker(s_TokensTreeCritical);
    THREAD_LOCKER_SUCCESS(s_TokensTreeCritical);

//  Begin saving process

    size_t tcount = m_TokensTree->m_Tokens.size();
    size_t fcount = m_TokensTree->m_FilenamesMap.size();
    size_t i = 0;

    // write cache magic
    f->Write(CACHE_MAGIC, sizeof(CACHE_MAGIC));

    SaveIntToFile(f, fcount); // num parsed files
    SaveIntToFile(f, tcount); // num tokens

    // Filenames
    for (i = 0; i < fcount; ++i)
    {
        SaveIntToFile(f,i);
        SaveStringToFile(f,m_TokensTree->m_FilenamesMap.GetString(i));
    }

    // Tokens

    for (i = 0; i < tcount; ++i)
    {
        TRACE(_T("WriteToCache() : Token #%d, offset %d"),i,f->TellO());
        Token* token = m_TokensTree->at(i);
        SaveIntToFile(f,(token!=0) ? 1 : 0);
        if (token)
            token->SerializeOut(f);
    }

    result = true;

    if (result)
        m_TokensTree->m_Modified = false;

//  End saving process
    return result;
}
Example #3
0
bool Token::SerializeOut(std::ostream& f)
{
    SaveIntToFile(f, m_Self);
    SaveIntToFile(f, m_ParentIndex);
    SaveStringToFile(f, m_Type);
    SaveStringToFile(f, m_ActualType);
    SaveStringToFile(f, m_Name);
    SaveStringToFile(f, m_Args);
    SaveStringToFile(f, m_AncestorsString);
    SaveIntToFile(f, m_FileIdx);
    SaveIntToFile(f, m_Line);
    SaveIntToFile(f, m_ImplFile);
    SaveIntToFile(f, m_ImplLine);
    SaveIntToFile(f, m_Scope);
    SaveIntToFile(f, m_TokenKind);
    SaveIntToFile(f, m_IsOperator ? 1 : 0);
    SaveIntToFile(f, m_IsLocal ? 1 : 0);

    SaveTokenIdxSetToFile(f, m_Ancestors);
    SaveTokenIdxSetToFile(f, m_Children);
    SaveTokenIdxSetToFile(f, m_Descendants);
    return true;
}
Example #4
0
bool Token::SerializeOut(wxFile* f)
{
    SaveIntToFile(f, m_pParent ? m_pParent->m_Int : -1);
    SaveStringToFile(f, m_Type);
    SaveStringToFile(f, m_ActualType);
    SaveStringToFile(f, m_Name);
    SaveStringToFile(f, m_DisplayName);
    SaveStringToFile(f, m_Args);
    SaveStringToFile(f, m_AncestorsString);
    SaveStringToFile(f, m_Filename);
    SaveIntToFile(f, m_Line);
    SaveStringToFile(f, m_ImplFilename);
    SaveIntToFile(f, m_ImplLine);
    SaveIntToFile(f, m_Scope);
    SaveIntToFile(f, m_TokenKind);
    SaveIntToFile(f, m_IsOperator);
    SaveIntToFile(f, m_IsLocal);

    int tcount = (int)m_Ancestors.GetCount();
    SaveIntToFile(f, tcount);
    for (int i = 0; i < tcount; ++i)
    {
        Token* token = m_Ancestors[i];
        SaveIntToFile(f, token->m_Int);
    }

    tcount = (int)m_Children.GetCount();
    SaveIntToFile(f, tcount);
    for (int i = 0; i < tcount; ++i)
    {
        Token* token = m_Children[i];
        SaveIntToFile(f, token->m_Int);
    }
    // parent-child relationship is set in a post-processing step when serializing in
    return true;
}