void CFX_BinaryBuf::EstimateSize(FX_STRSIZE size, FX_STRSIZE step) { m_AllocStep = step; if (m_AllocSize >= size) { return; } ExpandBuf(size - m_DataSize); }
void CFX_BinaryBuf::AppendBlock(const void* pBuf, FX_STRSIZE size) { ExpandBuf(size); if (pBuf && m_pBuffer) { FXSYS_memcpy(m_pBuffer + m_DataSize, pBuf, size); } m_DataSize += size; }
void CFX_WideTextBuf::AppendChar(FX_WCHAR ch) { if (m_AllocSize < m_DataSize + (FX_STRSIZE)sizeof(FX_WCHAR)) { ExpandBuf(sizeof(FX_WCHAR)); } ASSERT(m_pBuffer); *(FX_WCHAR*)(m_pBuffer + m_DataSize) = ch; m_DataSize += sizeof(FX_WCHAR); }
void CFX_BinaryBuf::AppendFill(uint8_t byte, FX_STRSIZE count) { ExpandBuf(count); if (!m_pBuffer) { return; } FXSYS_memset(m_pBuffer + m_DataSize, byte, count); m_DataSize += count; }
void CFX_BinaryBuf::InsertBlock(FX_STRSIZE pos, const void* pBuf, FX_STRSIZE size) { ExpandBuf(size); if (!m_pBuffer) { return; } FXSYS_memmove(m_pBuffer + pos + size, m_pBuffer + pos, m_DataSize - pos); if (pBuf) { FXSYS_memcpy(m_pBuffer + pos, pBuf, size); } m_DataSize += size; }
void CFX_BinaryBuf::CopyData(const void* pStr, FX_STRSIZE size) { if (size == 0) { m_DataSize = 0; return; } if (m_AllocSize < size) { ExpandBuf(size - m_DataSize); } if (!m_pBuffer) { return; } FXSYS_memcpy(m_pBuffer, pStr, size); m_DataSize = size; }
CFX_WideTextBuf& CFX_WideTextBuf::operator<<(double f) { char buf[32]; FX_STRSIZE len = FX_ftoa((FX_FLOAT)f, buf); if (m_AllocSize < m_DataSize + (FX_STRSIZE)(len * sizeof(FX_WCHAR))) { ExpandBuf(len * sizeof(FX_WCHAR)); } ASSERT(m_pBuffer); FX_WCHAR* str = (FX_WCHAR*)(m_pBuffer + m_DataSize); for (FX_STRSIZE i = 0; i < len; i++) { *str++ = buf[i]; } m_DataSize += len * sizeof(FX_WCHAR); return *this; }
CFX_WideTextBuf& CFX_WideTextBuf::operator<<(int i) { char buf[32]; FXSYS_itoa(i, buf, 10); FX_STRSIZE len = FXSYS_strlen(buf); if (m_AllocSize < m_DataSize + (FX_STRSIZE)(len * sizeof(FX_WCHAR))) { ExpandBuf(len * sizeof(FX_WCHAR)); } ASSERT(m_pBuffer); FX_WCHAR* str = (FX_WCHAR*)(m_pBuffer + m_DataSize); for (FX_STRSIZE j = 0; j < len; j++) { *str++ = buf[j]; } m_DataSize += len * sizeof(FX_WCHAR); return *this; }
int32_t CFDE_CSSTextBuf::LoadFromStream(IFX_Stream* pTxtStream, int32_t iStreamOffset, int32_t iMaxChars, FX_BOOL& bEOS) { ASSERT(iStreamOffset >= 0 && iMaxChars > 0); Clear(); m_bExtBuf = FALSE; if (!ExpandBuf(iMaxChars)) { return 0; } if (pTxtStream->GetPosition() != iStreamOffset) { pTxtStream->Seek(FX_STREAMSEEK_Begin, iStreamOffset); } m_iDatLen = pTxtStream->ReadString(m_pBuffer, iMaxChars, bEOS); return m_iDatLen; }
FX_BOOL CFDE_CSSTextBuf::EstimateSize(int32_t iAllocSize) { FXSYS_assert(iAllocSize > 0); Clear(); m_bExtBuf = FALSE; return ExpandBuf(iAllocSize); }
U8 *FileRead(U8 *filename,I64 *_size=NULL,I64 *_attr=NULL,Bool raw=FALSE) { CHashGeneric *temph; U8 *absname,*altname,*curname,*result=NULL; I64 i,size=0,attr=0; CFileAccess *fa; CArcCompress *ac=NULL; if (_attr) *_attr=0; absname=FileNameAbs(filename); altname=ToggleZorNotZ(absname); if (!raw && ((temph=HashFind(absname,adam_task->hash_table,HTT_FILE))|| (temph=HashFind(altname,adam_task->hash_table,HTT_FILE)))) { if (FileAttr(absname) & _ATTR_COMPRESSED) { ac=temph->user_data0; if (_size) *_size=ac->expanded_size; if (_attr) *_attr=FileAttr(absname,*_attr); result=ExpandBuf(ac); } else { result=MAlloc(temph->user_data1+1); MemCpy(result,temph->user_data0,temph->user_data1); result[temph->user_data1]=0; //Terminate if (_size) *_size=temph->user_data1; } } else { for (i=0;i<2 && !result;i++) {//Try name, then altname if (!i) curname=absname; else curname=altname; if (fa=FileAccessNew(curname)) { switch (fa->p->type) { case PT_REDSEA: result=RedSeaFSFileRead(fa->p,Fs->cur_dir,fa->mask,&size,&attr,raw,&ac); break; case PT_FAT32: result=FAT32FileRead(fa->p,Fs->cur_dir,fa->mask,&size,&attr,raw,&ac); break; case PT_ISO9660: result=ISO1FileRead(fa->p,Fs->cur_dir,fa->mask,&size,&attr,raw,&ac); break; default: PutDefineErr("ST_UNSUPPORTED_FILE_SYSTEM"); } FileAccessDel(fa); } } //Search parent directories. for (i=0;i<2 && !result;i++) {//Try name, then altname if (!i) curname=absname; else curname=altname; if (fa=FileAccessNew(curname)) { while (!result && StrCmp(Fs->cur_dir,"/")) { Cd(".."); switch (Fs->cur_prt->type) { case PT_REDSEA: result=RedSeaFSFileRead(fa->p,Fs->cur_dir,fa->mask,&size,&attr,raw,&ac); break; case PT_FAT32: result=FAT32FileRead(fa->p,Fs->cur_dir,fa->mask,&size,&attr,raw,&ac); break; case PT_ISO9660: result=ISO1FileRead(fa->p,Fs->cur_dir,fa->mask,&size,&attr,raw,&ac); break; default: PutDefineErr("ST_UNSUPPORTED_FILE_SYSTEM"); } } FileAccessDel(fa); } } if (!result) { "%s ",filename; PutDefineErr("ST_FILE_NOT_FOUND"); } if (_size) *_size=size; if (_attr) *_attr=attr; if (result && !raw && attr & _ATTR_RESIDENT) HashGenericAdd(curname,HTT_FILE,AMAllocIdentical(ac),size,0,adam_task); Free(ac); } Free(absname); Free(altname); return result; }