allow compilation with wxUSE_DATETIME == 0 (patch 679822)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19128 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2003-02-06 00:53:46 +00:00
parent 83911a5a4d
commit e2b87f38d9
15 changed files with 109 additions and 16 deletions

View File

@@ -1047,6 +1047,15 @@
# define wxUSE_COMBOBOX 1 # define wxUSE_COMBOBOX 1
# endif # endif
# endif # endif
# if !wxUSE_DATETIME
# ifdef wxABORT_ON_CONFIG_ERROR
# error "wxCalendarCtrl requires wxUSE_DATETIME"
# else
# undef wxUSE_DATETIME
# define wxUSE_DATETIME 1
# endif
# endif
#endif /* wxUSE_CALENDARCTRL */ #endif /* wxUSE_CALENDARCTRL */
#if wxUSE_CHECKLISTBOX #if wxUSE_CHECKLISTBOX

View File

@@ -185,9 +185,11 @@ public:
// the value in the provided pointer // the value in the provided pointer
bool Found(const wxString& name, long *value) const; bool Found(const wxString& name, long *value) const;
#if wxUSE_DATETIME
// returns TRUE if an option taking a date value was found and stores the // returns TRUE if an option taking a date value was found and stores the
// value in the provided pointer // value in the provided pointer
bool Found(const wxString& name, wxDateTime *value) const; bool Found(const wxString& name, wxDateTime *value) const;
#endif // wxUSE_DATETIME
// gets the number of parameters found // gets the number of parameters found
size_t GetParamCount() const; size_t GetParamCount() const;

View File

@@ -185,7 +185,7 @@ public:
// VZ: also need: IsDirWritable(), IsFileExecutable() &c (TODO) // VZ: also need: IsDirWritable(), IsFileExecutable() &c (TODO)
// time functions // time functions
#if wxUSE_DATETIME
// set the file last access/mod and creation times // set the file last access/mod and creation times
// (any of the pointers may be NULL) // (any of the pointers may be NULL)
bool SetTimes(const wxDateTime *dtAccess, bool SetTimes(const wxDateTime *dtAccess,
@@ -208,6 +208,7 @@ public:
(void)GetTimes(NULL, &dtMod, NULL); (void)GetTimes(NULL, &dtMod, NULL);
return dtMod; return dtMod;
} }
#endif // wxUSE_DATETIME
#ifdef __WXMAC__ #ifdef __WXMAC__
bool MacSetTypeAndCreator( wxUint32 type , wxUint32 creator ) ; bool MacSetTypeAndCreator( wxUint32 type , wxUint32 creator ) ;

View File

