Update der Doku fuer 3.6.4 + LWO
... aus den Driversourcen 3.6.4 + LWO
Change-Id: I9226bb373436d5b05828f89c7da26df39aa45af7
diff --git a/doc/LPC/lwobjects b/doc/LPC/lwobjects
new file mode 100644
index 0000000..f9559c8
--- /dev/null
+++ b/doc/LPC/lwobjects
@@ -0,0 +1,72 @@
+CONCEPT
+ lwobjects
+
+INTRODUCTION
+ Lightweight objects are a cross between regular objects and structs.
+ Like regular objects they are build from programs (.c files) and
+ encapsulate data und functions. Like structs they are automatically
+ destructed, they can be copied and saved.
+
+ As with regular objects its variables are hidden from outside
+ objects, its functions can be called with call_other() and related
+ efuns.
+
+ Lightweight objects are passed by reference.
+
+
+DEFINITION
+ Lightweight objects are created from a program, i.e. an LPC file.
+ This file needs to have the pragma
+
+ #pragma lightweight
+
+ to allow being used as a lightweight object. This pragma implies
+ the no_clone pragma (which can be overridden with the clone pragma).
+
+ There are no restriction on the program itself. It can inherit
+ other programs. Those programs don't need to have that pragma,
+ but the compiler might warn about unsuitable programs.
+
+
+USAGE
+ A lightweight objects is created by calling the efun new_lwobject():
+
+ lwobject lwo = new_lwobject("/obj/foo");
+
+ The efun new_lwobject() will load the file to create a blueprint
+ from it (which is a regular object) and then creates a lightweight
+ object therefrom.
+
+ The efun can be given optional arguments that are passed to the
+ H_CREATE_LWOBJECT driver hook.
+
+ Functions of the lightweight object can be called with the efuns
+ call_other() and its companions and operators:
+
+ lwo->fun();
+ lwo.fun();
+
+
+MISCELLANEOUS
+ Only declarative casts to lwobject are possible, there is no
+ conversion of any other type to lwobjects available (therefore
+ there is no to_lwobject() efun).
+
+ Support for lightweight objects is signaled by the macro
+ __LPC_LWOBJECTS__.
+
+ Lightweight objects have a UID and EUID and therefore can also
+ do file operations or create new objects themselves.
+
+ Lightweight objects can be serialized with save_value(), so
+ any outside program can inspect its variables. To really hide
+ variable contents they must be nosave.
+
+
+HISTORY
+ Lightweight objects were introduced in LDMud 3.6.5.
+
+
+SEE ALSO
+ structs(LPC), new_lwobject(E), call_other(E), configure_lwobject(E),
+ lwobject_info(E)