X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dcf924a345ea8ffbc1cf6b40b5f75c6005e504c0..b4a2ab728bf4627ab2b41385b69e31f10c1fd3b1:/src/common/wxexpr.cpp diff --git a/src/common/wxexpr.cpp b/src/common/wxexpr.cpp index 41e4132e59..feecedc3ae 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" @@ -282,12 +275,12 @@ wxExpr *wxExpr::AttributeValue(const wxString& word) const // Use only for a cla wxString wxExpr::Functor(void) const // Use only for a clause { if ((type != wxExprList) || !value.first) - return wxString(_T("")); + return wxString(T("")); if (value.first->type == wxExprWord) return wxString(value.first->value.word); else - return wxString(_T("")); + return wxString(T("")); } bool wxExpr::IsFunctor(const wxString& f) const // Use only for a clause @@ -397,7 +390,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, wxExpr *val) // DeleteAttributeValue(attribute); wxExpr *patt = new wxExpr(wxExprWord, attribute); - wxExpr *pequals = new wxExpr(wxExprWord, _T("=")); + wxExpr *pequals = new wxExpr(wxExprWord, T("=")); wxExpr *listExpr = new wxExpr(wxExprList); @@ -421,7 +414,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, long val) wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *pval = new wxExpr(val); - wxExpr *pequals = new wxExpr(wxExprWord, _T("=")); + wxExpr *pequals = new wxExpr(wxExprWord, T("=")); wxExpr *listExpr = new wxExpr(wxExprList); @@ -443,7 +436,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, double val) // DeleteAttributeValue(attribute); wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *pval = new wxExpr(val); - wxExpr *pequals = new wxExpr(wxExprWord, _T("=")); + wxExpr *pequals = new wxExpr(wxExprWord, T("=")); wxExpr *listExpr = new wxExpr(wxExprList); @@ -466,7 +459,7 @@ void wxExpr::AddAttributeValueString(const wxString& attribute, const wxString& wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *pval = new wxExpr(wxExprString, val); - wxExpr *pequals = new wxExpr(wxExprWord, _T("=")); + wxExpr *pequals = new wxExpr(wxExprWord, T("=")); wxExpr *listExpr = new wxExpr(wxExprList); @@ -489,7 +482,7 @@ void wxExpr::AddAttributeValueWord(const wxString& attribute, const wxString& va wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *pval = new wxExpr(wxExprWord, val); - wxExpr *pequals = new wxExpr(wxExprWord, _T("=")); + wxExpr *pequals = new wxExpr(wxExprWord, T("=")); wxExpr *listExpr = new wxExpr(wxExprList); @@ -514,7 +507,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, wxList *val) wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *pval = new wxExpr(val); - wxExpr *pequals = new wxExpr(wxExprWord, _T("=")); + wxExpr *pequals = new wxExpr(wxExprWord, T("=")); wxExpr *listExpr = new wxExpr(wxExprList); @@ -550,7 +543,7 @@ void wxExpr::AddAttributeValueStringList(const wxString& attribute, wxList *stri // Now make an (=, Att, Value) triple wxExpr *patt = new wxExpr(wxExprWord, attribute); - wxExpr *pequals = new wxExpr(wxExprWord, _T("=")); + wxExpr *pequals = new wxExpr(wxExprWord, T("=")); wxExpr *listExpr2 = new wxExpr(wxExprList); @@ -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,41 +752,42 @@ 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; - if ((expr->Type() == wxExprWord) && (wxStrcmp(expr->WordValue(), _T("=")) == 0)) + if ((expr->Type() == wxExprWord) && (wxStrcmp(expr->WordValue(), T("=")) == 0)) { 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) */ @@ -1071,7 +1018,7 @@ bool wxExprDatabase::ReadFromString(const wxString& buffer) thewxExprDatabase = this; const wxWX2MBbuf buf = buffer.mb_str(); - LexFromString(MBSTRINGCAST buf); + LexFromString(wxMBSTRINGCAST buf); yyparse(); wxExprCleanUp(); return (noErrors == 0); @@ -1079,13 +1026,17 @@ 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); + + bool success = Write(stream); + fclose(stream); + return success; } -bool wxExprDatabase::Write(ostream& stream) +bool wxExprDatabase::Write(FILE *stream) { noErrors = 0; wxNode *node = First(); @@ -1098,19 +1049,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); @@ -1205,21 +1143,21 @@ char *wxmake_string(char *str) t = s; for(i=1; i