@@ -46,15 +46,21 @@ class WXDLLEXPORT wxFSFile : public wxObject
{ {
public: public:
wxFSFile(wxInputStream *stream, const wxString& loc, wxFSFile(wxInputStream *stream, const wxString& loc,
const wxString& mimetype, const wxString& anchor, const wxString& mimetype, const wxString& anchor
wxDateTime modif) #if wxUSE_DATETIME
, wxDateTime modif
#endif // wxUSE_DATETIME
)
{ {
m_Stream = stream; m_Stream = stream;
m_Location = loc; m_Location = loc;
m_MimeType = mimetype; m_MimeType.MakeLower(); m_MimeType = mimetype; m_MimeType.MakeLower();
m_Anchor = anchor; m_Anchor = anchor;
#if wxUSE_DATETIME
m_Modif = modif; m_Modif = modif;
#endif // wxUSE_DATETIME
} }
virtual ~wxFSFile() { if (m_Stream) delete m_Stream; } virtual ~wxFSFile() { if (m_Stream) delete m_Stream; }
// returns stream. This doesn't _create_ stream, it only returns // returns stream. This doesn't _create_ stream, it only returns
@@ -69,14 +75,18 @@ public:
const wxString& GetAnchor() const {return m_Anchor;} const wxString& GetAnchor() const {return m_Anchor;}
#if wxUSE_DATETIME
wxDateTime GetModificationTime() const {return m_Modif;} wxDateTime GetModificationTime() const {return m_Modif;}
#endif // wxUSE_DATETIME
private: private:
wxInputStream *m_Stream; wxInputStream *m_Stream;
wxString m_Location; wxString m_Location;
wxString m_MimeType; wxString m_MimeType;
wxString m_Anchor; wxString m_Anchor;
#if wxUSE_DATETIME
wxDateTime m_Modif; wxDateTime m_Modif;
#endif // wxUSE_DATETIME
DECLARE_ABSTRACT_CLASS(wxFSFile) DECLARE_ABSTRACT_CLASS(wxFSFile)
DECLARE_NO_COPY_CLASS(wxFSFile) DECLARE_NO_COPY_CLASS(wxFSFile)

View File

@@ -25,6 +25,8 @@
#define wxGRID_VALUE_CHOICEINT _T("choiceint") #define wxGRID_VALUE_CHOICEINT _T("choiceint")
#define wxGRID_VALUE_DATETIME _T("datetime") #define wxGRID_VALUE_DATETIME _T("datetime")
#if wxUSE_DATETIME
// the default renderer for the cells containing Time and dates.. // the default renderer for the cells containing Time and dates..
class WXDLLEXPORT wxGridCellDateTimeRenderer : public wxGridCellStringRenderer class WXDLLEXPORT wxGridCellDateTimeRenderer : public wxGridCellStringRenderer
{ {
@@ -59,6 +61,7 @@ protected:
wxDateTime::TimeZone m_tz; wxDateTime::TimeZone m_tz;
}; };
#endif // wxUSE_DATETIME
// the default renderer for the cells containing Time and dates.. // the default renderer for the cells containing Time and dates..
class WXDLLEXPORT wxGridCellEnumRenderer : public wxGridCellStringRenderer class WXDLLEXPORT wxGridCellEnumRenderer : public wxGridCellStringRenderer

View File

@@ -26,7 +26,9 @@
#include "wx/date.h" #include "wx/date.h"
#endif // time/date #endif // time/date
#if wxUSE_DATETIME
#include "wx/datetime.h" #include "wx/datetime.h"
#endif // wxUSE_DATETIME
#if wxUSE_ODBC #if wxUSE_ODBC
#include "wx/db.h" // will #include sqltypes.h #include "wx/db.h" // will #include sqltypes.h
@@ -105,7 +107,9 @@ public:
wxVariant(void* ptr, const wxString& name = wxEmptyString); // void* (general purpose) wxVariant(void* ptr, const wxString& name = wxEmptyString); // void* (general purpose)
wxVariant(wxVariantData* data, const wxString& name = wxEmptyString); // User-defined data wxVariant(wxVariantData* data, const wxString& name = wxEmptyString); // User-defined data
//TODO: Need to document //TODO: Need to document
#if wxUSE_DATETIME
wxVariant(const wxDateTime& val, const wxString& name = wxEmptyString); // Date wxVariant(const wxDateTime& val, const wxString& name = wxEmptyString); // Date
#endif // wxUSE_DATETIME
wxVariant(const wxArrayString& val, const wxString& name = wxEmptyString); // String array wxVariant(const wxArrayString& val, const wxString& name = wxEmptyString); // String array
#if wxUSE_ODBC #if wxUSE_ODBC
wxVariant(const DATE_STRUCT* valptr, const wxString& name = wxEmptyString); // DateTime wxVariant(const DATE_STRUCT* valptr, const wxString& name = wxEmptyString); // DateTime
@@ -122,9 +126,11 @@ public:
void operator= (const wxVariant& variant); void operator= (const wxVariant& variant);
//TODO: Need to document //TODO: Need to document
#if wxUSE_DATETIME
bool operator== (const wxDateTime& value) const; bool operator== (const wxDateTime& value) const;
bool operator!= (const wxDateTime& value) const; bool operator!= (const wxDateTime& value) const;
void operator= (const wxDateTime& value) ; void operator= (const wxDateTime& value) ;
#endif // wxUSE_DATETIME
bool operator== (const wxArrayString& value) const; bool operator== (const wxArrayString& value) const;
bool operator!= (const wxArrayString& value) const; bool operator!= (const wxArrayString& value) const;
@@ -200,7 +206,9 @@ public:
#endif #endif
inline operator void* () const { return GetVoidPtr(); } inline operator void* () const { return GetVoidPtr(); }
//TODO: Need to document //TODO: Need to document
#if wxUSE_DATETIME
inline operator wxDateTime () const { return GetDateTime(); } inline operator wxDateTime () const { return GetDateTime(); }
#endif // wxUSE_DATETIME
//TODO: End of Need to document //TODO: End of Need to document
// Accessors // Accessors
@@ -241,7 +249,9 @@ public:
#endif #endif
void* GetVoidPtr() const ; void* GetVoidPtr() const ;
//TODO: Need to document //TODO: Need to document
#if wxUSE_DATETIME
wxDateTime GetDateTime() const ; wxDateTime GetDateTime() const ;
#endif // wxUSE_DATETIME
wxArrayString GetArrayString() const; wxArrayString GetArrayString() const;
//TODO: End of Need to document //TODO: End of Need to document
@@ -281,7 +291,9 @@ public:
bool Convert(wxDate* value) const; bool Convert(wxDate* value) const;
#endif #endif
//TODO: Need to document //TODO: Need to document
#if wxUSE_DATETIME
bool Convert(wxDateTime* value) const; bool Convert(wxDateTime* value) const;
#endif // wxUSE_DATETIME
//TODO: End of Need to document //TODO: End of Need to document
// Attributes // Attributes

View File

@@ -114,15 +114,19 @@ struct wxCmdLineOption
{ Check(wxCMD_LINE_VAL_NUMBER); return m_longVal; } { Check(wxCMD_LINE_VAL_NUMBER); return m_longVal; }
const wxString& GetStrVal() const const wxString& GetStrVal() const
{ Check(wxCMD_LINE_VAL_STRING); return m_strVal; } { Check(wxCMD_LINE_VAL_STRING); return m_strVal; }
#if wxUSE_DATETIME
const wxDateTime& GetDateVal() const const wxDateTime& GetDateVal() const
{ Check(wxCMD_LINE_VAL_DATE); return m_dateVal; } { Check(wxCMD_LINE_VAL_DATE); return m_dateVal; }
#endif // wxUSE_DATETIME
void SetLongVal(long val) void SetLongVal(long val)
{ Check(wxCMD_LINE_VAL_NUMBER); m_longVal = val; m_hasVal = TRUE; } { Check(wxCMD_LINE_VAL_NUMBER); m_longVal = val; m_hasVal = TRUE; }
void SetStrVal(const wxString& val) void SetStrVal(const wxString& val)
{ Check(wxCMD_LINE_VAL_STRING); m_strVal = val; m_hasVal = TRUE; } { Check(wxCMD_LINE_VAL_STRING); m_strVal = val; m_hasVal = TRUE; }
#if wxUSE_DATETIME
void SetDateVal(const wxDateTime val) void SetDateVal(const wxDateTime val)
{ Check(wxCMD_LINE_VAL_DATE); m_dateVal = val; m_hasVal = TRUE; } { Check(wxCMD_LINE_VAL_DATE); m_dateVal = val; m_hasVal = TRUE; }
#endif // wxUSE_DATETIME
void SetHasValue(bool hasValue = TRUE) { m_hasVal = hasValue; } void SetHasValue(bool hasValue = TRUE) { m_hasVal = hasValue; }
bool HasValue() const { return m_hasVal; } bool HasValue() const { return m_hasVal; }
@@ -140,7 +144,9 @@ private:
long m_longVal; long m_longVal;
wxString m_strVal; wxString m_strVal;
#if wxUSE_DATETIME
wxDateTime m_dateVal; wxDateTime m_dateVal;
#endif // wxUSE_DATETIME
}; };
struct wxCmdLineParam struct wxCmdLineParam
@@ -459,6 +465,7 @@ bool wxCmdLineParser::Found(const wxString& name, long *value) const
return TRUE; return TRUE;
} }
#if wxUSE_DATETIME
bool wxCmdLineParser::Found(const wxString& name, wxDateTime *value) const bool wxCmdLineParser::Found(const wxString& name, wxDateTime *value) const
{ {
int i = m_data->FindOption(name); int i = m_data->FindOption(name);
@@ -477,6 +484,7 @@ bool wxCmdLineParser::Found(const wxString& name, wxDateTime *value) const
return TRUE; return TRUE;
} }
#endif // wxUSE_DATETIME
size_t wxCmdLineParser::GetParamCount() const size_t wxCmdLineParser::GetParamCount() const
{ {
@@ -739,6 +747,7 @@ int wxCmdLineParser::Parse(bool showUsage)
} }
break; break;
#if wxUSE_DATETIME
case wxCMD_LINE_VAL_DATE: case wxCMD_LINE_VAL_DATE:
{ {
wxDateTime dt; wxDateTime dt;
@@ -756,6 +765,7 @@ int wxCmdLineParser::Parse(bool showUsage)
} }
} }
break; break;
#endif // wxUSE_DATETIME
} }
} }
} }

