| OBSOLETE |
| CONCEPT |
| initialisation |
| |
| DESCRIPTION |
| There are two different flavours of initialisations, |
| selectable in config.h at driver compile time: |
| |
| i) #undef INITIALIZATION_BY___INIT |
| ------------------------------------ |
| |
| Initialisation is done at compile time. This is fast and costs |
| no extra code in the program. Allowed expressions currently |
| include integer literals, string literals, integer operators, |
| string addition, bracketing, array constructors, the empty |
| mapping and order_alist() . |
| When an object with initialised variables is cloned or |
| inherited, all initialised variables are copied from the |
| blueprint. A special application of this feature is to have |
| an initialised non-empty array or a mapping; it will be shared |
| by all clones or inheriting objects unless an assignment to |
| the variable - as opposed to an assignment to an element of |
| the array/mapping - is done in all clones etc. To prevent |
| unauthorised chenges in initialised arrays/mappings, you can |
| declare the variables as ``private static'' or use a nomask |
| reset/create that checks for undesired inheritance. |
| |
| ii) #define INITIALIZATION_BY___INIT |
| ------------------------------------- |
| |
| Creates a function named __INIT() for all variable |
| initialisations and for calls to __INIT() in all inherited |
| objects, and runs this function at object creation time. |
| Any efun can be used in the expressions for variable |
| initialisations, even ones with severe side effects, like |
| destruct() or shutdown() . The code created for __INIT() is a |
| little worse than a medium-skilled lpc-programmer would |
| generate, because it is scattered all over the program. |
| It is possible (though discouraged) to overload __INIT() with |
| selfwritten functions. |
| |
| HISTORY |
| Since LDMud 3.3, order_alist() is no longer accepted without |
| INITIALIZATION_BY___INIT. |
| LDMud 3.3.378 replaced this static choice of initialisation |
| methods by compile-time pragmas. |
| |
| 29.10.2006 Zesstra |