Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/miniprojects/src/tolua/MANUAL @ 2830

Last change on this file since 2830 was 2710, checked in by rgrieder, 16 years ago

Merged buildsystem3 containing buildsystem2 containing Adi's buildsystem branch back to the trunk.
Please update the media directory if you were not using buildsystem3 before.

  • Property svn:eol-style set to native
File size: 1.9 KB
Line 
1This tolua++ is modified with support for exception handling, and more will
2likely come over time.
3
4So to avoid forgetting how it works and what's new, all added features will
5be documented in full in this file:
6
7***********************
8* Exception handling: *
9***********************
10A new function modifier 'tolua_throws' has been added. It goes the same place
11as 'tolua_outside' etc. - so before the function name and return type.
12
13Two "types" of exceptions are supported internally, but they can be customized
14by making the tolua++ binary execute a Lua script before parsing with the '-L'
15command line option.
16Look in '../LuaScriptModule/package/exceptions.lua' to see the format. It's
17fairly simple and gives you alot of control.
18
19You always have 'std::exception' and 'any' (which means ...) available.
20
21This first example would be valid in a .pkg file for tolua++, and would ensure
22that any exceptions based on 'std::exception' thrown by the real C++ function
23would result in return value of 'nil' in Lua:
24
25        tolua_throws|std::exception,nil| void I_Throw:StdException();
26
27Inside the pipes the exception name follow by return values (or actions) are
28listed. The syntax is like so:
29
30        tolua_throws|<exceptionName>[,<ret1>[,<ret2> ... [, <retN>]]]|[<exceptionName>...|]
31
32The return values can by any of the following:
33* nil
34* message (the exception message, or 'Unknown' if not possible.
35* true
36* false
37* error (can only be used alone, will contain the exception is possible)
38
39In case no return values are specified, it will default to: 'nil, message'.
40
41Example 1:
42----------
43Returns 'nil, false' for all exceptions:
44
45        tolua_throws|any,nil,false|
46
47Example 2:
48----------
49Returns 'nil, message' if a 'std::exception' is thrown:
50
51        tolua_throws|std::exception,nil,message|
52
53Example 3:
54----------
55If a CEGUI::Exception is thrown, return 'nil, message'.
56If any other kind of exception is thrown abort (error).
57
58        tolua_throws|CEGUI::Exception|any,error|
Note: See TracBrowser for help on using the repository browser.