From: Robert Roebling Date: Sun, 27 Jun 1999 22:37:41 +0000 (+0000) Subject: Replaced ostream with FILE* in wxExpr. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/fd15d8f1b0b437312a117b7e4509708a22e30806 Replaced ostream with FILE* in wxExpr. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2913 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/acconfig.h b/acconfig.h index 8a6cd9cff9..b19c84594c 100644 --- a/acconfig.h +++ b/acconfig.h @@ -330,7 +330,7 @@ * Use standard C++ streams if 1. If 0, use wxWin * streams implementation. */ -#define wxUSE_STD_IOSTREAM 1 +#define wxUSE_STD_IOSTREAM 0 /* * wxLibrary class */ diff --git a/configure.in b/configure.in index b047a82156..21ffaa8a7b 100644 --- a/configure.in +++ b/configure.in @@ -250,6 +250,7 @@ if test $DEBUG_CONFIGURE = 1; then DEFAULT_wxUSE_LIBJPEG=no DEFAULT_wxUSE_ODBC=no + DEFAULT_wxUSE_STD_IOSTREAM=no DEFAULT_wxUSE_FILE=no DEFAULT_wxUSE_TEXTFILE=no DEFAULT_wxUSE_TIMEDATE=no @@ -347,6 +348,7 @@ else DEFAULT_wxUSE_LIBJPEG=yes DEFAULT_wxUSE_ODBC=no + DEFAULT_wxUSE_STD_IOSTREAM=yes DEFAULT_wxUSE_FILE=yes DEFAULT_wxUSE_TEXTFILE=yes DEFAULT_wxUSE_TIMEDATE=yes @@ -500,24 +502,25 @@ dnl --------------------------------------------------------------------------- dnl (small) optional non GUI classes dnl --------------------------------------------------------------------------- -WX_ARG_ENABLE(intl, [ --enable-intl use internationalization system], wxUSE_INTL) -WX_ARG_ENABLE(config, [ --enable-config use wxConfig (and derived) classes], wxUSE_CONFIG) -WX_ARG_ENABLE(sockets, [ --enable-sockets use socket/network classes], wxUSE_SOCKETS) -WX_ARG_ENABLE(ipc, [ --enable-ipc use interprocess communication (wxSocket etc.)], wxUSE_IPC) -WX_ARG_ENABLE(apple_ieee, [ --enable-apple_ieee use the Apple IEEE codec], wxUSE_APPLE_IEEE) -WX_ARG_ENABLE(timedate, [ --enable-timedate use date/time classes], wxUSE_TIMEDATE) -WX_ARG_ENABLE(wave, [ --enable-wave use wxWave class], wxUSE_WAVE) -WX_ARG_ENABLE(fraction, [ --enable-fraction use wxFraction class], wxUSE_FRACTION) -WX_ARG_ENABLE(dynlib, [ --enable-dynlib use wxLibrary class for DLL loading], wxUSE_DYNLIB_CLASS) -WX_ARG_ENABLE(longlong, [ --enable-longlong use wxLongLong class], wxUSE_LONGLONG) -WX_ARG_ENABLE(log, [ --enable-log use logging system], wxUSE_LOG) -WX_ARG_ENABLE(streams, [ --enable-streams use wxStream etc classes], wxUSE_STREAMS) -WX_ARG_ENABLE(file, [ --enable-file use wxFile classes], wxUSE_FILE) -WX_ARG_ENABLE(textfile, [ --enable-textfile use wxTextFile classes], wxUSE_TEXTFILE) -WX_ARG_ENABLE(unicode, [ --enable-unicode compile wxString with Unicode support], wxUSE_UNICODE) -WX_ARG_ENABLE(wcsrtombs, [ --enable-wcsrtombs use wcsrtombs instead of buggy (GNU libc1/Linux libc5) wcstombs], wxUSE_WCSRTOMBS) -WX_ARG_ENABLE(wxprintfv, [ --enable-wxprintfv use wxWindows implementation of vprintf()], wxUSE_EXPERIMENTAL_PRINTF) -WX_ARG_ENABLE(joystick, [ --enable-joystick compile in joystick support (Linux only)], wxUSE_JOYSTICK) +WX_ARG_ENABLE(intl, [ --enable-intl use internationalization system], wxUSE_INTL) +WX_ARG_ENABLE(config, [ --enable-config use wxConfig (and derived) classes], wxUSE_CONFIG) +WX_ARG_ENABLE(sockets, [ --enable-sockets use socket/network classes], wxUSE_SOCKETS) +WX_ARG_ENABLE(ipc, [ --enable-ipc use interprocess communication (wxSocket etc.)], wxUSE_IPC) +WX_ARG_ENABLE(apple_ieee, [ --enable-apple_ieee use the Apple IEEE codec], wxUSE_APPLE_IEEE) +WX_ARG_ENABLE(timedate, [ --enable-timedate use date/time classes], wxUSE_TIMEDATE) +WX_ARG_ENABLE(wave, [ --enable-wave use wxWave class], wxUSE_WAVE) +WX_ARG_ENABLE(fraction, [ --enable-fraction use wxFraction class], wxUSE_FRACTION) +WX_ARG_ENABLE(dynlib, [ --enable-dynlib use wxLibrary class for DLL loading], wxUSE_DYNLIB_CLASS) +WX_ARG_ENABLE(longlong, [ --enable-longlong use wxLongLong class], wxUSE_LONGLONG) +WX_ARG_ENABLE(log, [ --enable-log use logging system], wxUSE_LOG) +WX_ARG_ENABLE(streams, [ --enable-streams use wxStream etc classes], wxUSE_STREAMS) +WX_ARG_ENABLE(file, [ --enable-file use wxFile classes], wxUSE_FILE) +WX_ARG_ENABLE(textfile, [ --enable-textfile use wxTextFile classes], wxUSE_TEXTFILE) +WX_ARG_ENABLE(unicode, [ --enable-unicode compile wxString with Unicode support], wxUSE_UNICODE) +WX_ARG_ENABLE(wcsrtombs, [ --enable-wcsrtombs use wcsrtombs instead of buggy (GNU libc1/Linux libc5) wcstombs], wxUSE_WCSRTOMBS) +WX_ARG_ENABLE(wxprintfv, [ --enable-wxprintfv use wxWindows implementation of vprintf()], wxUSE_EXPERIMENTAL_PRINTF) +WX_ARG_ENABLE(joystick, [ --enable-joystick compile in joystick support (Linux only)], wxUSE_JOYSTICK) +WX_ARG_ENABLE(std_iostreams, [ --enable-std_iostreams use standard C++ stream classes], wxUSE_STD_IOSTREAM) dnl --------------------------------------------------------------------------- dnl "big" options (i.e. those which change a lot of things throughout the library) @@ -1533,6 +1536,10 @@ if test "$wxUSE_FILE" = "yes"; then AC_DEFINE(wxUSE_FILE) fi +if test "$wxUSE_STD_IOSTREAM" = "yes"; then + AC_DEFINE(wxUSE_STD_IOSTREAM) +fi + if test "$wxUSE_TEXTFILE" = "yes"; then if test "$wxUSE_FILE" != "yes"; then AC_MSG_WARN(wxTextFile requires wxFile and it won't be compiled without it) diff --git a/include/wx/wxexpr.h b/include/wx/wxexpr.h index 756cf63915..30d32fda62 100644 --- a/include/wx/wxexpr.h +++ b/include/wx/wxexpr.h @@ -21,8 +21,6 @@ #include "wx/defs.h" #include "wx/string.h" -#include "wx/ioswrap.h" - #include "wx/list.h" #include "wx/hash.h" @@ -141,9 +139,9 @@ class WXDLLEXPORT wxExpr wxExpr *AttributeValue(const wxString& word) const; // Use only for a clause wxString Functor(void) const; // Only for a clause bool IsFunctor(const wxString& s) const; // Only for a clause - void WriteClause(ostream& stream); // Write this expression as a top-level clause - void WriteExpr(ostream& stream); // Write as any other subexpression - void WriteLispExpr(ostream& stream); + void WriteClause(FILE* stream); // Write this expression as a top-level clause + void WriteExpr(FILE* stream); // Write as any other subexpression + void WriteLispExpr(FILE* stream); // Append an expression to a list void Append(wxExpr *expr); @@ -244,13 +242,13 @@ public: bool Read(const wxString& filename); bool ReadFromString(const wxString& buffer); bool Write(const wxString& fileName); - bool Write(ostream& stream); - void WriteLisp(ostream& stream); + bool Write(FILE* stream); + void WriteLisp(FILE* stream); // Compatibility inline bool ReadProlog(wxChar *filename) { return Read(wxString(filename)); } inline bool ReadPrologFromString(char *buffer) { return ReadFromString(wxString(buffer)); } - inline void WriteProlog(ostream& stream) { Write(stream); } + inline void WriteProlog(FILE* stream) { Write(stream); } private: DECLARE_DYNAMIC_CLASS(wxExprDatabase) diff --git a/src/common/wxexpr.cpp b/src/common/wxexpr.cpp index 41e4132e59..67e5f100e7 100644 --- a/src/common/wxexpr.cpp +++ b/src/common/wxexpr.cpp @@ -20,18 +20,11 @@ #pragma hdrstop #endif -#if wxUSE_IOSTREAMH - #include -#else - #include -#endif - #include #include #include #include "wx/utils.h" - #include "wx/expr.h" #include "wx/wxexpr.h" @@ -671,7 +664,7 @@ void wxExpr::AssignAttributeValue(wxChar *att, wxChar **var) const } } -void wxExpr::WriteClause(ostream& stream) // Write this expression as a top-level clause +void wxExpr::WriteClause(FILE* stream) // Write this expression as a top-level clause { if (type != wxExprList) return; @@ -680,23 +673,24 @@ void wxExpr::WriteClause(ostream& stream) // Write this expression as a top-lev if (node) { node->WriteExpr(stream); - stream << "("; + fprintf( stream, "(" ); node = node->next; bool first = TRUE; while (node) { if (!first) - stream << " "; + fprintf( stream, " " ); node->WriteExpr(stream); node = node->next; - if (node) stream << ",\n"; + if (node) + fprintf( stream, ",\n" ); first = FALSE; } - stream << ").\n\n"; + fprintf( stream, ").\n\n" ); } } -void wxExpr::WriteExpr(ostream& stream) // Write as any other subexpression +void wxExpr::WriteExpr(FILE* stream) // Write as any other subexpression { // This seems to get round an optimizer bug when // using Watcom C++ 10a in WIN32 compilation mode. @@ -713,25 +707,18 @@ void wxExpr::WriteExpr(ostream& stream) // Write as any other subexpression { case wxExprInteger: { - stream << value.integer; + fprintf( stream, "%ld", value.integer ); break; } case wxExprReal: { double f = value.real; -/* Now the parser can cope with this. - // Prevent printing in 'e' notation. Any better way? - if (fabs(f) < 0.00001) - f = 0.0; -*/ - char buf[40]; - sprintf(buf, "%.6g", f); - stream << buf; + fprintf( stream, "%.6g", f); break; } case wxExprString: { - stream << "\""; + fprintf( stream, "\"" ); int i; const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.string); int len = strlen(val); @@ -739,11 +726,13 @@ void wxExpr::WriteExpr(ostream& stream) // Write as any other subexpression { char ch = val[i]; if (ch == '"' || ch == '\\') - stream << "\\"; - stream << ch; + fprintf( stream, "\\" ); + char tmp[2]; + tmp[0] = ch; + tmp[1] = 0; + fprintf( stream, tmp ); } - - stream << "\""; + fprintf( stream, "\"" ); break; } case wxExprWord: @@ -763,19 +752,19 @@ void wxExpr::WriteExpr(ostream& stream) // Write as any other subexpression } if (quote_it) - stream << "'"; + fprintf( stream ,"'" ); - stream << val; + fprintf( stream, (const char*) val ); if (quote_it) - stream << "'"; + fprintf( stream, "'" ); break; } case wxExprList: { if (!value.first) - stream << "[]"; + fprintf( stream, "[]" ); else { wxExpr *expr = value.first; @@ -785,19 +774,20 @@ void wxExpr::WriteExpr(ostream& stream) // Write as any other subexpression wxExpr *arg1 = expr->next; wxExpr *arg2 = arg1->next; arg1->WriteExpr(stream); - stream << " = "; + fprintf( stream, " = " ); arg2->WriteExpr(stream); } else { - stream << "["; + fprintf( stream, "[" ); while (expr) { expr->WriteExpr(stream); expr = expr->next; - if (expr) stream << ", "; + if (expr) + fprintf( stream, ", " ); } - stream << "]"; + fprintf( stream, "]" ); } } break; @@ -806,43 +796,48 @@ void wxExpr::WriteExpr(ostream& stream) // Write as any other subexpression } } -void wxExpr::WriteLispExpr(ostream& stream) +void wxExpr::WriteLispExpr(FILE* stream) { switch (type) { case wxExprInteger: { - stream << value.integer; + fprintf( stream, "%ld", value.integer ); break; } case wxExprReal: { - stream << value.real; + fprintf( stream, "%.6g", value.real ); break; } case wxExprString: { - stream << "\"" << value.string << "\""; + fprintf( stream, "\"" ); + const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.string); + fprintf( stream, (const char*) val ); + fprintf( stream, "\"" ); break; } case wxExprWord: { - stream << value.word; + const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.word); + fprintf( stream, (const char*) val ); break; } case wxExprList: { wxExpr *expr = value.first; - stream << "("; + fprintf( stream, "(" ); while (expr) { expr->WriteLispExpr(stream); expr = expr->next; - if (expr) stream << " "; + if (expr) + fprintf( stream, " " ); } - stream << ")"; + fprintf( stream, ")" ); break; } case wxExprNull: break; @@ -1079,13 +1074,15 @@ bool wxExprDatabase::ReadFromString(const wxString& buffer) bool wxExprDatabase::Write(const wxString& fileName) { - ofstream str(MBSTRINGCAST fileName.mb_str()); - if (str.bad()) + FILE *stream = fopen( fileName.fn_str(), "w+" ); + + if (!stream) return FALSE; - return Write(str); + + return Write(stream); } -bool wxExprDatabase::Write(ostream& stream) +bool wxExprDatabase::Write(FILE *stream) { noErrors = 0; wxNode *node = First(); @@ -1098,7 +1095,7 @@ bool wxExprDatabase::Write(ostream& stream) return (noErrors == 0); } -void wxExprDatabase::WriteLisp(ostream& stream) +void wxExprDatabase::WriteLisp(FILE* stream) { noErrors = 0; wxNode *node = First(); @@ -1106,7 +1103,7 @@ void wxExprDatabase::WriteLisp(ostream& stream) { wxExpr *expr = (wxExpr *)node->Data(); expr->WriteLispExpr(stream); - stream << "\n\n"; + fprintf( stream, "\n\n" ); node = node->Next(); } }