View File

@@ -194,7 +194,7 @@ private:
// private functions // private functions
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
#if defined(__WIN32__) && !defined(__WXMICROWIN__) #if wxUSE_DATETIME && defined(__WIN32__) && !defined(__WXMICROWIN__)
// convert between wxDateTime and FILETIME which is a 64-bit value representing // convert between wxDateTime and FILETIME which is a 64-bit value representing
// the number of 100-nanosecond intervals since January 1, 1601. // the number of 100-nanosecond intervals since January 1, 1601.
@@ -241,7 +241,7 @@ static void ConvertWxToFileTime(FILETIME *ft, const wxDateTime& dt)
} }
} }
#endif // __WIN32__ #endif // wxUSE_DATETIME && __WIN32__
// return a string with the volume par // return a string with the volume par
static wxString wxGetVolumeString(const wxString& volume, wxPathFormat format) static wxString wxGetVolumeString(const wxString& volume, wxPathFormat format)
@@ -1612,6 +1612,8 @@ void wxFileName::SplitPath(const wxString& fullpath,
// time functions // time functions
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
#if wxUSE_DATETIME
bool wxFileName::SetTimes(const wxDateTime *dtAccess, bool wxFileName::SetTimes(const wxDateTime *dtAccess,
const wxDateTime *dtMod, const wxDateTime *dtMod,
const wxDateTime *dtCreate) const wxDateTime *dtCreate)
@@ -1760,6 +1762,8 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
return FALSE; return FALSE;
} }
#endif // wxUSE_DATETIME
#ifdef __WXMAC__ #ifdef __WXMAC__
const short kMacExtensionMaxLength = 16 ; const short kMacExtensionMaxLength = 16 ;

