Update doc/efun/ aus Driversourcen.
Manpages der efuns aktualisiert, neue Manpages hinzugefuegt.
Change-Id: I7cc91684269ff56d1aef47d5c5e7c87f7fd531dc
diff --git a/doc/efun/compile_string b/doc/efun/compile_string
new file mode 100644
index 0000000..b2242dd
--- /dev/null
+++ b/doc/efun/compile_string
@@ -0,0 +1,78 @@
+SYNOPSIS
+ #include <compile_string.h>
+
+ closure compile_string(symbol* args, string str)
+ closure compile_string(symbol* args, string str
+ , struct compile_string_options opts)
+ closure compile_string(symbol* args, string &str
+ , struct compile_string_options opts)
+
+DESCRIPTION
+ Compiles <str> into a closure. The closure will be bound to the
+ current object. By default the string will be interpreted as an
+ LPC expression. The string may also contain preprocessor directives
+ (which must occur on their own line).
+
+ The argument names are given as the first argument <args>.
+
+ Optionally the function accepts a struct with additional options.
+ All entries in this struct are optional. These are the members:
+
+ functions:
+ variables:
+ structs:
+ A mapping or closure for the lookup of functions, variables,
+ resp. structs during compilation. A mapping is looked up using
+ the name, the closure will be called with the name as its only
+ argument. The name of the function, variable, resp. struct will
+ be given as a symbol. The result (mapping value resp. closure
+ return value) should be:
+ - for <functions> a closure,
+ - for <variables> a reference, and
+ - for <structs> a template struct (i.e. a struct whose data
+ is irrelevant, only its type will be used).
+
+ use_object_functions:
+ use_object_variables:
+ use_object_structs:
+ If set (integer != 0) the compiled code may reference the
+ current object's functions, variables, resp. structs. However
+ successful lookups in <variables>, <functions>, resp. <structs>
+ have precedence. Private variables, functions and structs
+ cannot be accessed this way.
+
+ compile_expression:
+ If set (integer != 0) the string is interpreted as an expression
+ (eg. "1+1") and therefore must not contain a terminal semicolon.
+ If no compile mode is selected, this is the default.
+
+ compile_block:
+ If set (integer != 0) the string is interpreted as a block (code
+ between braces), the surrounding braces can be omitted. To return
+ a value, the code needs a return statement.
+
+ as_async:
+ If set (integer != 0) the code will be compiled as a coroutine,
+ i.e. the resulting closure will return a coroutine when called.
+
+ detect_end:
+ If set (integer != 0) the driver will try(!) to detect the end
+ of the expression/block and return the remaining string in <str>
+ (<str> needs to be passed as a reference for this).
+ An end is detected if the word or character following a full
+ expression or block is not suitable to continue the expression
+ or block. Also a comma will end an expression.
+
+ When compiling expressions the result of the H_AUTO_INCLUDE_EXPRESSION
+ driver hook will be prepended, for blocks the H_AUTO_INCLUDE_BLOCK
+ hook will be used.
+
+EXAMPLES
+ funcall(compile_string(({'a,'b}), "a+b"), 1, 2);
+
+HISTORY
+ Introduced in LDMud 3.6.7.
+
+SEE ALSO
+ compile_string_options(S), lambda(E), block(LPC),
+ auto_include_expression(H), auto_include_block(H)