Re: std::string vs other strings

Cory Riddell <[email protected]> Mon, 12 Nov 2012 22:42:04 -0600
Newsgroups gmane.comp.lang.lua.bind.user
Message-ID <[email protected]>
I don't have your String class, so I tried the same thing you
describing using MFC CStrings.

In my C++ code, I defined the following:

void console(const CString &textToPrint)

{

// write output to a debug window and echo it to a log file

printToOutput(std::string(textToPrint));

}

CString getName()

{

return CString("my name");

}

I bound them:

luabind::module(myLuaState) [

luabind::def("console", console),

luabind::def("getName", getName)

];

Then called them in a lua script:

console(getName())

Everything seemed to work just fine. The string "my name" is written
to my debug window and echoed to my log file by my printToOutput
function.

Maybe post your converter definitions and how you are binding to
lua.

Cory

On 11/12/2012 12:59 PM, Roman Kubiak
wrote:

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

------------------------------------------------------------------------------
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