local : define the __parser__
attribute related to a __parser__(...) …
More...
Macros | |
#define | __parser__alias alias=ALIAS |
Use alias as public-api-name … | |
#define | __parser__arg_name arg-name=NAME |
Rename an already defined argument to arg-name at POSITION (0,1,2,…) … | |
#define | __parser__arg_type arg-type=TYPE |
Redefine an already defined argument-type to arg-type at POSITION (0,1,2,…) … | |
#define | __parser__arg_type_vcv arg-type-vcv=ARRAY-LEN@ARRY-PTR |
Define a ME_VCV meta-type as array-of-strings … | |
#define | __parser__argument argument |
Mark argument as ordinary argument and NOT as instance-argument … | |
#define | __parser__array array |
Mark a function-argument as an array … | |
#define | __parser__cast cast=TYPE |
Force to cast into a TYPE of the method-argument … | |
#define | __parser__class class=CLASS |
Force to use class as CLASS of the instance-method … | |
#define | __parser__class_overload class-overload |
The class-overload does not generate a method-code in the object-Target-Programming-Language (TPL) … | |
#define | __parser__const const |
Add the const prefix in front of the Target-Programming-Language (TPL) public API method … | |
#define | __parser__constructor constructor |
Mark the function as instance-constructor … | |
#define | __parser__default default=VALUE |
Add a default to a function-argument … | |
#define | __parser__destructor destructor |
Mark function as instance destructor … | |
#define | __parser__enum_accept_integer enum-accept-integer=int32|int64|long |
define datatype for enum integer value … | |
#define | __parser__enum_is_flag enum-is-flag |
Add enum-is-flag feature to a enum … | |
#define | __parser__error_check error-check |
Verify the enum-return-value of a function using the enum-error-check-code … | |
#define | __parser__error_ignore error-ignore=BOOL|NUMBER|2 |
Ignore the MkErrorE error-indicator … | |
#define | __parser__flags flags=FLAGS |
Add flags in front of the target-programming-language public API method … | |
#define | __parser__has_reference has-reference |
Force a reference-type overload to be defined by the PLMK (Programming-Language-Micro-Kernel)-Compiler … | |
#define | __parser__hide hide=BOOL|NAME |
hide a function from the public-api … | |
#define | __parser__global__hide_rx hide-rx@LIST=REGEXP |
Hide all functions found by REGEXP … | |
#define | __parser__ignore ignore |
Mark OBJECT to be ignore - not used in public-api … | |
#define | __parser__in in |
The attribute (in|out|inout) marks an argument as input, output, or both … | |
#define | __parser__out out |
The attribute (in|out|inout) marks an argument as input, output, or both … | |
#define | __parser__inout inout |
The attribute (in|out|inout) marks an argument as input, output, or both … | |
#define | __parser__inline inline=INLINE |
add inline function as alternativ function … | |
#define | __parser__internal internal |
make function, function-argument, type, variable invisible to the public API … | |
#define | __parser__keep keep |
keep the function if the default-behaviour is to hide the function … | |
#define | __parser__keep_destr keep-destr |
Do not replace the keep-destr destructor with the lng-destr default-destructor … | |
#define | __parser__keep_original_type keep-original-type |
Do not try to map the type of an argument into a Programming-Language-Micro-Kernel (PLMK) type … | |
#define | __parser__library library=NAME@TYPE@NAMESPACE |
Define the new library name, namespace and usage … | |
#define | __parser__lng_constr lng-constr |
Define a constructor as the default-constructor … | |
#define | __parser__lng_destr lng-destr |
Replace all destructors with the lng-destr default-destructor … | |
#define | __parser__lng_dispose lng-dispose |
Mark a function to be the default-dispose function … | |
#define | __parser__macro macro |
Define that a declaration belongs to a macro … | |
#define | __parser__no_alias no-alias |
Delete the alias attribute for function … | |
#define | __parser__no_inline no-inline |
Do not make this function inline … | |
#define | __parser__no_rpc no-rpc |
Do not create a rpc-call for this function … | |
#define | __parser__no_static no-static |
Do not add the static attibute to the TPL-wrapper. … | |
#define | __parser__no_type_extension no-type-extension |
Disable the type-extension feature from function … | |
#define | __parser__no_size no-size |
Hide the size information from the binary-object … | |
#define | __parser__null_allowed null-allowed |
Allow a function-argument of type class to be a MK_NULL (None) value … | |
#define | __parser__null_return_allow null-return-allow |
Allow the function to return a MK_NULL (None) value … | |
#define | __parser__null_return_check null-return-check |
Mark the function as pseudo-instance-constructor … | |
#define | __parser__overload overload=OVERLOAD |
Add an additional overload function to the original-function in the Target-Programming-Language (TPL) … | |
#define | __parser__overload_c_no overload-c-no |
do not create the overload for function in C … | |
#define | __parser__prefix prefix=PREFIX |
Force prefix to be prefix … | |
#define | __parser__reference reference |
Mark an object as reference … | |
#define | __parser__return_type return-type=TYPE |
Replace an already defined return-type … | |
#define | __parser__return_type_default_no return-type-default-no |
Undo the return-type-default for a specific function… | |
#define | __parser__runtime runtime=FUNC-NAME |
Add a public API function FUNC-NAME for a runtime-aware function… | |
#define | __parser__silent silent |
do not complain about non-standart setup | |
#define | __parser__static static |
Force a function to be a class-methode even if PLMK (Programming-Language-Micro-Kernel)-Compiler would chose an instance-method … | |
#define | __parser__template_overload template-overload |
Assume a predefined template to implement the function … | |
#define | __parser__template_in_c template-in-c |
The template is written in the C language and not in the Target-Programming-Language (TPL) language … | |
#define | __parser__template_required template-required |
Require a predefined template to implement the function … | |
#define | __parser__type type=META@DESCRIPTION |
Define the meta-type for the public-type … | |
#define | __parser__wrapper wrapper |
Add a wrapper to the default value of a function-argument … | |
local : define the __parser__
attribute related to a __parser__(...) …
#define __parser__alias alias=ALIAS |
Use alias as public-api-name …
In the meta-code-library-definition-file (META-FILE) alias attribute will flip the definition, the new alias will be the "official" function-name and the original-function-name will be the alias attribute.
In the TPL-Wrapper the "official" function-name is defined but "internal" the original-function-name is used.
scope | global or function |
usage | __parser__global__(FUNCTION:alias=ALIAS); |
usage | __parser__(alias=ALIAS) FUNCTION … |
see also | __parser__(no-alias) |
Definition at line 65 of file parser_mk.h.
#define __parser__arg_name arg-name=NAME |
Rename an already defined argument to arg-name at POSITION (0,1,2,…) …
The goal is to reuse an already availalable declaration from an external header-file and add some special features like:
_out
or _inout
to the argument name to signal further processingAlso usefull if a native-code is parsed and global is used to modify parse output.
scope | global or argument |
usage | __parser__global__(FUNCTION:POSITION:arg-name=NEW-NAME) |
usage | FUNCTION(type NAME __parser__(arg-name=NEW-NAME) ... |
example | __parser__global__(LcConfigLookupFloat:2:arg-name=value_out); |
note | A NAME or an INDEX is allowed as POSITION, the INDEX starts at 0 |
note | The POSITION is used internal in the [lset funcDEF($func) 1 $POSITION end NEW-NAME] TCL code |
see also | __parser__(arg-type) |
Definition at line 94 of file parser_mk.h.
#define __parser__arg_type arg-type=TYPE |
Redefine an already defined argument-type to arg-type at POSITION (0,1,2,…) …
The goal is to reuse an already availalable declaration from an external header-file and add some special features like:
Also usefull if a native-code is parsed and global is used to modify parse output.
scope | global or argument |
usage | __parser__global__(FUNCTION:POSITION:arg-type=NEW-TYPE) |
usage | FUNCTION(TYPE argument __parser__(arg-type=NEW-TYPE) ...) |
example | __parser__global__(LcConfigGetOption:1:arg-type=LcConfigOptionsEF); |
see also | __parser__(return-type); __parser__(arg-type-vcv); __parser__(arg-name) |
Definition at line 115 of file parser_mk.h.
#define __parser__arg_type_vcv arg-type-vcv=ARRAY-LEN@ARRY-PTR |
Define a ME_VCV
meta-type as array-of-strings …
An array-of-strings is defined in C as a pointer-to-a-array-of-strings and the number-of-strings-in-the-array.
ME_VCV
.scope | global and function |
usage | __parser__global__(FUNCTION:arg-type-vcv=ARRAY-LEN@ARRY-PTR) |
usage | __parser__(arg-type-vcv=ARRAY-LEN@ARRY-PTR) FUNCTION ... |
see also | __parser__(arg-type) |
sqlite3_sq3.h
meta-code header sqlite3.h
native-library header Definition at line 137 of file parser_mk.h.
#define __parser__argument argument |
Mark argument as ordinary argument and NOT as instance-argument …
By default the type of the first argument is checked for a class-instance-type and if found the function is used as class-instance-methode. If this is not desired use the argument attribute.
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:argument=yes); |
usage | FUNCTION ( type ARGUMENT __parser__(argument) ... ) |
Definition at line 152 of file parser_mk.h.
#define __parser__array array |
Mark a function-argument as an array …
By default a pointer is a reference but this attribute mark a pointer as array.
Treat pointer argument as array
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:array=yes); |
usage | FUNCTION ( type ARGUMENT __parser__(array) ... ) |
Definition at line 173 of file parser_mk.h.
#define __parser__cast cast=TYPE |
Force to cast into a TYPE of the method-argument …
By default the original-type is choosen from the method-argument but if the original-type is not sufficient (example: int to bool) the type can be casted. A cast is only required if there is not an default-cast or if the new-type is used as pointer-value-output.
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:cast=OLD-TYPE); |
usage | FUNCTION ( NEW-TYPE argument __parser__(cast=OLD-TYPE) ...) |
see also | __parser__(arg-name); __parser__(arg-type) |
Definition at line 225 of file parser_mk.h.
#define __parser__class class=CLASS |
Force to use class as CLASS of the instance-method …
By default the CLASS is choosen from the type of the FIRST argument :
func(MK_BUF arg,...) -> MkBufferC.
if this does not fit the requirement use class attribute is used to force an other class.
scope | global or function or enum |
usage | __parser__global__(OBJECT:class=CLASS); |
usage | __parser__(class=CLASS) OBJECT |
see also | __parser__(class-overload) |
Definition at line 247 of file parser_mk.h.
#define __parser__class_overload class-overload |
The class-overload does not generate a method-code in the object-Target-Programming-Language (TPL) …
By default a base-class-attribute (instance-method or class-method) is visible by the child-class through class-inheriance but this is a problem for a non-object-Target-Programming-Language (TPL) if ther is already an definition for the method in the child-class.
scope | global or function |
usage | __parser__global__(FUNCTION:class-overload=yes); |
usage | __parser__(class-overload) FUNCTION |
Definition at line 293 of file parser_mk.h.
#define __parser__const const |
Add the const
prefix in front of the Target-Programming-Language (TPL) public API method …
scope | global or function |
usage | __parser__global__(FUNCTION:const); |
usage | __parser__(const) FUNCTION |
Definition at line 308 of file parser_mk.h.
#define __parser__constructor constructor |
Mark the function as instance-constructor …
A constructor is defined as a function returning a new instance or MK_NULL
if the constructor fails. Special code is added to act on return-NULL to raise an exception.
The constructor is always a method (static or instance) of the return-class-type and is added to the TOR doxygen-documentation-group.
scope | global or function |
usage | __parser__global__(FUNCTION:constructor=yes); |
usage | __parser__(constructor) FUNCTION ... |
see also | __parser__(null-return-check); __parser__(lng-constr) |
Definition at line 327 of file parser_mk.h.
#define __parser__default default=VALUE |
Add a default to a function-argument …
C
does not support a default value for a argument but other languages do, like C#
. This is a hint to add a default value if the target language support this.
The default can be of different types __parser__(default=TOKEN)
:
TOKEN | usage |
---|---|
value | any "value" like 0 or MK_NULL |
F#value | function: lookup "value" in the library-definition-table (LONG) and add post-processing code |
F#STRING_NULL | function: add null string like "" |
F#FUNC | function: the "name" of the current function |
F#LINE | function: the "line" of the current function |
F#FILE | function: the "file" of the current function |
F#CTOR#value | function: use "value" as "constructor" for lookup |
F#MK_ERROR | function: the current error-code |
S#"value" | string: use "value" with STRING decoration |
B#value | boolean: use "value" as true or false |
N#value | native: lookup "value" in the library-definition-table (SHORT) without post-processing code |
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:default=VALUE); |
usage | FUNCTION ( type argument __parser__(default=VALUE) ...) |
Definition at line 369 of file parser_mk.h.
#define __parser__destructor destructor |
Mark function as instance destructor …
scope | global or function |
usage | __parser__global__(FUNCTION:destructor=yes); |
usage | __parser__(destructor) FUNCTION ... |
see also | __parser__(constructor); __parser__(lng-destr); __parser__(keep-destr) |
Definition at line 387 of file parser_mk.h.
#define __parser__enum_accept_integer enum-accept-integer=int32|int64|long |
define datatype for enum
integer value …
(GO special) The GO programming language allow to define the enum
datatype
scope | global or enum |
usage | __parser__global__(ENUM:enum-accept-integer=int32|int64|long); |
usage | __parser__(enum-is-flag=int32|int64|long) ENUM ... |
Example
Definition at line 402 of file parser_mk.h.
#define __parser__enum_is_flag enum-is-flag |
Add enum-is-flag feature to a enum …
By default, an enum is a list of named-integer-values, BUT if the integer values follow the scheme 2^x (x=0,1,2,…), the enum is a flag-enum. A flag-enum is able to store multiple enum-values in an integer-value using an OR ("|")
operator.
A enum-is-flag enum is usually marked with a EF
postfix like MyEnumEF
.
scope | global or enum |
usage | __parser__global__(ENUM:enum-is-flag=yes); |
usage | __parser__(enum-is-flag) ENUM ... |
Definition at line 441 of file parser_mk.h.
#define __parser__error_check error-check |
Verify the enum-return-value of a function using the enum-error-check-code …
The goal is to reuse an already availalable declaration from an external header-file and add the error-check feature from the Programming-Language-Micro-Kernel (PLMK).
The return-value for error-check is an enum and the macro ENUM_Check
like LcErrorE_Check
is added to verify the enum and jump to the error:
label on error.
scope | global or function |
usage | __parser__global__(FUNCTION:error-check=yes); |
usage | __parser__(error-check) FUNCTION ... |
Definition at line 468 of file parser_mk.h.
#define __parser__error_ignore error-ignore=BOOL|NUMBER|2 |
Ignore the MkErrorE error-indicator …
By default, if a return-value is an error-enum like MkErrorE than an exception will be raised if the MkErrorE signal an error like MK_ERROR.
Sometimes this is not desired because the MkErrorE should be reported for debugging etc.
scope | global or function |
usage | __parser__global__(FUNCTION:error-ignore=yes); |
usage | __parser__(error-ignore) FUNCTION ... |
see also | __parser__(error-check) |
Definition at line 492 of file parser_mk.h.
#define __parser__flags flags=FLAGS |
Add flags in front of the target-programming-language public API method …
Some target-programming-languages like C#
supprt an additional flag. With the flags feature an additional flag can be added. Supported flags are virtual
and new
.
scope | global or function |
usage | __parser__global__(FUNCTION:flags=FLAG?@FLAG?…); |
usage | __parser__(flags=FLAG) FUNCTION ... |
Definition at line 514 of file parser_mk.h.
#define __parser__global__hide_rx hide-rx@LIST=REGEXP |
Hide all functions found by REGEXP
…
usage | __parser__global__(hide=REGEXP); |
example | __parser__global__(hide-rx=^MkSys); |
see also | __parser__(hide); __parser__(keep) |
Definition at line 573 of file parser_mk.h.
#define __parser__has_reference has-reference |
Force a reference-type overload to be defined by the PLMK (Programming-Language-Micro-Kernel)-Compiler …
In C++
by DEFAULT only an class-instance-argument get an extra reference-type overload but with the has-reference feature every other-type could get an reference-type overload also.
scope | argument |
usage | __parser__global__(FUNCTION:ARGEMEBT:has-reference=yes); |
usage | FUNCTION ( type argument __parser__(has-reference) ... ) |
Definition at line 535 of file parser_mk.h.
#define __parser__hide hide=BOOL|NAME |
hide a function from the public-api …
There are functions that are only useful for a specific language like TCL or for a specific purpose like "debugging" or "testing". These functions should NOT be public by default and only on request.
p_KeepAdd
is used to unhide a hidden function.If hide is combinded with a name argument instead of yes than the hidden-function is renamed to name.
scope | global or function or toplevel |
usage | __parser__global__(FUNCTION:hide?=yes|name?); |
usage | __parser__global__(hide=PATTERN); |
usage | __parser__(hide?=yes|name?) FUNCTION ... |
see also | __parser__(keep); __parser__(ignore) |
Definition at line 564 of file parser_mk.h.
#define __parser__ignore ignore |
Mark OBJECT to be ignore - not used in public-api …
There are two levels of hiding :
scope | object |
usage | __parser__(ignore) OBJECT ... |
see also | __parser__(keep); __parser__(hide) |
Definition at line 597 of file parser_mk.h.
#define __parser__in in |
The attribute (in|out|inout) marks an argument as input, output, or both …
in is the default value for every argument, but for special purposes in can be set explicitly.
As a special extension, the attributes in, out and inout can also be used as argument name expansion.
FUNCTION( type ARGUMENT __parser__(out), ...)
FUNCTION( type ARGUMENT_out, ...)
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:in|out|inout?=yes?); |
usage | FUNCTION(type ARGUMENT __parser__(in|out|inout), ...) |
usage | FUNCTION(type ARGUMENT_in|out|inout, ...) |
see also | __parser__(in) __parser__(out) __parser__(inout) |
Definition at line 620 of file parser_mk.h.
#define __parser__inline inline=INLINE |
add inline function as alternativ function …
By default the function declared is used by the target-programming-language but it is more efficiant to use a inline function if also available.
There is a good reason to provide a inline and a not-inline version of a function because :
"C#"
) does not support the use of an inline function and requires a real function.scope | global or function |
usage | __parser__global__(FUNCTION:inline=INLINE); |
usage | __parser__(inline=INLINE) FUNCTION ... |
Definition at line 663 of file parser_mk.h.
#define __parser__inout inout |
The attribute (in|out|inout) marks an argument as input, output, or both …
in is the default value for every argument, but for special purposes in can be set explicitly.
As a special extension, the attributes in, out and inout can also be used as argument name expansion.
FUNCTION( type ARGUMENT __parser__(out), ...)
FUNCTION( type ARGUMENT_out, ...)
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:in|out|inout?=yes?); |
usage | FUNCTION(type ARGUMENT __parser__(in|out|inout), ...) |
usage | FUNCTION(type ARGUMENT_in|out|inout, ...) |
see also | __parser__(in) __parser__(out) __parser__(inout) |
Definition at line 626 of file parser_mk.h.
#define __parser__internal internal |
make function, function-argument, type, variable invisible to the public API …
The internal attribute is required to signal the internal-only usage.
There are 3 levels on "hiding" :
attribute | public API | meta-code | tool-usage |
---|---|---|---|
ignore | no | no | no |
internal | no | yes | yes |
hide | no(yes) | yes | yes |
The internal attribute is added to the meta-code-library-definition-file (META-FILE) to give a tool the ability to act on this attribute.
scope | global or function or argument |
usage | __parser__global__(FUNCTION:internal=yes); |
usage | __parser__(internal) FUNCTION ... |
usage | FUNCTION ( type argument __parser__(internal) ...) |
see also | hide; ignore; keep; __parser__default |
Set the internal attribute to a TYPE, a FUNTION and a FUNCTION-ARGUMENT:
Definition at line 709 of file parser_mk.h.
#define __parser__keep keep |
keep the function if the default-behaviour is to hide the function …
To hide a block of functions the feature __parser__global__(hide=REGEXP)
is used. If you want a single-function to be visible again, use the keep feature.
The keep feature is often used to reveal a hidden function used for testing purposes.
scope | global or function |
usage | __parser__global__(FUNCTION:keep=yes); |
usage | __parser__(keep) FUNCTION ... |
see also | __parser__(hide); __parser__(ignore); __parser__(internal) |
unhide a hidden function
Definition at line 742 of file parser_mk.h.
#define __parser__keep_destr keep-destr |
Do not replace the keep-destr destructor with the lng-destr default-destructor …
If the lng-destr feature is used …
enabled with
ATTRIBUTE(LNG_DESTR)
in the PLMK (Programming-Language-Micro-Kernel)-Compiler language definition
all destructors will be replaced by the default-destructor marked with with lng-destr. The default-destructor is used for the default target-language-destructor like "destroy" in TCL. BUT if your OWN special-destructor should be supported as well, you can mark your OWN destructor with keep-destr, this destructor will always be available.
scope | global or function |
usage | __parser__global__(FUNCTION:keep-destr=yes); |
usage | __parser__(keep-destr) FUNCTION ... |
see also | __parser__(lng-destr) |
Definition at line 770 of file parser_mk.h.
#define __parser__keep_original_type keep-original-type |
Do not try to map the type of an argument into a Programming-Language-Micro-Kernel (PLMK) type …
By default the parser will try to map any native-type of an argument into a type supported by the Programming-Language-Micro-Kernel (PLMK). Sometimes this is not usefull for internal arguments used for special C
purpose.
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:keep-original-type=yes); |
usage | FUNCTION ( desired-type argument __parser__(keep-original-type) … ) |
Definition at line 796 of file parser_mk.h.
#define __parser__library library=NAME@TYPE@NAMESPACE |
Define the new library name, namespace and usage …
A library is a collection of CLASSES and METHODS. The library is used to define the name and the namespace of the library.
For a native-library the Programming-Language-Micro-Kernel (PLMK) is added with an extra pre-processing step (example: libconfig).
scope | toplevel - start of file |
usage | __parser__(library=NAME@native|internal@NAME-SPACE); |
internal | The library is already using the Programming-Language-Micro-Kernel (PLMK) |
native | The library is not using the Programming-Language-Micro-Kernel (PLMK) |
Definition at line 811 of file parser_mk.h.
#define __parser__lng_constr lng-constr |
Define a constructor as the default-constructor …
Every CLASS has ONE or MORE constructors - if MORE constructors are available define ONE of these MORE constructors to be the default-constructor.
The default-constructor will be used as the default in the Target-Programming-Language (TPL).
scope | global or function |
usage | __parser__global__(FUNCTION:lng-constr=yes); |
usage | __parser__(lng-constr) FUNCTION ... |
see also | __parser__(constructor); __parser__(null-return-check) |
Definition at line 835 of file parser_mk.h.
#define __parser__lng_destr lng-destr |
Replace all destructors with the lng-destr default-destructor …
If the lng-destr feature is used …
enabled with
ATTRIBUTE(LNG_DESTR)
in the PLMK (Programming-Language-Micro-Kernel)-Compiler language definition
All destructors will be replaced by the default-destructor marked with with lng-destr. The default-destructor is used for the default target-language-destructor like "destroy" in TCL.
Every CLASS has ONE destructor - but in a class-hierarchie only ONE destructor (from MkObjectC) is required to delete all instances from all CLASSes.
The lng-destr also the destructor ised for MkTypeS::destructor .
scope | global or function |
usage | __parser__global__(FUNCTION:lng-destr=yes); |
usage | __parser__(lng-destr) FUNCTION ... |
see also | __parser__(keep-destr) |
Definition at line 865 of file parser_mk.h.
#define __parser__lng_dispose lng-dispose |
Mark a function to be the default-dispose function …
The dispose untie the connection between the target-languange-instance (LNG) and the PLMK (Programming-Language-Micro-Kernel)-instance (PLMK). Untie means that the LNG-instance is still active, but the PLMK (Programming-Language-Micro-Kernel)-instance's refCount is decremented and the PLMK (Programming-Language-Micro-Kernel)-instance is likely to be destroyed.
Every subsequent access to the LNG-instance leads to a secure and catch-able PLMK (Programming-Language-Micro-Kernel)-NULL-pointer-exception.
scope | global or function |
usage | __parser__global__(FUNCTION:lng-dispose=yes); |
usage | __parser__(lng-dispose) FUNCTION ... |
see also | __parser__(lng-destr) |
read more | ObjectDispose |
Definition at line 890 of file parser_mk.h.
#define __parser__macro macro |
Define that a declaration belongs to a macro …
A macro is only visible to the "C"
language, for a "non-C"
language this is the same as internal. A macro will be added to the meta-code-library-definition-file (META-FILE) but with the macro attribute set, later the macro will be part of the public-api like a normal inline or function.
A macro hase a declaration like a normal funtion but no definition.
scope | global or function |
usage | __parser__global__(FUNCTION:macro=yes); |
usage | __parser__(macro) FUNCTION ... |
see also | __parser__(internal) |
Definition at line 923 of file parser_mk.h.
#define __parser__no_alias no-alias |
Delete the alias attribute for function …
Sometimes an alias is created automatically by the PLMK (Programming-Language-Micro-Kernel)-Compiler, this happens when a native-library-header is sourced and the PLMK (Programming-Language-Micro-Kernel)-Compiler generate a PLMK (Programming-Language-Micro-Kernel)-Compiler-C-Wrapper for the native-library.
my_special_name
→ new: MySpecialName
with alias=my_special_name If the default behaviour is not desired because the target-function already has a definition, the alias attribute will overwrite the alread available definition → the no-alias feature will delete the alias attribute.
scope | global or function |
usage | __parser__global__(FUNCTION:no-alias=yes); |
usage | __parser__(no-alias) FUNCTION ... |
see also | __parser__(alias) |
Definition at line 956 of file parser_mk.h.
#define __parser__no_inline no-inline |
Do not make this function inline …
Definition at line 961 of file parser_mk.h.
#define __parser__no_rpc no-rpc |
Do not create a rpc-call for this function …
By default the PLMK (Programming-Language-Micro-Kernel)-Rpc-Compiler create an rpc-call for every public function. If a function is publib but not
useable by rpy use this attribute.
scope | global or function |
usage | __parser__global__(FUNCTION:no-rpc=yes); |
usage | __parser__(no-rpc) FUNCTION ... |
Definition at line 989 of file parser_mk.h.
#define __parser__no_size no-size |
Hide the size information from the binary-object …
By default a binary-object is defined by a binaray-data-pointer and a binary-data-size. If the size is already encoded into the binaray-data-pointer the binary-data-size information is not needed. The no-size attribute will disable the generation of code required to use the binary-data-size information.
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:no-size=yes); |
usage | FUNCTION ( type argument __parser__(no-size) ... ) |
Definition at line 1089 of file parser_mk.h.
#define __parser__no_static no-static |
Do not add the static
attibute to the TPL-wrapper. …
The PLMK (Programming-Language-Micro-Kernel)-Compiler create the entire library as TPL-wrapper. A function-definition is by default static
in the wrappe-code-file. If the function-definition need access by hand-written code from other source-files the no-static attribute is used to delete the static
attribute from source-code.
scope | global or function |
usage | __parser__global__(FUNCTION:no-static=yes); |
usage | __parser__(no-static) FUNCTION ... |
static
prefix Definition at line 1031 of file parser_mk.h.
#define __parser__no_type_extension no-type-extension |
Disable the type-extension feature from function …
The type-extension is a special PLMK (Programming-Language-Micro-Kernel)-feature to simulate a OVERLOAD in the "C"-API
.
A group-of-functions which only differ in the type are put together as a type-extension-group. The type-extension-function is identified by the last caracter in the function-name.
Example: To read data from a data-package the "C"
funtion MqReadTT
is used with TT=type-extension
.
The following type-extensions are supported:
C=string,O=bool,Y=byte,S=short,I=int,W=longint,F=float,D=double,B=bin,L=list,U=buffer
The type-extension is always used in the doxygen documentation and partly used to create overload functions in the Target-Programming-Language (TPL).
scope | global or function |
usage | __parser__global__(FUNCTION:no-type-extension=yes); |
usage | __parser__(no-type-extension) FUNCTION ... |
static
prefix Definition at line 1066 of file parser_mk.h.
#define __parser__null_allowed null-allowed |
Allow a function-argument of type class to be a MK_NULL
(None) value …
Usually an error is raised if a function-argument of type class
has a MK_NULL
value instead of an instance. A MK_NULL
will be a valid argument if null-allowed is set
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:null-allowed=yes); |
usage | FUNCTION ( type argument __parser__(null-allowed) ... ) |
see also | __parser__(null-return-check); __parser__(null-return-allow) |
Definition at line 1102 of file parser_mk.h.
#define __parser__null_return_allow null-return-allow |
Allow the function to return a MK_NULL
(None) value …
Usually an error is raised if an function returning a MK_NULL
instead of an instance. A MK_NULL
will be a valid return-possibility if null-return-allow is set
C-NULL
and set the target-language NULL value.scope | global or function |
usage | __parser__global__(FUNCTION:null-return-allow=yes); |
usage | __parser__(null-return-allow) FUNCTION ... |
see also | __parser__(null-return-check); __parser__(null-allowed) |
Definition at line 1142 of file parser_mk.h.
#define __parser__null_return_check null-return-check |
Mark the function as pseudo-instance-constructor …
An constructor is defined as a function returning a new instance or MK_NULL
if the constructor fails. Special code is added to act on return-NULL to raise an exception. A pseudo-constructor is a function which act like a class-method but return a NEW instance of an other-class or MK_NULL
.
MK_NULL
and raise an exception.In difference to the constructor the pseudo-constructor belongs to an other class as the return-type indicates.
scope | global or function |
usage | __parser__global__(FUNCTION:null-return-check=yes); |
usage | __parser__(null-return-check) FUNCTION ... |
see also | __parser__(constructor); __parser__(lng-constr); __parser__(null-return-allow); __parser__(null-allowed) |
Definition at line 1171 of file parser_mk.h.
#define __parser__out out |
The attribute (in|out|inout) marks an argument as input, output, or both …
in is the default value for every argument, but for special purposes in can be set explicitly.
As a special extension, the attributes in, out and inout can also be used as argument name expansion.
FUNCTION( type ARGUMENT __parser__(out), ...)
FUNCTION( type ARGUMENT_out, ...)
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:in|out|inout?=yes?); |
usage | FUNCTION(type ARGUMENT __parser__(in|out|inout), ...) |
usage | FUNCTION(type ARGUMENT_in|out|inout, ...) |
see also | __parser__(in) __parser__(out) __parser__(inout) |
Definition at line 623 of file parser_mk.h.
#define __parser__overload overload=OVERLOAD |
Add an additional overload function to the original-function in the Target-Programming-Language (TPL) …
A overload function has the identical body but an other name, the overload attribute.
The overload feature is not available in all Target-Programming-Language (TPL).
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:overload=OVERLOAD); |
usage | __parser__(overload:OVERLOAD) FUNCTION ... |
Definition at line 1195 of file parser_mk.h.
#define __parser__overload_c_no overload-c-no |
do not create the overload for function in C
…
The overload is a wrapper and id used to support the default-argument and other things.
TODO → link to overload docu
The overload-c-no feature is only usefull in C
.
scope | global or function |
usage | __parser__global__(FUNCTION:overload-c-no=yes); |
usage | __parser__(overload-c-no) FUNCTION ... |
myFuc_2
as overload for myFunc to support def3
default argument.Definition at line 1215 of file parser_mk.h.
#define __parser__prefix prefix=PREFIX |
Force prefix to be prefix …
By default the prefix is derived from the method-name like MkBufferName
-> MkBuffer
or from an existing class name. If this is NOT practical or just wrong use prefix attribute to define the prefix. The prefix was importand to select the doxygen-documentation-group but was replaced by the doc-group and doc-index feature. In addition the prefix is still importand to select the class if the function is not an instance-method and not a CTOR/DTOR. The combination of "class" and "prefix" define the documentation-target.
MqLogFactoryE
MkLog
and the method will be finally located into the package-namespace using the Log
documentation-target because no MqLogC
class is available. The package-namespace is the default-namespace for all methods that cannot be associated with a class. prefix=MqFactory
the method becomes a static-method of class MqFactoryC
documented in documentation-target Misc
by default.scope | global or function |
usage | __parser__global__(FUNCTION:prefix=PREFIX); |
usage | __parser__(prefix=PREFIX) FUNCTION ... |
see also | __parser__(doc-group); __parser__(doc-index) |
Definition at line 1256 of file parser_mk.h.
#define __parser__reference reference |
Mark an object as reference …
A reference is typically applied to a struct
to define that this struct
is used by default as a reference and not as a pointer.
scope | global or function |
usage | __parser__global__(OBJECT:reference?=yes?); |
usage | __parser__(reference?=yes?) OBJECT ... |
Definition at line 1272 of file parser_mk.h.
#define __parser__return_type return-type=TYPE |
Replace an already defined return-type …
The goal is to reuse an already availalable declaration from an external-header-file and
change the return-type of a function to support an additional feature.
The following midications are possible;
int
(flag) return-type with an enum
or bool
return-type.If the return-type is an error-return-enum and the error-check or error-return-enum is set than the c_Native.tcl
will check and map the error-return-enum into an MkEnumE.
Also usefull if native
code is parsed and global
is used to modify the parse output.
scope | global or function |
usage | __parser__global__(FUNCTION:return-type=TYPE); |
usage | __parser__(return-type=TYPE) FUNCTION ... |
see also | __parser__global__(return-type-default); __parser__(return-type-default-no) |
Definition at line 1307 of file parser_mk.h.
#define __parser__return_type_default_no return-type-default-no |
Undo the return-type-default for a specific function…
For details read the doc in __parser__global__(return-type-default).
scope | global or function |
usage | __parser__global__(FUNCTION:return-type-default-no=yes); |
usage | __parser__(return-type-default-no) FUNCTION ... |
see also | __parser__(return-type); __parser__global__(return-type-default) |
Definition at line 1363 of file parser_mk.h.
#define __parser__runtime runtime=FUNC-NAME |
Add a public API function FUNC-NAME for a runtime-aware function…
The runtime is the global Programming-Language-Micro-Kernel (PLMK) storage defined as thread-local or static struct and is important for type and storage mangement.
if TREAD is enabled and for speed reason the first argument in a runtime-aware function provide the pointer to the runtime called mkrt ...
A function who start with MK_PARSER_RT or MK_RT_ARGS as first argument is called runtime-aware.
The runtime is only used internal and the public-api is using a macro-function starting with MK_RT_CALL to provide the runtime to the internal-api.
The argument FUNC-NAME is the public-api name of the function.
scope | global or function |
usage | __parser__global__(FUNCTION:runtime=FUNC-NAME); |
usage | __parser__(runtime=FUNC-NAME) FUNCTION ... |
MK_, MQ_, LC_, ...
kernel_runtime_rt.h
: Definition at line 1402 of file parser_mk.h.
#define __parser__silent silent |
do not complain about non-standart setup
If something unexpected happens, a warning message is issued by default, but sometimes it should be possible to configure something like this and then the silent suppresses this warning message.
scope | global or function |
usage | __parser__global__(FUNCTION:silent=yes); |
usage | __parser__(static) FUNCTION ... |
see also | nothing |
MqSysServerThreadMaini
is a very low-level function of theLink which was invisible in the meta-code-library-definition-file (META-FILE) using ignore and could only be called via C. Since, for example, C# does not support the internal C api, this function was set to hide with an argument type that is not supported by default. The silent now prevents the frontend compiler from complaining about it. Definition at line 1425 of file parser_mk.h.
#define __parser__static static |
Force a function to be a class-methode even if PLMK (Programming-Language-Micro-Kernel)-Compiler would chose an instance-method …
By default the FIRST argument of a function is checked to be a class-type or not. If a class-type is found the function will be a instance-function of the class. If this is not desired, use the static attribute to force an class-method,
scope | global or function |
usage | __parser__global__(FUNCTION:static=yes); |
usage | __parser__(static) FUNCTION ... |
see also | __parser__(argument); __parser__(class); |
Definition at line 1448 of file parser_mk.h.
#define __parser__template_in_c template-in-c |
The template is written in the C language and not in the Target-Programming-Language (TPL) language …
A template is written “by hand” and in a programming language with an API that is defined as a combination of lang-code and c-code (like Java), the question arises as to which language the template language should be.
By default, this attribute only makes sense in combination with __parser__template_overload.
This option overrides the default value, which is template-written-in-TPL-language.
scope | global or function |
usage | __parser__global__(FUNCTION:template-in-c=yes); |
usage | __parser__(template-in-c) FUNCTION ... |
see also | __parser__(template-required) |
Definition at line 1522 of file parser_mk.h.
#define __parser__template_overload template-overload |
Assume a predefined template to implement the function …
By default the PLMK (Programming-Language-Micro-Kernel)-Compiler generate the declaration and the definition of a function. Sometimes a function is beyond the capability of the compiler itself.
This special function require additional support by the programmer. Usually the PLMK (Programming-Language-Micro-Kernel)-Compiler add the definition of the function to the source-code and the programmer add a #define
macro to update the definition.
The difference between template-required and template-overload is the template-required will not implement the definition and template-overload does.
Example from MkObjectC_tcl.c The class is implemented in the target language and therefore the exact name of the class cannot be determined in the Programming-Language-Micro-Kernel (PLMK) but is passed to the implementation in the target language using template-overload.
scope | global or function |
usage | __parser__global__(FUNCTION:template-overload=yes); |
usage | __parser__(template-overload) FUNCTION ... |
see also | __parser__(template-required) |
Definition at line 1496 of file parser_mk.h.
#define __parser__template_required template-required |
Require a predefined template to implement the function …
By default the PLMK (Programming-Language-Micro-Kernel)-Compiler generate the declaration and the definition of a function. Sometimes a function is beyond the capability of the compiler itself. This special function have to be implemented as code-template by hand.
A template is loaded from the [INCLUDE_PATH/tmpl] directory OR, if present, from the source code itself.
The difference between template-required and template-overload is the template-required will not implement the definition and template-overload does.
scope | global or function |
usage | __parser__global__(FUNCTION:template-required=yes); |
usage | __parser__(template-required) FUNCTION ... |
see also | __parser__(template-overload) |
Definition at line 1553 of file parser_mk.h.
#define __parser__type type=META@DESCRIPTION |
Define the meta-type for the public-type …
A meta-type is an internal-type of the PLMK (Programming-Language-Micro-Kernel)-Compiler and is used in the meta-code-library-definition-file (META-FILE) to hide the native-type from PLMK (Programming-Language-Micro-Kernel)-Compiler internals. The meta-type always start with a ME_
prefix and uses min 3 extra characters to unique identify the native-type.
int
data-type At the beginning of meta-code-library-definition-file (META-FILE) is a short listing of the meta-types used.
scope | type |
usage | __parser__(type=META:DESCRIPTION) TYPE |
Definition at line 1579 of file parser_mk.h.
#define __parser__wrapper wrapper |
Add a wrapper to the default value of a function-argument …
By default a __parser__(default=…)
value is used as provided but sometimes this is not sufficiant and a wrapper is required in "C"
code to add a TPL-Namespace.
The wrapper is defined as "C"
macro in the TPL-Header-File and is required if the default value is a function-call in the TPL-Code.
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:wrapper=WRAPPER); |
usage | FUNCTION ( type argument __parser__(wrapper=WRAPPER) ... ) |
see also | __parser__(default) |
Definition at line 1601 of file parser_mk.h.