On Thu, Feb 19, 2009 at 10:15 AM, Andre Arpin <ar...@kingston.net> wrote:
> John Labenski <jlaben...@...> writes:
>
>> On Wed, Feb 18, 2009 at 7:58 PM, Andre Arpin <ar...@...> wrote:
>> > The value for wxstc.wxSTC_MASK_FOLDERS has to be -33554432 or maybe -
> 0x2000000
>> >
>> > or SetMarginMask should expect an unsigned int (I did not check that).

The C++ function has this signature:
wxStyledTextCtrl::SetMarginMask(int margin, int mask)

Even if wxLua handed it with an unsigned int it would be turned right
back into -33554432 inside the wxStyledTextCtrl function. I see that
editor.wx.lua makes a call to SetMarginMask(2,
wxstc.wxSTC_MASK_FOLDERS) and it works fine since if you type "do \n
end" into wxlua.exe, Scintilla draws the code folding icons.

So just to be sure, what is the problem? Do you not see the code folding icons?

Regards,
    John


>>
>> I'm not sure what you're trying to do, but this is the C++ code that defines
> it.
>>
>> #define wxSTC_MASK_FOLDERS 0xFE000000
>>
>
> this solves the problem this number is too large for an int
> static int LUACALL wxLua_wxStyledTextCtrl_SetMarginMask(lua_State *L)
> {
>    double doubleMask = wxlua_getnumbertype(L, 3);
>    int mask = (doubleMask > INT_MAX) ? (int)((doubleMask - INT_MAX) -1 )|
>         INT_MIN : (int)doubleMask;
>
> ---------- you can look below if you like it shows some detail of
> ---------- the problem (if you are interested)
>
> We are hitting a LUA limit (really a double to int limit)
> ---------------the first section show the problem in LUA
> ---------------the second section show the problem in the C code
> ------------- first section -------------
> --- the following shows that lua will display both
> --- wxstc.wxSTC_MASK_FOLDERS and -33554432 as fe000000
> --- but they are not equal
>    print("1:", wxstc.wxSTC_MASK_FOLDERS, string.format("%x",
> wxstc.wxSTC_MASK_FOLDERS))
> 1:      4261412864      fe000000
>    print("2:", string.format("%x", -33554432))
> 2:      fe000000
>    print("3:",   wxstc.wxSTC_MASK_FOLDERS == (-33554432))
> 3:      false
>    print("4:", string.format("%x", wxstc.wxSTC_MASK_FOLDERS - (-33554432)))
> 4:      0
>    print("5:", wxstc.wxSTC_MASK_FOLDERS - (-33554432))
> 5:      4294967296
>    local xx = wxstc.wxSTC_MASK_FOLDERS - (-33554432)
>    print("6:",  xx, string.format("%x", xx))
> 6:      4294967296      0
>
> ------------- second section -------------
> static int LUACALL wxLua_wxStyledTextCtrl_SetMarginMask(lua_State *L)
> {
>    // int mask
>    int mask = (int)wxlua_getnumbertype(L, 3);
>    // int margin
>    int margin = (int)wxlua_getnumbertype(L, 2); <<<< breakpoint on this line
> -----------> breaking while the program execute these line
> -----------> the mask value as displayed in the watch panel
>    editor:SetMarginMask(2, -1)
>                mask    0xffffffff      int
>    editor:SetMarginMask(2, wxstc.wxSTC_MASK_FOLDERS)
>                mask    0x80000000      int  <<<< this is the problem
>   editor:SetMarginMask(2, -2)
>                mask    0xfffffffe      int
>   editor:SetMarginMask(2, -33554432)
>                mask    0xfe000000      int
>    editor:SetMarginMask(2, -3)
>                mask    0xfffffffd      int
>    editor:SetMarginMask(2, -0x2000000)
>                mask    0xfe000000      int
>
>
>
>
> ------------------------------------------------------------------------------
> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
> -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
> -Strategies to boost innovation and cut costs with open source participation
> -Receive a $600 discount off the registration fee with the source code: SFAD
> http://p.sf.net/sfu/XcvMzF8H
> _______________________________________________
> wxlua-users mailing list
> wxlua-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wxlua-users
>

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
wxlua-users mailing list
wxlua-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wxlua-users

Reply via email to