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; }
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; }
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; }