lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


in the pkg file, add  the following line:

typedef int HBboolean;      // for tolua 3.2

or

typedef bool HBboolean;   // for tolua 4.0

-- waldemar

At 12:23 28/4/2003 -0400, you wrote:
If I create a package that contains:

        HBboolean IsPlaying(hbBaseAudioObject* audio);

and in the script if I do:

        flag = Audio:IsPlaying("MP3Splash")

        if flag == Core.HB_TRUE then
                Log:Print("Audio is playing")
        end

This won't work as IsPlaying returns a userdata, and Core.HB_FALSE and
Core.HB_TRUE are both numbers.

How can I cure this mis-match with ToLua? I seem to be doing something
fundamentally wrong.

Thanks
Mike

Quoting pixellent@stodge.net:

> Ah, it seems I have to use Core.HB_FALSE and Core.HB_TRUE. ToLua generated
> this
> code:
>
> int tolua_hbCoreTypes_open (lua_State* tolua_S)
> {
>  tolua_open(tolua_S);
>  toluaI_reg_types(tolua_S);
>  tolua_module(tolua_S,"Habitat");
>  tolua_module(tolua_S,"Core");
>  tolua_constant(tolua_S,"Core","HB_FALSE",HB_FALSE);
>  tolua_constant(tolua_S,"Core","HB_TRUE",HB_TRUE);
> }
>
> Thanks again
> Mike
>
> Quoting Ariel Manzur <listas@anime.com.ar>:
>
> > Hi..
> >
> > I'm not sure but tolua might be including the #defined stuff inside the
> > modules, so you might have to use Habitat.Core.HB_TRUE
> >
> > Anyway, tolua has it's own boolean implementation (I think I saw a
> > tolua_pushbool() function on the library, they just push a number or nil),
>
> > so you can safely use functions and variables of type 'bool'. You should
> > also know that (as far as I know, someone please correct me) 0 is _true_ on
>
> > lua:
> >
> > $ lua
> > Lua 4.0.1  Copyright (C) 1994-2000 TeCGraf, PUC-Rio
> >  > a = 0
> >  > if a then print "a is true" end
> > a is true
> >  > a = nil
> >  > if a then print "a is true" end
> >  > ^Z
> >
> > it took me a while to figure that out.. I guess '0' is a value of type
> > number, and that's better that just 'nil'  ;) we usually have the lines
> > 'true = 1' and 'false = nil' at the begining of our scripts to avoid
> > confusion..
> >
> > Hope that helps.. bye.
> >
> > Ariel.
> >
> > At 22:39 26/04/2003 -0400, you wrote:
> > > >From my reading Lua doesn't support booleans. No problem I thought; I'll
>
> > > just
> > >define TRUE and FALSE and typedef unsigned char to be my own boolean
> type,
> > and
> > >then expose them using ToLua.
> > >
> > >So this is my C++ code:
> > >
> > >namespace Habitat
> > >{
> > >         namespace Core
> > >         {
> > >                 typedef         unsigned char           HBboolean;
> > >                 #define         HB_TRUE                         1
> > >                 #define         HB_FALSE                        0
> > >         }
> > >}
> > >
> > >And this is my package file:
> > >
> > >module Habitat
> > >{
> > >         module Core
> > >         {
> > >                 typedef         unsigned char           HBboolean;
> > >                 #define         HB_TRUE                         1
> > >                 #define         HB_FALSE                        0
> > >         }
> > >}
> > >
> > >Now when I try to use these in my Lua scripts, nothing works:
> > >
> > >         flag = HB_FALSE
> > >         flag2 = HB_TRUE
> > >
> > >         Log:Print(type(HB_FALSE))
> > >         Log:Print(type(HB_TRUE))
> > >
> > >         Log:Print(type(flag))
> > >         Log:Print(type(flag2))
> > >
> > >
> > >These all display:
> > >
> > >nil
> > >
> > >Am I missing something really obvious? Any help greatly appreciated.
> > >
> > >Thanks
> > >Mike
> >
> > Ariel.
> > http://Anime.com.ar
> > snm
> >
> >
>
>
>
>