Difference between revisions of "Including simplelib in a Project"

From OpenEUO
Jump to: navigation, search
m (A Note on the Object Model)
m (A Note on the Object Model)
Line 17: Line 17:
 
== A Note on the Object Model ==
 
== A Note on the Object Model ==
  
See [http://www.lua.org/pil/16.4.html Programming in Lua -- Private Objects] to understand the employed object model. Objects are implemented as closures, so the colon calling syntax '''e.g. object:method()''' is ''never'' valid to use with simplelib objects or tables.  Just use the dot operator, '''e.g. object.method()'''.  This applies to the object returned by the initial dofile call, as well.
+
See [http://www.lua.org/pil/16.4.html Programming in Lua -- Private Objects] to understand the employed object model. Objects are implemented as [http://en.wikipedia.org/wiki/Closure_%28computer_science%29 closures], so the colon calling syntax typically seen in object orient lua code '''e.g. object:method()''' is ''never'' valid to use with simplelib objects or tables.  Just use the dot operator, '''e.g. object.method()'''.  This applies to the object returned by the initial dofile call, as well.
  
 
Further, private metatables are set on all interfaces to deny any accidental deletion and overwriting and to raise errors if invocation is attempted on non-existent (or misspelled) methods.  For this reason bulk importation of the library names into the [[_G]] environment is discouraged as control and capture of logical errors is diminished.
 
Further, private metatables are set on all interfaces to deny any accidental deletion and overwriting and to raise errors if invocation is attempted on non-existent (or misspelled) methods.  For this reason bulk importation of the library names into the [[_G]] environment is discouraged as control and capture of logical errors is diminished.

Revision as of 00:16, 2 November 2010

Dofile Call

The simplelib.lua file belongs in the lib/ subdirectory of the openeuo root directory. To use simplelib, include the following line at the top of the dependent script:

 local sl = dofile(getinstalldir()..'/lib/simplelib.lua')

That's all it takes to begin using simplelib. This initializes the library and assigns its interface to the local variable sl. In order to avoid usage errors, the interface is a special table which guards against user modification. Attempting to add new keys to the table or referencing non-existent keys will result in an error.

Version

You can check the version of simplelib with the interface method slversion():

 local v = sl.slversion()

Version will always be a monotonically increasing real number.

A Note on the Object Model

See Programming in Lua -- Private Objects to understand the employed object model. Objects are implemented as closures, so the colon calling syntax typically seen in object orient lua code e.g. object:method() is never valid to use with simplelib objects or tables. Just use the dot operator, e.g. object.method(). This applies to the object returned by the initial dofile call, as well.

Further, private metatables are set on all interfaces to deny any accidental deletion and overwriting and to raise errors if invocation is attempted on non-existent (or misspelled) methods. For this reason bulk importation of the library names into the _G environment is discouraged as control and capture of logical errors is diminished.

Intermediary Library Authors

Calling dofile() on simplelib.lua multiple times is unnecessary but will cause no harm unless the global environment guard variable simple_lib_soliton__ is overwritten. That's the only value/variable defined by simplelib in _G (or other calling environment) by default. Calling simple_lib_soliton__ returns the unique interface table of simplelib.

See Also