rendered paste bodychar* frmScarEditor::_ReadNiceString(FILE* f)
{
size_t iLen;
fread(&iLen, sizeof(size_t), 1, f);
char* s = new char[iLen + 1];
fread(s, iLen, 1, f);
s[iLen] = 0;
return s;
}
frmScarEditor::frmScarEditor(wxTreeItemId& oFileParent, wxString sFilename, wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, const wchar_t* pLangRef)
: m_oFileParent(oFileParent), m_sFilename(sFilename), wxWindow(parent, id, pos, size), m_bNeedsSaving(false)
{
// Load ref
if(pLangRef)
{
FILE *f = _wfopen(AppStr(app_scarreffile), L"rb");
size_t iFnCount;
fread(&iFnCount, sizeof(size_t), 1, f);
for(size_t i = 0; i < iFnCount; ++i)
{
_ScarFunction oFunction;
oFunction.sReturn = _ReadNiceString(f);
oFunction.sName = _ReadNiceString(f);
oFunction.iType = 0;
if(*oFunction.sName == 0)
{
oFunction.iType = 1;
delete[] oFunction.sName;
oFunction.sName = oFunction.sReturn;
oFunction.sReturn = 0;
oFunction.sDesc = 0;
}
else
{
size_t iArgCount;
fread(&iArgCount, sizeof(size_t), 1, f);
for(size_t j = 0; j < iArgCount; ++j)
{
oFunction.sArguments.push_back(_ReadNiceString(f));
}
oFunction.sDesc = _ReadNiceString(f);
}
m_lstScarFunctions.push_back(oFunction);
}
fclose(f);
}