bug with wxVariant

Alexander Vassilev avasilev at voipgate.com
Sun Oct 22 16:02:53 PDT 2006


>
> wxLogVerbose( "there is " + nb + " items containing " + nb2 + "other items")
>   
THe reason this is not possible is very simple - string literals are 
pointers, and using operator + between poitners and ints is plain 
pointer arithmetic. Regard it as a limitation of the C++ language if you 
want. To do what you want, use wxString::Format().

Regards
Alex







Sebastien Senechal wrote:
> Hi  Willem,
>
>
> Le mardi octobre 17 2006 18:33, Willem Kokke a écrit :
>   
>> wxVariant::GetLong ends up calling Convert
>>
>> bool wxVariant::Convert(long* value) const
>> {
>>     wxString type(GetType());
>>     if (type == wxT("double"))
>>         *value = (long) (((wxVariantDoubleData*)GetData())->GetValue());
>>     else if (type == wxT("long"))
>>         *value = ((wxVariantDataLong*)GetData())->GetValue();
>> #ifdef HAVE_BOOL
>>     else if (type == wxT("bool"))
>>         *value = (long) (((wxVariantDataBool*)GetData())->GetValue());
>> #endif
>>     else if (type == wxT("string"))
>>         *value = wxAtol((const wxChar*)
>> ((wxVariantDataString*)GetData())->GetValue());
>>     else
>>         return false;
>>
>>     return true;
>> }
>>
>>
>> so it creates 4 temporary string object, loads of string compares and in
>> the end it just calls wxAtol, which calls atol
>>     
>
>   
>> so you are creating a extra temporary wxVariant for no good reason, wasting
>> memory and processor time, just to save a line of code?
>>     
> - yes ! several lines of code multiplied by number of times i used that...
> - alternative is to create wxString temporary variable anyway....
> - i already use atoi for simple and fast conversions :) 
> - and I didn't create wxVariant for that purpose, most of my variables are 
> Already variant... 
>
> generic code, less lines of code, more streamlined and readable code, less 
> prone to errors, less debugging, less maintenance, less cost.
> and yes there is a cost to using generic variable, must have some check on 
> type at some point... 
>
> also if i followed your suggestions, why use functionnalities like wxHashList,  
> etc... instead of goo old STL functions hasmap ? waste of memory and 
> processor time too ? to save a line of code or 2? :) 
>
> but i am concerned with number of operations ttaken by this convert indeed... 
> shall i avoid wxWdigets facilities and prefer stl whenever possible?
>
>
> By the way,  for the exact opposite operation why is wxString(int) still 
> private ? 
>
> 	this is not possible :
> 	wxLogVerbose( "there is " + nb + " items containing " + nb2 + "other items")
>
> 	and again... we need to put brackets and write xxx more lines of code..
> 	don't u find this inconvenient ? or please tell me how u do... 
> 	as i use lots of  debug messages ... (cost of performance but hell debugging 
> is extremelly fast)
>
>   
>> then you might as well use atol(str.c_str()); and get it over with...
>>     
> yup
>   
>> Some people do need to test whether the string contains a valid number. I
>> prefer having a concise library instead of a library with hundreds of
>> utility functions that just discard one single parameter.
>>     
> I agree with you. i am not asking to change the library :)
> i am still discovering wxWidgets, and i just try to understand the logic 
> behind such or such functionnality. i have the impression wxWdigets is 
> heavily inspired by MFC and windows programming ... 
>
>
> and i still consider 
>   char tot = wxVariant("255").GetChar();          => =0x00
> as being a bug, since any developper stubbling upon that code cannot 'guess' 
> this is not 'allowed' in that case, and will spend some debugging time 
> finding out how...
>   also wxVariant not being a conversion utlity is different from other 
> languages (i.e. QVariant in QT)
>
>   
>> if you really 
>> can't stand the extra line of code, write a utility functions yourself.
>>     
> done
>
> regards
>
> seb
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: wx-users-unsubscribe at lists.wxwidgets.org
> For additional commands, e-mail: wx-users-help at lists.wxwidgets.org
>
>
>   





More information about the wx-users mailing list