View File

@@ -190,8 +190,11 @@ wxFSFile* wxLocalFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString&
return new wxFSFile(new wxFFileInputStream(fullpath), return new wxFSFile(new wxFFileInputStream(fullpath),
right, right,
GetMimeTypeFromExt(location), GetMimeTypeFromExt(location),
GetAnchor(location), GetAnchor(location)
wxDateTime(wxFileModificationTime(fullpath))); #if wxUSE_DATETIME
,wxDateTime(wxFileModificationTime(fullpath))
#endif // wxUSE_DATETIME
);
} }
wxString wxLocalFSHandler::FindFirst(const wxString& spec, int flags) wxString wxLocalFSHandler::FindFirst(const wxString& spec, int flags)

View File

@@ -145,8 +145,11 @@ wxFSFile* wxInternetFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxStri
return new wxFSFile(s, return new wxFSFile(s,
right, right,
info->GetMime(), info->GetMime(),
GetAnchor(location), GetAnchor(location)
wxDateTime::Now()); #if wxUSE_DATETIME
, wxDateTime::Now()
#endif // wxUSE_DATETIME
);
} }

View File

@@ -38,7 +38,7 @@ class MemFSHashObj : public wxObject
m_Data = new char[len]; m_Data = new char[len];
memcpy(m_Data, data, len); memcpy(m_Data, data, len);
m_Len = len; m_Len = len;
m_Time = wxDateTime::Now(); InitTime();
} }
MemFSHashObj(wxMemoryOutputStream& stream) MemFSHashObj(wxMemoryOutputStream& stream)
@@ -46,7 +46,7 @@ class MemFSHashObj : public wxObject
m_Len = stream.GetSize(); m_Len = stream.GetSize();
m_Data = new char[m_Len]; m_Data = new char[m_Len];
stream.CopyTo(m_Data, m_Len); stream.CopyTo(m_Data, m_Len);
m_Time = wxDateTime::Now(); InitTime();
} }
~MemFSHashObj() ~MemFSHashObj()
@@ -56,9 +56,19 @@ class MemFSHashObj : public wxObject
char *m_Data; char *m_Data;
size_t m_Len; size_t m_Len;
#if wxUSE_DATETIME
wxDateTime m_Time; wxDateTime m_Time;
#endif // wxUSE_DATETIME
DECLARE_NO_COPY_CLASS(MemFSHashObj) DECLARE_NO_COPY_CLASS(MemFSHashObj)
private:
void InitTime()
{
#if wxUSE_DATETIME
m_Time = wxDateTime::Now();
#endif // wxUSE_DATETIME
}
}; };
@@ -106,8 +116,11 @@ wxFSFile* wxMemoryFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString
else return new wxFSFile(new wxMemoryInputStream(obj -> m_Data, obj -> m_Len), else return new wxFSFile(new wxMemoryInputStream(obj -> m_Data, obj -> m_Len),
location, location,
GetMimeTypeFromExt(location), GetMimeTypeFromExt(location),
GetAnchor(location), GetAnchor(location)
obj -> m_Time); #if wxUSE_DATETIME
, obj -> m_Time
#endif // wxUSE_DATETIME
);
} }
else return NULL; else return NULL;
} }

