FX_BOOL CFDE_CSSStyleSheet::LoadFromSyntax(IFDE_CSSSyntaxParser* pSyntax) { Reset(); m_pAllocator = FX_CreateAllocator(FX_ALLOCTYPE_Static, 1024, 0); if (m_pAllocator == NULL) { return FALSE; } FDE_CSSSYNTAXSTATUS eStatus; do { switch (eStatus = pSyntax->DoSyntaxParse()) { case FDE_CSSSYNTAXSTATUS_StyleRule: eStatus = LoadStyleRule(pSyntax, m_RuleArray); break; case FDE_CSSSYNTAXSTATUS_MediaRule: eStatus = LoadMediaRule(pSyntax); break; case FDE_CSSSYNTAXSTATUS_FontFaceRule: eStatus = LoadFontFaceRule(pSyntax, m_RuleArray); break; case FDE_CSSSYNTAXSTATUS_ImportRule: eStatus = LoadImportRule(pSyntax); break; case FDE_CSSSYNTAXSTATUS_PageRule: eStatus = LoadPageRule(pSyntax); break; default: break; } } while (eStatus >= FDE_CSSSYNTAXSTATUS_None); m_Selectors.RemoveAll(); m_StringCache.RemoveAll(); return eStatus != FDE_CSSSYNTAXSTATUS_Error; }
void CFDE_TxtEdtBuf::ResetChunkBuffer(int32_t nDefChunkCount, int32_t nChunkSize) { FXSYS_assert(nChunkSize); FXSYS_assert(nDefChunkCount); if (m_pAllocator) { m_pAllocator->Release(); m_pAllocator = NULL; } m_Chunks.RemoveAll(); m_nChunkSize = nChunkSize; int32_t nChunkLength = sizeof(FDE_CHUNKHEADER) + (m_nChunkSize - 1) * sizeof(FX_WCHAR); m_pAllocator = FX_CreateAllocator(FX_ALLOCTYPE_Fixed, nDefChunkCount, nChunkLength); FXSYS_assert(m_pAllocator); FDE_LPCHUNKHEADER lpChunkHeader = (FDE_LPCHUNKHEADER)m_pAllocator->Alloc(nChunkLength); FXSYS_assert(lpChunkHeader); lpChunkHeader->nUsed = 0; m_Chunks.Add(lpChunkHeader); m_nTotal = 0; }