55 #include <wx/string.h>
56 #include <wx/datetime.h>
57 #include <wx/tokenzr.h>
59 #include <wx/wxcrtvararg.h>
60 #include <wx/convauto.h>
85 m_pString = String ?
new wxString(String) :
new wxString;
90 m_pString = String ?
new wxString(String) :
new wxString;
95 m_pString =
new wxString(Character, nRepeat);
100 m_pString =
new wxString(Character, nRepeat);
106 m_pString = String ?
new wxString(*String) :
new wxString;
191 if( i >= 0 && i < (
int)
Length() )
196 return(
SG_T(
'\0') );
206 return(
SG_T(
'\0') );
216 return(
SG_T(
'\0') );
275 wxString _Format(
Format); _Format.Replace(
"%s",
"%ls");
276 va_list argptr; va_start(argptr, _Format);
279 va_list argptr; va_start(argptr,
Format);
294 wxString _Format(
Format); _Format.Replace(
"%s",
"%ls");
295 va_list argptr; va_start(argptr, _Format);
298 va_list argptr; va_start(argptr,
Format);
311 wxString _Format(
Format); _Format.Replace(
"%s",
"%ls");
312 va_list argptr; va_start(argptr, _Format);
313 int Result =
m_pString->PrintfV(_Format, argptr);
315 va_list argptr; va_start(argptr,
Format);
328 wxString _Format(
Format); _Format.Replace(
"%s",
"%ls");
329 va_list argptr; va_start(argptr, _Format);
330 int Result =
m_pString->PrintfV(_Format, argptr);
332 va_list argptr; va_start(argptr,
Format);
534 return(
m_pString->IsSameAs(Character, bCase) );
539 return(
m_pString->IsSameAs(Character, bCase) );
573 for(
size_t i=0; i<
Length(); i++)
620 return( (
int)(n -
m_pString->Length()) );
631 return( (
int)(n -
m_pString->Length()) );
642 return(
m_pString->Find(Character, fromEnd) );
647 return(
m_pString->Find(Character, fromEnd) );
748 int Value;
return(
asInt(Value) ? Value : 0 );
753 const wxChar *start =
m_pString->c_str(); wxChar *end;
755 int value = wxStrtol(start, &end, 10);
786 double Value;
return(
asDouble(Value) ? Value : 0. );
791 const wxChar *start =
m_pString->c_str(); wxChar *end;
793 double value = wxStrtod(start, &end);
858 const wxScopedCharBuffer Buffer =
m_pString->utf8_str();
860 String.
Set_Data(Buffer.data(), Buffer.length() + 1);
900 wxScopedCharBuffer Buffer;
911 default : Buffer =
m_pString->mb_str(wxConvAuto ());
break;
914 String.
Set_Data(Buffer.data(), Buffer.length() + 1);
954 #if wxCHECK_VERSION(3, 1, 0)
957 const wxScopedCharBuffer Buffer =
m_pString->ToAscii();
960 String.
Set_Data(Buffer.data(), Buffer.length() + 1);
1014 return(
Add(Strings) );
1020 for(
int i=0; i<nStrings; i++)
1048 for(
size_t i=0; i<Strings.
Get_Size(); i++)
1076 return(
Add(String) );
1081 for(
size_t i=
Get_Size()-1; i>Index; i--)
1104 for(
size_t i=Index+1; i<
Get_Size(); i++)
1117 while(
Del(Count) ) {}
1119 for(
size_t i=
Get_Size(); i<Count; i++)
1133 CSG_Index_Compare_Strings(
CSG_String **Values,
bool Ascending) : m_Values(Values), m_Ascending(Ascending) {}
1137 sLong a = m_Ascending ? _a : _b;
1138 sLong b = m_Ascending ? _b : _a;
1140 return( m_Values[a]->Cmp(*m_Values[b]) );
1210 CSG_String s; wxDateTime t; t.SetToCurrent();
1214 s += t.FormatISODate().wc_str(); s +=
"/";
1217 s += t.FormatISOTime().wc_str();
1232 int deg, min;
double sec;
char sig = Value < 0. ?
'-' :
'+';
1239 Value = fmod(Value, 360.);
1241 Value = 60. * (Value - deg);
1243 Value = 60. * (Value - min);
1252 double sig = 1., deg = 0., min = 0., sec = 0.;
1258 sig = -1.; deg = -deg;
1269 return( sig * (deg + min / 60. + sec / 3600.) );
1284 Value = fabs(Value);
1286 for(decimals=0; decimals<maxDecimals; decimals++)
1288 double Remainder = Value - floor(Value);
1290 if( Remainder == 0. )
1298 return( maxDecimals );
1311 for(
size_t i=0; i<String.
Length(); i++)
1346 if ( Precision == -99 )
1350 else if( Precision == -98 )
1354 else if( Precision == 0 )
1356 s.
Printf(
"%d", (
int)Value);
1358 else if( Precision > 0 )
1360 s.
Printf(
"%.*f", Precision, Value);
1366 if( Precision == 0 )
1372 s.
Printf(
"%.*f", Precision, Value);
1417 {
"table",
"\n============\n",
"============\n" },
1418 {
"tr" ,
"" ,
"\n" },
1419 {
"th" ,
"" ,
"\t" },
1420 {
"td" ,
"" ,
"\t" },
1422 {
"b" ,
"[" ,
"]" },
1423 {
"i" ,
"'" ,
"'" },
1424 {
"br" ,
"\n" ,
"" },
1425 {
"p" ,
"" ,
"\n" },
1426 {
"hr" ,
"\n____________\n",
"\n" },
1427 {
"h1" ,
"\n############\n",
"\n" },
1428 {
"h2" ,
"\n============\n",
"\n" },
1429 {
"h3" ,
"\n------------\n",
"\n" },
1430 {
"h4" ,
"\n" ,
"\n" },
1431 {
"ol" ,
"\n" ,
"\n" },
1432 {
"ul" ,
"\n" ,
"\n" },
1433 {
"li" ,
"(-) " ,
"\n" },
1439 for(
int i=0, n; !Tags[i][0].
is_Empty(); i++)
1441 _Text.
Replace(
"<" + Tags[i][0] +
">", Tags[i][1]);
1443 while( (n = _Text.
Find(
"<" + Tags[i][0])) >= 0 )
1447 if( Tags[i][0].Cmp(
"a") == 0 && (n = Right.
BeforeFirst(
'>').
Find(
"href=\"")) >= 0 )
1451 if( !href.
is_Empty() && (n = Right.
Find(
"</a>")) >= 0 )
1457 _Text = Left +
"[" + text +
"](" + href +
")" + Right.
Right(Right.
Length() - n);
1464 _Text = Left + Tags[i][1] + Right.
AfterFirst(
'>');
1467 _Text.
Replace(
"</" + Tags[i][0] +
">", Tags[i][2]);
1483 m_pTokenizer =
new wxStringTokenizer();
1489 m_pTokenizer =
new wxStringTokenizer();
1497 delete(m_pTokenizer);
1503 return( m_pTokenizer->CountTokens() );
1509 return( m_pTokenizer->GetLastDelimiter() );
1515 wxString s(m_pTokenizer->GetNextToken());
1523 return( m_pTokenizer->GetPosition() );
1529 wxString s(m_pTokenizer->GetString());
1537 return( m_pTokenizer->HasMoreTokens() );
1543 wxStringTokenizerMode _Mode;
1547 default: _Mode = wxTOKEN_DEFAULT ;
break;
1555 m_pTokenizer->SetString(String.
c_str(), Delimiters.
c_str(), _Mode);