void HisBase::Load() { if (isnew && !isloaded) { isloaded = true; node = xmlNewNode(NULL,this->GetNodeName()); return; } if (!isloaded) { isloaded = true; DoInternalLoad(node); } }
void InternalLoad(LispEnvironment& aEnvironment, const std::string& aFileName) { const std::string oper = InternalUnstringify(aFileName); InputStatus oldstatus = aEnvironment.iInputStatus; aEnvironment.iInputStatus.SetTo(oper); //TODO make the file api platform independent!!!! // Open file LispLocalFile localFP(aEnvironment, oper, true, aEnvironment.iInputDirectories); if (!localFP.stream.is_open()) throw LispErrFileNotFound(); StdFileInput newInput(localFP, aEnvironment.iInputStatus); DoInternalLoad(aEnvironment, &newInput); aEnvironment.iInputStatus.RestoreFrom(oldstatus); }