View File

@@ -97,8 +97,11 @@ wxFSFile* wxZipFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString& l
return new wxFSFile(s, return new wxFSFile(s,
left + wxT("#zip:") + right, left + wxT("#zip:") + right,
GetMimeTypeFromExt(location), GetMimeTypeFromExt(location),
GetAnchor(location), GetAnchor(location)
wxDateTime(wxFileModificationTime(left))); #if wxUSE_DATETIME
, wxDateTime(wxFileModificationTime(left))
#endif // wxUSE_DATETIME
);
} }
delete s; delete s;

View File

@@ -1084,6 +1084,8 @@ bool wxVariantDataVoidPtr::Read(wxString& WXUNUSED(str))
* wxVariantDataDateTime * wxVariantDataDateTime
*/ */
#if wxUSE_DATETIME
class wxVariantDataDateTime: public wxVariantData class wxVariantDataDateTime: public wxVariantData
{ {
DECLARE_DYNAMIC_CLASS(wxVariantDataDateTime) DECLARE_DYNAMIC_CLASS(wxVariantDataDateTime)
@@ -1176,6 +1178,8 @@ bool wxVariantDataDateTime::Read(wxString& str)
return TRUE; return TRUE;
} }
#endif // wxUSE_DATETIME
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxVariantDataArrayString // wxVariantDataArrayString
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -1359,11 +1363,13 @@ wxVariant::wxVariant(void* val, const wxString& name) // Void ptr
m_name = name; m_name = name;
} }
#if wxUSE_DATETIME
wxVariant::wxVariant(const wxDateTime& val, const wxString& name) // Date wxVariant::wxVariant(const wxDateTime& val, const wxString& name) // Date
{ {
m_data = new wxVariantDataDateTime(val); m_data = new wxVariantDataDateTime(val);
m_name = name; m_name = name;
} }
#endif // wxUSE_DATETIME
#if wxUSE_ODBC #if wxUSE_ODBC
wxVariant::wxVariant(const TIME_STRUCT* valptr, const wxString& name) // Date wxVariant::wxVariant(const TIME_STRUCT* valptr, const wxString& name) // Date
@@ -1761,6 +1767,7 @@ void wxVariant::operator= (void* value)
} }
} }
#if wxUSE_DATETIME
bool wxVariant::operator== (const wxDateTime& value) const bool wxVariant::operator== (const wxDateTime& value) const
{ {
wxDateTime thisValue; wxDateTime thisValue;
@@ -1788,6 +1795,7 @@ void wxVariant::operator= (const wxDateTime& value)
m_data = new wxVariantDataDateTime(value); m_data = new wxVariantDataDateTime(value);
} }
} }
#endif // wxUSE_DATETIME
#if wxUSE_ODBC #if wxUSE_ODBC
void wxVariant::operator= (const DATE_STRUCT* value) void wxVariant::operator= (const DATE_STRUCT* value)
@@ -2031,6 +2039,7 @@ void* wxVariant::GetVoidPtr() const
return (void*) ((wxVariantDataVoidPtr*) m_data)->GetValue(); return (void*) ((wxVariantDataVoidPtr*) m_data)->GetValue();
} }
#if wxUSE_DATETIME
wxDateTime wxVariant::GetDateTime() const wxDateTime wxVariant::GetDateTime() const
{ {
wxDateTime value; wxDateTime value;
@@ -2041,6 +2050,7 @@ wxDateTime wxVariant::GetDateTime() const
return value; return value;
} }
#endif // wxUSE_DATETIME
wxList& wxVariant::GetList() const wxList& wxVariant::GetList() const
{ {
@@ -2242,6 +2252,7 @@ bool wxVariant::Convert(wxDate* value) const
} }
#endif // wxUSE_TIMEDATE #endif // wxUSE_TIMEDATE
#if wxUSE_DATETIME
bool wxVariant::Convert(wxDateTime* value) const bool wxVariant::Convert(wxDateTime* value) const
{ {
wxString type(GetType()); wxString type(GetType());
@@ -2254,3 +2265,4 @@ bool wxVariant::Convert(wxDateTime* value) const
wxString val; wxString val;
return Convert(&val) && (value->ParseDate(val)); return Convert(&val) && (value->ParseDate(val));
} }
#endif // wxUSE_DATETIME

