Unicode conversion.

All files in the common/ subdirectory now compiles in Unicode mode.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2144 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Ove Kaaven
1999-04-13 15:23:06 +00:00
parent 5432628520
commit 1ec11a0645

View File

@@ -62,10 +62,10 @@ wxExpr::wxExpr(wxExprType the_type, const wxString& word_or_string)
switch (the_type) switch (the_type)
{ {
case wxExprWord: case wxExprWord:
value.word = copystring((const char *)word_or_string); value.word = copystring((const wxChar *)word_or_string);
break; break;
case wxExprString: case wxExprString:
value.string = copystring((const char *)word_or_string); value.string = copystring((const wxChar *)word_or_string);
break; break;
case wxExprList: case wxExprList:
last = NULL; last = NULL;
@@ -80,7 +80,7 @@ wxExpr::wxExpr(wxExprType the_type, const wxString& word_or_string)
next = NULL; next = NULL;
} }
wxExpr::wxExpr(wxExprType the_type, char *word_or_string, bool allocate) wxExpr::wxExpr(wxExprType the_type, wxChar *word_or_string, bool allocate)
{ {
type = the_type; type = the_type;
@@ -255,7 +255,7 @@ wxExpr *wxExpr::GetAttributeValueNode(const wxString& word) const // Use only fo
{ {
wxExpr *secondNode = firstNode->next; wxExpr *secondNode = firstNode->next;
if ((secondNode->type == wxExprWord) && if ((secondNode->type == wxExprWord) &&
(strcmp((const char *)word, secondNode->value.word) == 0)) (wxStrcmp((const wxChar *)word, secondNode->value.word) == 0))
{ {
return expr; return expr;
} }
@@ -282,12 +282,12 @@ wxExpr *wxExpr::AttributeValue(const wxString& word) const // Use only for a cla
wxString wxExpr::Functor(void) const // Use only for a clause wxString wxExpr::Functor(void) const // Use only for a clause
{ {
if ((type != wxExprList) || !value.first) if ((type != wxExprList) || !value.first)
return wxString(""); return wxString(_T(""));
if (value.first->type == wxExprWord) if (value.first->type == wxExprWord)
return wxString(value.first->value.word); return wxString(value.first->value.word);
else else
return wxString(""); return wxString(_T(""));
} }
bool wxExpr::IsFunctor(const wxString& f) const // Use only for a clause bool wxExpr::IsFunctor(const wxString& f) const // Use only for a clause
@@ -296,7 +296,7 @@ bool wxExpr::IsFunctor(const wxString& f) const // Use only for a clause
return FALSE; return FALSE;
return (value.first->type == wxExprWord && return (value.first->type == wxExprWord &&
(strcmp((const char *)f, value.first->value.word) == 0)); (wxStrcmp((const wxChar *)f, value.first->value.word) == 0));
} }
// Return nth argument of a clause (starting from 1) // Return nth argument of a clause (starting from 1)
@@ -365,7 +365,7 @@ void wxExpr::DeleteAttributeValue(const wxString& attribute)
{ {
wxExpr *secondNode = firstNode->next; wxExpr *secondNode = firstNode->next;
if ((secondNode->type == wxExprWord) && if ((secondNode->type == wxExprWord) &&
(strcmp((const char *)attribute, secondNode->value.word) == 0)) (wxStrcmp((const wxChar *)attribute, secondNode->value.word) == 0))
{ {
wxExpr *nextExpr = expr->next; wxExpr *nextExpr = expr->next;
delete expr; delete expr;
@@ -397,7 +397,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, wxExpr *val)
// DeleteAttributeValue(attribute); // DeleteAttributeValue(attribute);
wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *patt = new wxExpr(wxExprWord, attribute);
wxExpr *pequals = new wxExpr(wxExprWord, "="); wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
wxExpr *listExpr = new wxExpr(wxExprList); wxExpr *listExpr = new wxExpr(wxExprList);
@@ -421,7 +421,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, long val)
wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *patt = new wxExpr(wxExprWord, attribute);
wxExpr *pval = new wxExpr(val); wxExpr *pval = new wxExpr(val);
wxExpr *pequals = new wxExpr(wxExprWord, "="); wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
wxExpr *listExpr = new wxExpr(wxExprList); wxExpr *listExpr = new wxExpr(wxExprList);
@@ -443,7 +443,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, double val)
// DeleteAttributeValue(attribute); // DeleteAttributeValue(attribute);
wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *patt = new wxExpr(wxExprWord, attribute);
wxExpr *pval = new wxExpr(val); wxExpr *pval = new wxExpr(val);
wxExpr *pequals = new wxExpr(wxExprWord, "="); wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
wxExpr *listExpr = new wxExpr(wxExprList); wxExpr *listExpr = new wxExpr(wxExprList);
@@ -466,7 +466,7 @@ void wxExpr::AddAttributeValueString(const wxString& attribute, const wxString&
wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *patt = new wxExpr(wxExprWord, attribute);
wxExpr *pval = new wxExpr(wxExprString, val); wxExpr *pval = new wxExpr(wxExprString, val);
wxExpr *pequals = new wxExpr(wxExprWord, "="); wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
wxExpr *listExpr = new wxExpr(wxExprList); wxExpr *listExpr = new wxExpr(wxExprList);
@@ -489,7 +489,7 @@ void wxExpr::AddAttributeValueWord(const wxString& attribute, const wxString& va
wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *patt = new wxExpr(wxExprWord, attribute);
wxExpr *pval = new wxExpr(wxExprWord, val); wxExpr *pval = new wxExpr(wxExprWord, val);
wxExpr *pequals = new wxExpr(wxExprWord, "="); wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
wxExpr *listExpr = new wxExpr(wxExprList); wxExpr *listExpr = new wxExpr(wxExprList);
@@ -514,7 +514,7 @@ void wxExpr::AddAttributeValue(const wxString& attribute, wxList *val)
wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *patt = new wxExpr(wxExprWord, attribute);
wxExpr *pval = new wxExpr(val); wxExpr *pval = new wxExpr(val);
wxExpr *pequals = new wxExpr(wxExprWord, "="); wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
wxExpr *listExpr = new wxExpr(wxExprList); wxExpr *listExpr = new wxExpr(wxExprList);
@@ -550,7 +550,7 @@ void wxExpr::AddAttributeValueStringList(const wxString& attribute, wxList *stri
// Now make an (=, Att, Value) triple // Now make an (=, Att, Value) triple
wxExpr *patt = new wxExpr(wxExprWord, attribute); wxExpr *patt = new wxExpr(wxExprWord, attribute);
wxExpr *pequals = new wxExpr(wxExprWord, "="); wxExpr *pequals = new wxExpr(wxExprWord, _T("="));
wxExpr *listExpr2 = new wxExpr(wxExprList); wxExpr *listExpr2 = new wxExpr(wxExprList);
@@ -660,14 +660,14 @@ bool wxExpr::GetAttributeValueStringList(const wxString& att, wxList *var) const
} }
// Compatibility // Compatibility
void wxExpr::AssignAttributeValue(char *att, char **var) const void wxExpr::AssignAttributeValue(wxChar *att, wxChar **var) const
{ {
wxString str; wxString str;
if (GetAttributeValue(att, str)) if (GetAttributeValue(att, str))
{ {
if (*var) if (*var)
delete[] *var; delete[] *var;
*var = copystring((const char *) str); *var = copystring((const wxChar *) str);
} }
} }
@@ -733,10 +733,11 @@ void wxExpr::WriteExpr(ostream& stream) // Write as any other subexpression
{ {
stream << "\""; stream << "\"";
int i; int i;
int len = strlen(value.string); wxWX2MBbuf val = wxConv_libc.cWX2MB(value.string);
int len = strlen(val);
for (i = 0; i < len; i++) for (i = 0; i < len; i++)
{ {
char ch = value.string[i]; char ch = val[i];
if (ch == '"' || ch == '\\') if (ch == '"' || ch == '\\')
stream << "\\"; stream << "\\";
stream << ch; stream << ch;
@@ -748,22 +749,23 @@ void wxExpr::WriteExpr(ostream& stream) // Write as any other subexpression
case wxExprWord: case wxExprWord:
{ {
bool quote_it = FALSE; bool quote_it = FALSE;
int len = strlen(value.word); wxWX2MBbuf val = wxConv_libc.cWX2MB(value.word);
if ((len == 0) || (len > 0 && (value.word[0] > 64 && value.word[0] < 91))) int len = strlen(val);
if ((len == 0) || (len > 0 && (val[0] > 64 && val[0] < 91)))
quote_it = TRUE; quote_it = TRUE;
else else
{ {
int i; int i;
for (i = 0; i < len; i++) for (i = 0; i < len; i++)
if ((!isalpha(value.word[i])) && (!isdigit(value.word[i])) && if ((!isalpha(val[i])) && (!isdigit(val[i])) &&
(value.word[i] != '_')) (val[i] != '_'))
{ quote_it = TRUE; i = len; } { quote_it = TRUE; i = len; }
} }
if (quote_it) if (quote_it)
stream << "'"; stream << "'";
stream << value.word; stream << val;
if (quote_it) if (quote_it)
stream << "'"; stream << "'";
@@ -778,7 +780,7 @@ void wxExpr::WriteExpr(ostream& stream) // Write as any other subexpression
{ {
wxExpr *expr = value.first; wxExpr *expr = value.first;
if ((expr->Type() == wxExprWord) && (strcmp(expr->WordValue(), "=") == 0)) if ((expr->Type() == wxExprWord) && (wxStrcmp(expr->WordValue(), _T("=")) == 0))
{ {
wxExpr *arg1 = expr->next; wxExpr *arg1 = expr->next;
wxExpr *arg2 = arg1->next; wxExpr *arg2 = arg1->next;
@@ -992,12 +994,12 @@ void wxExprDatabase::Append(wxExpr *clause)
wxExpr *expr = clause->AttributeValue(attribute_to_hash); wxExpr *expr = clause->AttributeValue(attribute_to_hash);
if (expr) if (expr)
{ {
long functor_key = hash_table->MakeKey((char *)(const char *)functor); long functor_key = hash_table->MakeKey(WXSTRINGCAST functor);
long value_key = 0; long value_key = 0;
if (expr && expr->Type() == wxExprString) if (expr && expr->Type() == wxExprString)
{ {
value_key = hash_table->MakeKey((char *)(const char *)expr->StringValue()); value_key = hash_table->MakeKey(WXSTRINGCAST expr->StringValue());
hash_table->Put(functor_key + value_key, (char *)(const char *)expr->StringValue(), (wxObject *)clause); hash_table->Put(functor_key + value_key, WXSTRINGCAST expr->StringValue(), (wxObject *)clause);
} }
else if (expr && expr->Type() == wxExprInteger) else if (expr && expr->Type() == wxExprInteger)
{ {
@@ -1011,7 +1013,7 @@ void wxExprDatabase::Append(wxExpr *clause)
wxExpr *wxExprDatabase::HashFind(const wxString& functor, long value) const wxExpr *wxExprDatabase::HashFind(const wxString& functor, long value) const
{ {
long key = hash_table->MakeKey((char *)(const char *)functor) + value; long key = hash_table->MakeKey(WXSTRINGCAST functor) + value;
// The key alone isn't guaranteed to be unique: // The key alone isn't guaranteed to be unique:
// must supply value too. Let's assume the value of the // must supply value too. Let's assume the value of the
@@ -1021,8 +1023,8 @@ wxExpr *wxExprDatabase::HashFind(const wxString& functor, long value) const
wxExpr *wxExprDatabase::HashFind(const wxString& functor, const wxString& value) const wxExpr *wxExprDatabase::HashFind(const wxString& functor, const wxString& value) const
{ {
long key = hash_table->MakeKey((char *)(const char *)functor) + hash_table->MakeKey((char *)(const char *)value); long key = hash_table->MakeKey(WXSTRINGCAST functor) + hash_table->MakeKey(WXSTRINGCAST value);
return (wxExpr *)hash_table->Get(key, (char *)(const char *)value); return (wxExpr *)hash_table->Get(key, WXSTRINGCAST value);
} }
void wxExprDatabase::ClearDatabase(void) void wxExprDatabase::ClearDatabase(void)
@@ -1045,7 +1047,7 @@ bool wxExprDatabase::Read(const wxString& filename)
{ {
noErrors = 0; noErrors = 0;
FILE *f = fopen((const char *)filename, "r"); FILE *f = fopen(filename.fn_str(), "r");
if (f) if (f)
{ {
thewxExprDatabase = this; thewxExprDatabase = this;
@@ -1068,7 +1070,8 @@ bool wxExprDatabase::ReadFromString(const wxString& buffer)
noErrors = 0; noErrors = 0;
thewxExprDatabase = this; thewxExprDatabase = this;
LexFromString((char *)(const char *)buffer); wxWX2MBbuf buf = buffer.mb_str();
LexFromString(MBSTRINGCAST buf);
yyparse(); yyparse();
wxExprCleanUp(); wxExprCleanUp();
return (noErrors == 0); return (noErrors == 0);
@@ -1076,7 +1079,7 @@ bool wxExprDatabase::ReadFromString(const wxString& buffer)
bool wxExprDatabase::Write(const wxString& fileName) bool wxExprDatabase::Write(const wxString& fileName)
{ {
ofstream str((char *)(const char *)fileName); ofstream str(MBSTRINGCAST fileName.mb_str());
if (str.bad()) if (str.bad())
return FALSE; return FALSE;
return Write(str); return Write(str);
@@ -1190,32 +1193,33 @@ char *wxmake_word(char *str)
char *wxmake_string(char *str) char *wxmake_string(char *str)
{ {
char *s, *t; wxChar *s, *t;
int len, i; int len, i;
wxMB2WXbuf sbuf = wxConv_libc.cMB2WX(str);
str++; /* skip leading quote */ str++; /* skip leading quote */
len = strlen(str) - 1; /* ignore trailing quote */ len = wxStrlen(sbuf) - 1; /* ignore trailing quote */
s = new char[len + 1]; s = new wxChar[len + 1];
t = s; t = s;
for(i=0; i<len; i++) for(i=0; i<len; i++)
{ {
if (str[i] == '\\' && str[i+1] == '"') if (sbuf[i] == _T('\\') && sbuf[i+1] == _T('"'))
{ {
*t++ = '"'; *t++ = _T('"');
i ++; i ++;
} }
else if (str[i] == '\\' && str[i+1] == '\\') else if (sbuf[i] == _T('\\') && sbuf[i+1] == _T('\\'))
{ {
*t++ = '\\'; *t++ = _T('\\');
i ++; i ++;
} }
else else
*t++ = str[i]; *t++ = sbuf[i];
} }
*t = '\0'; *t = _T('\0');
wxExpr *x = new wxExpr(wxExprString, s, FALSE); wxExpr *x = new wxExpr(wxExprString, s, FALSE);
return (char *)x; return (char *)x;