Re: std::string vs other strings

Roman Kubiak <[email protected]> Mon, 12 Nov 2012 19:59:46 +0100
Newsgroups gmane.comp.lang.lua.bind.user
Message-ID <CACugK=atQ06_TCcZMWm6fyAdGH+QtS4cxxzcK8xEHg+Yx4bs0Q@mail.gmail.com>
I got back to the problem and tried again with the conversion, i noticed
that it matters when the converter is defined in the include files, so now
i get the converter working, but too much.
i have a simple method that prints a string to the console defined as
void console (const String &textToPrint);
and i have loads of methods/functions that return a String() object for
example:
String getName() { return (String("my name")); }

now when the converter is registered i can't do
console (getName())

this causes an error saying there are no valid candidates for the console
call, i noticed that the converter is
using the compute_score() to determine if a String() object is a string
(lua_type(L, index) == LUA_TSTRING) and i'ts not
it's LUA_TUSERDATA, now if i return 1 in compute_score() the function
from() will be called but it will have the
String() object on the stack, and i can't convert it using
luabind::object() since it's object_cast<>() methos will
call the converter again, and it will loop forever.

What's the solution to this ?

====================================================================
         _ _                              _           _ _        _
__ _____| | |_ __ _ __ _ ___   __ ___ _ _| |_ _ _ ___| | |___ __| |
\ V / _ \ |  _/ _` / _` / -_) / _/ _ \ ' \  _| '_/ _ \ | / -_) _` |
 \_/\___/_|\__\__,_\__, \___| \__\___/_||_\__|_| \___/_|_\___\__,_|
                   |___/
====================================================================






On Mon, Nov 12, 2012 at 4:47 PM, Cory Riddell <[email protected]> wrote:

> Thank you for the pointer. It ended up being incredibly simple. Here's
> my code for CString:
>
> namespace luabind
> {
>     template <>
>     struct default_converter<CString>
>       : native_converter_base<CString>
>     {
>         static int compute_score(lua_State* L, int index)
>         {
>             return lua_type(L, index) == LUA_TSTRING ? 0 : -1;
>         }
>
>         CString from(lua_State* L, int index)
>         {
>             return CString(lua_tostring(L, index), lua_rawlen(L, index));
>         }
>
>         void to(lua_State* L, CString const& value)
>         {
>             lua_pushlstring(L, (LPCTSTR)value, value.GetLength());
>         }
>     };
>
>     template <>
>     struct default_converter<CString const>
>       : default_converter<CString>
>     {};
>
>     template <>
>     struct default_converter<CString const&>
>       : default_converter<CString>
>     {};
> }
>
>
> The only possible problem that I can see here is needing to convert from
> wchar_t to char (utf-8) when making a unicode build.
>
> Cory
>
>
>
> On 11/9/2012 3:35 PM, Willi Schinmeyer wrote:
> > The std::string converter seems to be defined in detail/policy.hpp:756
> > as a specialization of default_converter. I'd start my investigation
> there.
> >
> >
> ------------------------------------------------------------------------------
> > Everyone hates slow websites. So do we.
> > Make your web apps faster with AppDynamics
> > Download AppDynamics Lite for free today:
> > http://p.sf.net/sfu/appdyn_d2d_nov
> > _______________________________________________
> > luabind-user mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/luabind-user
> >
>
>
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_d2d_nov
> _______________________________________________
> luabind-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/luabind-user
>

------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov

_______________________________________________
luabind-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/luabind-user