🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

implicitly convert to string

Started by
2 comments, last by zola 20 years ago
Hi all Is it possible to implicitely convert values (int, float, double) to bstr in angelscript? If not, this would be a nice feature to add in next versions so we could write the following int i=5; float pi=3.14; bstr msg="Hi i="+i+" pi="+pi; I know I could add some conversion functions myselfe, but if it''s already there... regards Tom
Advertisement
There is no implicit conversion to bstr. However you can easily add it by registering operator behaviour for the bstr type that take int and bstr (and float, etc).

Here''s a sample function for formatting an int to a bstr:

asBSTR bstrFormatInt(int number){	acCString str;	str.Format("%d", number);	// We must allocate a new bstr that the script engine will free afterwards	asBSTR bstr = asBStrAlloc(str.GetLength());	memcpy(bstr, str, str.GetLength());	return bstr;}


It is a useful feature you ask for, but AngelScript will not come with it built-in. Instead I will release some code with functions for registering useful functions and operators for the bstr type. Version 1.8.0 will even remove the built-in bstr type, so that each application can register their own string type (or use the code I''ll release on the side to register the same bstr type).



__________________________________________________________
www.AngelCode.com - game development and more...
AngelScript - free scripting library - Tower - free puzzle game

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Thank You for the quick reply.

I have made a class for string conversion with lots of overloaded static functions but i can''t find the correct way of registering them.

class StringConverter{
static asBSTR toString(int i);
static asBSTR toString(float f);
static asBSTR toString(Vector3& v);
// ...
}

I tried registering with:

engine->RegisterGlobalFunction(
"bstr toString(float f)",
asFUNCTION( (asBSTR (StringConverter::toString)(float) ) ),
asCALL_CDECL);

but I always end up with errors

CBindingsAngelScript.h(128) : error C2440: ''type cast'' : cannot convert from ''overloaded-function'' to ''unsigned char *''

I''m simply no function pointer expert

Any help is highly appreciated.

Thanks
Tom
Yeah. It''s always the same.
I post something in a forum and 5 minutes later I find the answer myself
So, sorry for the spamming...

In case anyone is interested the correct way of registering overloaded static functions is:

engine->RegisterGlobalFunction(
"bstr toString(float f)",
asFUNCTION( (asBSTR (*)(float)) StringConverter::toString ),
asCALL_CDECL);

engine->RegisterGlobalFunction(
"bstr toString(int i)",
asFUNCTION( (asBSTR (*)(int)) StringConverter::toString ),
asCALL_CDECL);

cheers
Tom

This topic is closed to new replies.

Advertisement