X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fde7d98ecdb04b84483288bdc269045eb51193fc..5701b057fb4b5bf672da2fb19230d179f7f3e251:/src/common/wxexpr.cpp?ds=sidebyside diff --git a/src/common/wxexpr.cpp b/src/common/wxexpr.cpp index 1d82a95ba1..08f4affcd7 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,43 +707,38 @@ 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 = wxConv_libc.cWX2MB(value.string); + const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.string); int len = strlen(val); for (i = 0; i < len; i++) { 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: { bool quote_it = FALSE; - const wxWX2MBbuf val = wxConv_libc.cWX2MB(value.word); + const wxWX2MBbuf val = wxConvLibc.cWX2MB(value.word); int len = strlen(val); if ((len == 0) || (len > 0 && (val[0] > 64 && val[0] < 91))) quote_it = TRUE; @@ -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,49 +796,6 @@ void wxExpr::WriteExpr(ostream& stream) // Write as any other subexpression } } -void wxExpr::WriteLispExpr(ostream& stream) -{ - switch (type) - { - case wxExprInteger: - { - stream << value.integer; - break; - } - case wxExprReal: - { - stream << value.real; - break; - } - case wxExprString: - { - stream << "\"" << value.string << "\""; - break; - } - case wxExprWord: - { - stream << value.word; - break; - } - case wxExprList: - { - wxExpr *expr = value.first; - - stream << "("; - while (expr) - { - expr->WriteLispExpr(stream); - expr = expr->next; - if (expr) stream << " "; - } - - stream << ")"; - break; - } - case wxExprNull: break; - } -} - /* * wxExpr 'database' (list of expressions) */ @@ -1079,13 +1026,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,19 +1047,6 @@ bool wxExprDatabase::Write(ostream& stream) return (noErrors == 0); } -void wxExprDatabase::WriteLisp(ostream& stream) -{ - noErrors = 0; - wxNode *node = First(); - while (node) - { - wxExpr *expr = (wxExpr *)node->Data(); - expr->WriteLispExpr(stream); - stream << "\n\n"; - node = node->Next(); - } -} - void add_expr(wxExpr * expr) { thewxExprDatabase->Append(expr); @@ -1195,15 +1131,15 @@ char *wxmake_string(char *str) { wxChar *s, *t; int len, i; - const wxMB2WXbuf sbuf = wxConv_libc.cMB2WX(str); + const wxMB2WXbuf sbuf = wxConvLibc.cMB2WX(str); - str++; /* skip leading quote */ +// str++; /* skip leading quote */ len = wxStrlen(sbuf) - 1; /* ignore trailing quote */ s = new wxChar[len + 1]; t = s; - for(i=0; i