View File

@@ -33,6 +33,8 @@
// wxGridCellDateTimeRenderer // wxGridCellDateTimeRenderer
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
#if wxUSE_DATETIME
// Enables a grid cell to display a formated date and or time // Enables a grid cell to display a formated date and or time
wxGridCellDateTimeRenderer::wxGridCellDateTimeRenderer(wxString outformat, wxString informat) wxGridCellDateTimeRenderer::wxGridCellDateTimeRenderer(wxString outformat, wxString informat)
@@ -121,6 +123,8 @@ void wxGridCellDateTimeRenderer::SetParameters(const wxString& params){
m_oformat=params; m_oformat=params;
} }
#endif // wxUSE_DATETIME
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxGridCellChoiceNumberRenderer // wxGridCellChoiceNumberRenderer
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -509,13 +509,17 @@ bool wxHtmlHelpData::AddBookParam(const wxFSFile& bookfile,
fi = fsys.OpenFile(bookfile.GetLocation() + wxT(".cached")); fi = fsys.OpenFile(bookfile.GetLocation() + wxT(".cached"));
if (fi == NULL || if (fi == NULL ||
#if wxUSE_DATETIME
fi->GetModificationTime() < bookfile.GetModificationTime() || fi->GetModificationTime() < bookfile.GetModificationTime() ||
#endif // wxUSE_DATETIME
!LoadCachedBook(bookr, fi->GetStream())) !LoadCachedBook(bookr, fi->GetStream()))
{ {
if (fi != NULL) delete fi; if (fi != NULL) delete fi;
fi = fsys.OpenFile(m_TempPath + wxFileNameFromPath(bookfile.GetLocation()) + wxT(".cached")); fi = fsys.OpenFile(m_TempPath + wxFileNameFromPath(bookfile.GetLocation()) + wxT(".cached"));
if (m_TempPath == wxEmptyString || fi == NULL || if (m_TempPath == wxEmptyString || fi == NULL ||
#if wxUSE_DATETIME
fi->GetModificationTime() < bookfile.GetModificationTime() || fi->GetModificationTime() < bookfile.GetModificationTime() ||
#endif // wxUSE_DATETIME
!LoadCachedBook(bookr, fi->GetStream())) !LoadCachedBook(bookr, fi->GetStream()))
{ {
LoadMSProject(bookr, fsys, indexfile, contfile); LoadMSProject(bookr, fsys, indexfile, contfile);