From: Ove Kaaven Date: Tue, 13 Apr 1999 10:34:24 +0000 (+0000) Subject: More Unicode stuff. Implemented wxFprintf. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/84fff0b395adcfecd09dd65389ba7c1c47dd7eee More Unicode stuff. Implemented wxFprintf. Some printfs changed to wxPrintf, fprintf to wxFprintf, as well as the usual char->wxChar and _T(). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2133 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/datstrm.cpp b/src/common/datstrm.cpp index b9ad7564f9..bdf796f7c2 100644 --- a/src/common/datstrm.cpp +++ b/src/common/datstrm.cpp @@ -171,18 +171,18 @@ void wxDataOutputStream::Write8(unsigned char i) void wxDataOutputStream::WriteLine(const wxString& line) { #ifdef __WXMSW__ - wxString tmp_string = line + "\r\n"; + wxString tmp_string = line + _T("\r\n"); #else - wxString tmp_string = line + '\n'; + wxString tmp_string = line + _T('\n'); #endif - Write((const char *) tmp_string, tmp_string.Length()); + Write((const wxChar *) tmp_string, tmp_string.Length()*sizeof(wxChar)); } void wxDataOutputStream::WriteString(const wxString& string) { Write32(string.Length()); - Write((const char *) string, string.Length()); + Write((const wxChar *) string, string.Length()*sizeof(wxChar)); } // Must be at global scope for VC++ 5 diff --git a/src/common/log.cpp b/src/common/log.cpp index 1ba8688083..bafc4b8466 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -535,9 +535,9 @@ void wxLogGui::DoLog(wxLogLevel level, const wxChar *szString, time_t t) OutputDebugString(wxString(szString) + _T("\n\r")); #else // send them to stderr - fprintf(stderr, "%s: %s\n", - level == wxLOG_Trace ? "Trace" : "Debug", - (const char*)wxConv_libc.cWX2MB(szString)); + wxFprintf(stderr, _T("%s: %s\n"), + level == wxLOG_Trace ? _T("Trace") : _T("Debug"), + szString); fflush(stderr); #endif } @@ -1018,7 +1018,7 @@ void wxOnAssert(const char *szFile, int nLine, const wxChar *szMsg) // make life easier for people using VC++ IDE: clicking on the message // will take us immediately to the place of the failed assert #ifdef __VISUALC__ - sprintf(szBuf, _T("%s(%d): assert failed"), szFile, nLine); + wxSprintf(szBuf, _T("%s(%d): assert failed"), szFile, nLine); #else // !VC++ // make the error message more clear for all the others #ifdef wxSprintf diff --git a/src/common/objstrm.cpp b/src/common/objstrm.cpp index 2d916d629f..6f6c6e607f 100644 --- a/src/common/objstrm.cpp +++ b/src/common/objstrm.cpp @@ -50,7 +50,7 @@ wxString wxObjectOutputStream::GetObjectName(wxObject *obj) { wxString name; - name.Printf("%x", (unsigned long)obj); + name.Printf(_T("%x"), (unsigned long)obj); return name; } @@ -63,16 +63,16 @@ void wxObjectOutputStream::WriteObjectDef(wxObjectStreamInfo& info) if (info.duplicate) { data_s.WriteString(TAG_DUPLICATE_OBJECT); data_s.WriteString(GetObjectName(info.object)); - printf("info.object (dup %s)\n", info.object->GetClassInfo()->GetClassName()); + wxPrintf(_T("info.object (dup %s)\n"), info.object->GetClassInfo()->GetClassName()); return; } if (info.object) { data_s.WriteString(info.object->GetClassInfo()->GetClassName()); - printf("info.object (%s)\n", info.object->GetClassInfo()->GetClassName()); + wxPrintf(_T("info.object (%s)\n"), info.object->GetClassInfo()->GetClassName()); } else { data_s.WriteString(TAG_EMPTY_OBJECT); - printf("info.object (NULL)\n"); + wxPrintf(_T("info.object (NULL)\n")); return; } diff --git a/src/common/stream.cpp b/src/common/stream.cpp index 305c8c5128..1c34deffff 100644 --- a/src/common/stream.cpp +++ b/src/common/stream.cpp @@ -752,7 +752,12 @@ wxOutputStream& wxOutputStream::operator<<(const char *string) wxOutputStream& wxOutputStream::operator<<(wxString& string) { +#if wxUSE_UNICODE + const wxWX2MBbuf buf = string.mb_str(); + return *this << buf; +#else return Write(string, string.Len()); +#endif } wxOutputStream& wxOutputStream::operator<<(char c) @@ -764,32 +769,32 @@ wxOutputStream& wxOutputStream::operator<<(short i) { wxString strint; - strint.Printf("%i", i); - return Write(strint, strint.Len()); + strint.Printf(_T("%i"), i); + return *this << strint; } wxOutputStream& wxOutputStream::operator<<(int i) { wxString strint; - strint.Printf("%i", i); - return Write(strint, strint.Len()); + strint.Printf(_T("%i"), i); + return *this << strint; } wxOutputStream& wxOutputStream::operator<<(long i) { wxString strlong; - strlong.Printf("%i", i); - return Write((const char *)strlong, strlong.Len()); + strlong.Printf(_T("%i"), i); + return *this << strlong; } wxOutputStream& wxOutputStream::operator<<(double f) { wxString strfloat; - strfloat.Printf("%f", f); - return Write(strfloat, strfloat.Len()); + strfloat.Printf(_T("%f"), f); + return *this << strfloat; } #if wxUSE_SERIAL diff --git a/src/common/time.cpp b/src/common/time.cpp index 71ad2fac3a..c221079ae4 100644 --- a/src/common/time.cpp +++ b/src/common/time.cpp @@ -319,7 +319,7 @@ wxTime wxTime::Min(const wxTime& t) const } #ifndef __SALFORDC__ -wxTime::operator char *(void) +wxTime::operator wxChar *(void) { return FormatTime(); } @@ -332,8 +332,8 @@ void wxTime::SetFormat(const wxTime::tFormat lFormat, wxTime::Precision = lPrecision; } -char *wxTime::FormatTime() const { - static char timeBuf[30]; +wxChar *wxTime::FormatTime() const { + static wxChar timeBuf[30]; unsigned hh(GetHour()); switch (Format) { @@ -346,18 +346,18 @@ char *wxTime::FormatTime() const { switch (Precision) { case wxStdMinSec: - sprintf(timeBuf,"%2d:%02d:%02d",hh,GetMinute(),GetSecond()); + wxSprintf(timeBuf,_T("%2d:%02d:%02d"),hh,GetMinute(),GetSecond()); break; case wxStdMin: - sprintf(timeBuf,"%2d:%02d",hh,GetMinute()); + wxSprintf(timeBuf,_T("%2d:%02d"),hh,GetMinute()); break; } if (Format == wx12h) if (GetHour() <= 12) - strcat(timeBuf,_("am")); + wxStrcat(timeBuf,_("am")); else - strcat(timeBuf,_("pm")); + wxStrcat(timeBuf,_("pm")); return timeBuf; } diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index 52b8878187..f6cec3461c 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -71,7 +71,7 @@ #define _MAXPATHLEN 500 -extern char *wxBuffer; +extern wxChar *wxBuffer; // ---------------------------------------------------------------------------- // private functions @@ -258,48 +258,47 @@ StringToLong (char *s, long *number) *number = strtol (s, (char **) NULL, 10); } -char * +wxChar * IntToString (int number) { - static char buf[20]; + static wxChar buf[20]; - sprintf (buf, "%d", number); + wxSprintf (buf, _T("%d"), number); return buf; } -char * +wxChar * LongToString (long number) { - static char buf[20]; + static wxChar buf[20]; - sprintf (buf, "%ld", number); + wxSprintf (buf, _T("%ld"), number); return buf; } // Array used in DecToHex conversion routine. -static char hexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', - 'C', 'D', 'E', 'F' }; +static wxChar hexArray[] = _T("0123456789ABCDEF"); // Convert 2-digit hex number to decimal int wxHexToDec(const wxString& buf) { int firstDigit, secondDigit; - if (buf.GetChar(0) >= 'A') - firstDigit = buf.GetChar(0) - 'A' + 10; + if (buf.GetChar(0) >= _T('A')) + firstDigit = buf.GetChar(0) - _T('A') + 10; else - firstDigit = buf.GetChar(0) - '0'; + firstDigit = buf.GetChar(0) - _T('0'); - if (buf.GetChar(1) >= 'A') - secondDigit = buf.GetChar(1) - 'A' + 10; + if (buf.GetChar(1) >= _T('A')) + secondDigit = buf.GetChar(1) - _T('A') + 10; else - secondDigit = buf.GetChar(1) - '0'; + secondDigit = buf.GetChar(1) - _T('0'); return firstDigit * 16 + secondDigit; } // Convert decimal integer to 2-character hex string -void wxDecToHex(int dec, char *buf) +void wxDecToHex(int dec, wxChar *buf) { int firstDigit = (int)(dec/16.0); int secondDigit = (int)(dec - (firstDigit*16.0)); @@ -311,7 +310,7 @@ void wxDecToHex(int dec, char *buf) // Convert decimal integer to 2-character hex string wxString wxDecToHex(int dec) { - char buf[3]; + wxChar buf[3]; wxDecToHex(dec, buf); return wxString(buf); } @@ -407,8 +406,8 @@ char *wxStripMenuCodes (char *in, char *out) wxString wxStripMenuCodes(const wxString& str) { - char *buf = new char[str.Length() + 1]; - wxStripMenuCodes((char*) (const char*) str, buf); + wxChar *buf = new wxChar[str.Length() + 1]; + wxStripMenuCodes(WXSTRINGCAST str, buf); wxString str1(buf); delete[] buf; return str1; @@ -816,14 +815,14 @@ int isascii( int c ) // ---------------------------------------------------------------------------- // Get Full RFC822 style email address -bool wxGetEmailAddress(char *address, int maxSize) +bool wxGetEmailAddress(wxChar *address, int maxSize) { wxString email = wxGetEmailAddress(); if ( !email ) return FALSE; - strncpy(address, email, maxSize - 1); - address[maxSize - 1] = '\0'; + wxStrncpy(address, email, maxSize - 1); + address[maxSize - 1] = _T('\0'); return TRUE; } @@ -839,7 +838,7 @@ wxString wxGetEmailAddress() if ( !!user ) { wxString email(user); - email << '@' << host; + email << _T('@') << host; } } diff --git a/src/common/wxchar.cpp b/src/common/wxchar.cpp index 52d8c1ac74..1307daaf50 100644 --- a/src/common/wxchar.cpp +++ b/src/common/wxchar.cpp @@ -24,6 +24,7 @@ #pragma hdrstop #endif +#include #include #include #include @@ -126,7 +127,26 @@ int WXDLLEXPORT wxVprintf(const wxChar *fmt, va_list argptr) { wxString str; str.PrintfV(fmt,argptr); - printf("%s",(const char*)str.mb_str()); + printf("%s", (const char*)str.mb_str()); + return str.Len(); +} + +int WXDLLEXPORT wxFprintf(FILE *stream, const wxChar *fmt, ...) +{ + va_list argptr; + int ret; + + va_start(argptr, fmt); + ret = wxFvprintf(stream, fmt, argptr); + va_end(argptr); + return ret; +} + +int WXDLLEXPORT wxFvprintf(FILE *stream, const wxChar *fmt, va_list argptr) +{ + wxString str; + str.PrintfV(fmt,argptr); + fprintf(stream, "%s", (const char*)str.mb_str()); return str.Len(); } diff --git a/src/common/zstream.cpp b/src/common/zstream.cpp index 4e896e2fd8..90d3338161 100644 --- a/src/common/zstream.cpp +++ b/src/common/zstream.cpp @@ -133,7 +133,7 @@ wxZlibOutputStream::~wxZlibOutputStream() err = deflate(m_deflate, Z_FINISH); if (err != Z_STREAM_END) { - wxLogDebug( "wxZlibOutputStream: an error occured while closing the stream.\n" ); + wxLogDebug( _T("wxZlibOutputStream: an error occured while closing the stream.\n") ); return; }