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__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__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__ignore_error ignore-error=BOOL|NUMBER|2 |
Ignore the MkErrorE error-indicator … | |
#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_allow null-allow |
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__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__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 204 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 226 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 272 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 287 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 306 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 348 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 366 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 381 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 420 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 447 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 469 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 528 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 490 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 519 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 552 of file parser_mk.h.
#define __parser__ignore_error ignore-error=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:ignore-error=yes); |
usage | __parser__(ignore-error) FUNCTION ... |
see also | __parser__(error-check) |
Definition at line 576 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 599 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 642 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 605 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 688 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 721 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 749 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 775 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 790 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 814 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 844 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 869 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 902 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 935 of file parser_mk.h.
#define __parser__no_inline no-inline |
Do not make this function inline …
Definition at line 940 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 968 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 1068 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 1010 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 1045 of file parser_mk.h.
#define __parser__null_allow null-allow |
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-allow is set
scope | global or argument |
usage | __parser__global__(FUNCTION:ARGUMENT:null-allow=yes); |
usage | FUNCTION ( type argument __parser__(null-allow) ... ) |
see also | __parser__(null-return-check); __parser__(null-return-allow) |
Definition at line 1081 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-allow) |
Definition at line 1097 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-allow) |
Definition at line 1126 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 602 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 1150 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 1170 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 1211 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 1227 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 1262 of file parser_mk.h.
#define __parser__return_type_default_no return-type-default-no |
Undo the return-type-default for a specific function…
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 1305 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_RT_PARSER 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 1344 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 1367 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 1441 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 1415 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 1472 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 1498 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 1520 of file parser_mk.h.