theCompiler 10.0
|
NHI1 -
theKernel -
theLink -
theConfig -
theSq3Lite -
theCompiler -
theBrain -
theGuard -
theLib -
theATL
|
COMPILE A native-library into a managed-object.
Basically, the alc-compiler is a tool for the programmer who is faced with the question of extracting information from a definition file, e.g. a c-header-file, in order to start various actions from it.
The libconfig can be found at: http://hyperrealm.github.io/libconfig/Libconfig is a simple library for processing structured configuration files. This file format is more compact and more readable than XML. And unlike XML, it is type-aware, so it is not necessary to do string parsing in application code.
libconfig is a native-library which means that the library itself, as downloaded from the internet, does not contain any managed-object information and is therefore completely independent of the alc-compiler project.
First it needs a framework for the managed-object library.
The basic framework consists of the class-definitions and the library-definition. The class-definitions are generated from a database containing the definitions of all classes and ultimately sort to ensure that the class-hierarchy is enforced.
A class is a managed-object and is defined by one or more struct in C. The class definition is replaced by cls_MqC
added to the header file.
The class definition database ClassDB
is very simple :
# ==================================================================================== # Define "LcConfig" classes define class MkObjectS LcConfigS { desc "LcConfigC class handle" Short Cfg header LcConfigC } define class MkObjectS LcSettingS { desc "LcSettingC class handle" Short Cfs header LcSettingC }
There will be one file per class ( LcConfigC_lc.h and LcSettingC_lc.h ) and one file as library-definition ( LibLcConfig_lc.h ).
call: 'c_Class.tcl' '-lc' '-d' pInit -> PINIT[#0] -> +++ use : lang<c> : api<Class> : top<c_Class.tcl> -> PINIT[#0] -> argv<-lc -d> -> PINIT[>0] -> INIT(lang)<c> : INIT(Api)<Class> : INIT(argv)<-i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[>0] -> CONFIG(FUNCEXPR)<§undef§> : CONFIG(CLASSEXPR)<§undef§> -> PINIT[=1] -> CONFIG(PRINT)<1> : CONFIG(ONFILTER)<0> : CONFIG(ONFILTER2)<0> : CONFIG(ONVERBOSE)<1> -> PINIT[=1] -> CONFIG(LIB_BASE_DIR)<NHI1_HOME/theConfig> : CONFIG(LIBDIR)<NHI1_HOME/theConfig/c> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theCompiler/src/lib_C.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theKernel/c/compiler.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theConfig/c/compiler.tcl> -> PINIT[#1] -> call init : top<c_Class.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_CLS.tcl> classTree::Main -> use classdb: NHI1_HOME/etc/ClassDB.tcl -> PINIT[#1] : LIST -> | info : +++ use -> | IGNORE(#ignore) : <> -> | IGNORE(#only) : <> -> | IGNORE(INTERNAL) : 0 -> PINIT[#1] -> IGNORE(HIDE)<0> : ::HIDE<> : ::KEEP<> -> PINIT[#1] -> imeta<NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[#1] -> getterL<alias:pGet_M2L> : getterS<alias:pGet_M2S> : getterC<alias:pGet_M2C> ::cache::cache_open -> CUM -> chORfn<LcConfig> , ext<c> , args<LibNsPkg_lib> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> pInclude -> id<Class-Setup> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<Class-Setup> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> ::cache::cache_open -> CUM -> chORfn<LcConfig> , ext<c> , args<LibNsPkg_lib> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> pInclude -> id<Class-Cleanup> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<Class-Cleanup> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> ::cache::cache_open -> CUM -> chORfn<private_lc> , ext<h> , args<package_private_lib> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/private_lc.h> pInclude -> id<Class-Extern> , cfn<rc2> , fn<NHI1_HOME/theConfig/c/private_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<Class-Extern> , fn<NHI1_HOME/theConfig/c/private_lc.h> ::cache::cache_open -> CUM -> chORfn<rc2> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/private_lc.h> ::cache::cache_open -> CUM -> chORfn<LcConfig> , ext<h> , args<LibNsPkg_lib> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> pInclude -> id<Class-Include> , cfn<rc4> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<Class-Include> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> ::cache::cache_open -> CUM -> chORfn<rc4> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> ::cache::cache_open -> CUM -> chORfn<private_lc> , ext<h> , args<package_private_lib> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/private_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/private_lc.h> pInclude -> id<Class-Init-Define> , cfn<rc2> , fn<NHI1_HOME/theConfig/c/private_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<Class-Init-Define> , fn<NHI1_HOME/theConfig/c/private_lc.h> ::cache::cache_open -> CUM -> chORfn<rc2> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/private_lc.h> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcConfigC_lc.c> tmpl_make_from_file -> keep file -> fn<NHI1_HOME/theConfig/c/LcConfigC_lc.c> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcSettingC_lc.c> tmpl_make_from_file -> keep file -> fn<NHI1_HOME/theConfig/c/LcSettingC_lc.c> ::cache::cache_open -> CUM -> chORfn<LcSettingC_def> , ext<h> , args<Class_def §ClassC§ LcSettingC §ClassS§ LcSettingS §Class§ LcSetting §Name§ Setting §param§ lccfs §PaRam§ LcCfs §Short§ Cfs §RootC§ SettingC §native§ config_setting_t> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> pInclude -> id<LcSettingS-Definition> , cfn<rc6> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<LcSettingS-Definition> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc6> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<LcConfigC_def> , ext<h> , args<Class_def §ClassC§ LcConfigC §ClassS§ LcConfigS §Class§ LcConfig §Name§ Config §param§ lccfg §PaRam§ LcCfg §Short§ Cfg §RootC§ ConfigC §native§ config_t> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> pInclude -> id<LcConfigS-Definition> , cfn<rc8> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<LcConfigS-Definition> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc8> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<LcConfigC_def> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> pInclude -> id<Class-Introspection> , cfn<rc8> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<Class-Introspection> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc8> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<LcSettingC_def> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> pInclude -> id<Class-Introspection> , cfn<rc6> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<Class-Introspection> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc6> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<LcConfigC_def> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> pInclude -> id<Class-Doc-Order> , cfn<rc8> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<Class-Doc-Order> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc8> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<LcSettingC_def> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> pInclude -> id<Class-Doc-Order> , cfn<rc6> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<Class-Doc-Order> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc6> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<LcSettingC_def> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> pInclude -> id<LcSettingS-Export> , cfn<rc6> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<LcSettingS-Export> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc6> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<LcConfigC_def> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> pInclude -> id<LcConfigS-Export> , cfn<rc8> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<LcConfigS-Export> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc8> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<LcSettingC_def> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> pInclude -> id<LcSettingS-native> , cfn<rc6> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<LcSettingS-native> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc6> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<LcSettingC_def> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> pInclude -> id<LcSettingS-super> , cfn<rc6> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<LcSettingS-super> , fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc6> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<LibLcConfig> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> pInclude -> id<ShortDef> , cfn<rc4> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<ShortDef> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> ::cache::cache_open -> CUM -> chORfn<rc4> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> ::cache::cache_open -> CUM -> chORfn<LcConfigC_def> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> pInclude -> id<LcConfigS-native> , cfn<rc8> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<LcConfigS-native> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc8> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<LcConfigC_def> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> pInclude -> id<LcConfigS-super> , cfn<rc8> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<LcConfigS-super> , fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> ::cache::cache_open -> CUM -> chORfn<rc8> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> pInclude -> id<Class-define> , cfn<NHI1_HOME/theConfig/c/tmpl/lc_misc_check_lng.h> , fn<NHI1_HOME/theConfig/c/tmpl/lc_misc_check_lng.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | ns_misc_check_lng -> | -tmpl-args | <> pInclude -> PRINT -> id<Class-define> , fn<NHI1_HOME/theConfig/c/tmpl/lc_misc_check_lng.h> ::cache::cache_open -> CUM -> chORfn<NHI1_HOME/theConfig/c/tmpl/lc_misc_check_lng.h> , ext<-> , args<ns_misc_check_lng> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/tmpl/lc_misc_check_lng.h> pInclude -> id<Class-define> , cfn<NHI1_HOME/theConfig/c/tmpl/lc_type_S_lng.h> , fn<NHI1_HOME/theConfig/c/tmpl/lc_type_S_lng.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | ns_type_S_lng -> | -tmpl-args | <> pInclude -> PRINT -> id<Class-define> , fn<NHI1_HOME/theConfig/c/tmpl/lc_type_S_lng.h> ::cache::cache_open -> CUM -> chORfn<NHI1_HOME/theConfig/c/tmpl/lc_type_S_lng.h> , ext<-> , args<ns_type_S_lng> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/tmpl/lc_type_S_lng.h> pInclude -> id<HEADER> , cfn<LibLcConfig> , fn<LibLcConfig> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | h -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> PRINT -> id<HEADER> , fn<LibLcConfig> ::cache::cache_open -> CUM -> chORfn<LibLcConfig> , ext<h> , args<{}> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/tmpl/lc_type_S_lng.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/private_lc.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/tmpl/lc_misc_check_lng.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/LcConfigC_def_lc.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/LcSettingC_def_lc.h>
And create the following code (example: LcConfigS) :
Example from LcConfigC_def_lc.h
→ class hierarchy
Example from LcConfigC_def_lc.h
→ class definition
Example from LibLcConfig_lc.h
→ class type definition
Example from LcConfigC_def_lc.h
→ class introspection
The meta-code is the most important file from the alc-compiler as near all tools use this file to extract the api-definition.
The config_lc.h
file is the wrapper needed only for compiling with c_Meta
to add __parser__
directives that ultimately adapt the native definitions in libconfig.h
to the managed-object structure. In addition to the native API, the classes generated using c_Class
are also compiled.
The c_Meta
write the meta-code into the package-directory because this file will be added into the release-management (git). By default the filenames gen/c_lcconfig.meta
and gen/nat_lcconfig.meta
are created and follow the project name LibLcConfig.
call: 'c_Meta.tcl' '-lc' pInit -> PINIT[#0] -> +++ use : lang<c> : api<Meta> : top<c_Meta.tcl> -> PINIT[#0] -> argv<-lc> c_Meta__Main -> LIST -> | imk : NHI1_HOME/theKernel/c -> | header : NHI1_HOME/theConfig/c/config_lc.h ProcessParseC -> incdir<list> -> | -INHI1_HOME/theConfig/c -> | -INHI1_HOME/theKernel/c -> | -INHI1_EXT/x86_64-suse-linux-gnu/debug2/include -> | -INHI1_BUILD/x86_64-suse-linux-gnu/debug2 WriteMeta -> LIST -> | metaf : NHI1_HOME/theConfig/c/gen/nat_lcconfig.meta -> | indexF : NHI1_HOME/theConfig/c/gen/nat_lcconfig.index File_Write -> keep file -> fn<NHI1_HOME/theConfig/c/gen/nat_lcconfig.meta> File_Write -> keep file -> fn<NHI1_HOME/theConfig/c/gen/nat_lcconfig.index> WriteMeta -> LIST -> | metaf : NHI1_HOME/theConfig/c/gen/c_lcconfig.meta -> | indexF : NHI1_HOME/theConfig/c/gen/c_lcconfig.index File_Write -> keep file -> fn<NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> File_Write -> keep file -> fn<NHI1_HOME/theConfig/c/gen/c_lcconfig.index>
The following image shows the meta-code of the native function config_lookup_int64
:
grep '\<LcConfigLookupInt64\>' NHI1_HOME/theConfig/c/gen/nat_lcconfig.meta
The problem is that a native-library lacks all the functionality required to function properly as a managed-object
The c_Native
perform the following tasks:
call: 'c_Native.tcl' '-lc' '-v' pInit -> PINIT[#0] -> +++ use : lang<c> : api<Native> : top<c_Native.tcl> -> PINIT[#0] -> argv<-lc -v> -> PINIT[>0] -> INIT(lang)<c> : INIT(Api)<Native> : INIT(argv)<-i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[>0] -> CONFIG(FUNCEXPR)<§undef§> : CONFIG(CLASSEXPR)<§undef§> -> PINIT[=1] -> CONFIG(PRINT)<0> : CONFIG(ONFILTER)<0> : CONFIG(ONFILTER2)<0> : CONFIG(ONVERBOSE)<1> -> PINIT[=1] -> CONFIG(LIB_BASE_DIR)<NHI1_HOME/theConfig> : CONFIG(LIBDIR)<NHI1_HOME/theConfig/c> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theCompiler/src/lib_C.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theKernel/c/compiler.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theConfig/c/compiler.tcl> -> PINIT[#1] -> call init : top<c_Native.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/c_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_DX.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/c_MqC.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqC.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqC_type_C.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_Native.tcl> -> PINIT[#1] : LIST -> | info : +++ use -> | IGNORE(#ignore) : <> -> | IGNORE(#only) : <> -> | IGNORE(INTERNAL) : 0 -> PINIT[#1] -> IGNORE(HIDE)<0> : ::HIDE<> : ::KEEP<> -> PINIT[#1] -> imeta<NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[#1] -> getterL<alias:pGet_M2L> : getterS<alias:pGet_M2S> : getterC<alias:pGet_M2S> pEVAL -> +++000 -> try native pEVAL -> +++333 -> use imeta -> imeta<NHI1_HOME/theConfig/c/gen/nat_lcconfig.meta> pEVAL -> +++333 -> use cache -> cache<NHI1_BUILD/x86_64-suse-linux-gnu/debug2/theConfig/c/gen/nat_lcconfig.meta.compile> p_funcEND -> statistics -> p_funcDEF_all<126> , p_funcDEF_use<126> , p_funcDEF_skip<0> , p_funcDEF_internal<13> , p_funcDEF_hide<0> p_funcEND -> use all '126' functions lib_ME__build_CLASS_index -> print CLASS database -> CLASS<array|P|*> -> CLASS = <array|P|*> -> | LcConfig | empty -> | LcConfigC | LcConfigC-Error LcConfigC-Get LcConfigC-Lookup LcConfigC-Misc LcConfigC-Set -> | LcSettingC | LcSettingC-Get LcSettingC-Is LcSettingC-Lookup LcSettingC-Misc LcSettingC-Set LcSettingC-TOR lib_ME__write_funcARY -> Xclass<LcConfig> ::cache::cache_open -> CUM -> chORfn<LcConfig> , ext<h> , args<{} §ClassC§ LcConfig> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> pInclude -> id<LcConfig-inline> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> lib_ME__write_funcARY -> Xclass<LcConfigC> ::cache::cache_open -> CUM -> chORfn<LcConfigC> , ext<h> , args<{} §ClassC§ LcConfigC §NS_CLS§ LC_CFG> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> pInclude -> id<LcConfigC-inline> , cfn<rc2> , fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc2> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> lib_ME__write_funcARY -> Xclass<LcSettingC> ::cache::cache_open -> CUM -> chORfn<LcSettingC> , ext<h> , args<{} §ClassC§ LcSettingC §NS_CLS§ LC_CFS> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcSettingC_lc.h> pInclude -> id<LcSettingC-inline> , cfn<rc4> , fn<NHI1_HOME/theConfig/c/LcSettingC_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc4> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_lc.h> lib_ME__build_CLASS_index -> print CLASS database -> CLASS<array|P|*> -> CLASS = <array|P|*> -> | LcConfig | empty -> | LcConfigC | empty -> | LcSettingC | empty lib_ME__write_funcARY -> Xclass<LcConfig> ::cache::cache_open -> CUM -> chORfn<LcConfig> , ext<h> , args<{} §ClassC§ LcConfig> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> pInclude -> id<LcConfig-fupu> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> lib_ME__write_funcARY -> Xclass<LcConfigC> ::cache::cache_open -> CUM -> chORfn<LcConfigC> , ext<h> , args<{} §ClassC§ LcConfigC §NS_CLS§ LC_CFG> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> pInclude -> id<LcConfigC-fupu> , cfn<rc2> , fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc2> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> lib_ME__write_funcARY -> Xclass<LcSettingC> ::cache::cache_open -> CUM -> chORfn<LcSettingC> , ext<h> , args<{} §ClassC§ LcSettingC §NS_CLS§ LC_CFS> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcSettingC_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_lc.h> pInclude -> id<LcSettingC-fupu> , cfn<rc4> , fn<NHI1_HOME/theConfig/c/LcSettingC_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc4> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcSettingC_lc.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/LcSettingC_lc.h>
The following image shows the translation of the native function config_lookup_int64
into the manged-object function LcConfigLookupInt64.
call: 'c_Native.tcl' '-lc' '-d' '-f' 'LcConfigLookupInt64' pInit -> PINIT[#0] -> +++ use : lang<c> : api<Native> : top<c_Native.tcl> -> PINIT[#0] -> argv<-lc -d -f LcConfigLookupInt64> -> PINIT[>0] -> INIT(lang)<c> : INIT(Api)<Native> : INIT(argv)<-i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[>0] -> CONFIG(FUNCEXPR)<LcConfigLookupInt64> : CONFIG(CLASSEXPR)<§undef§> -> PINIT[=1] -> CONFIG(PRINT)<1> : CONFIG(ONFILTER)<1> : CONFIG(ONFILTER2)<1> : CONFIG(ONVERBOSE)<1> -> PINIT[=1] -> CONFIG(LIB_BASE_DIR)<NHI1_HOME/theConfig> : CONFIG(LIBDIR)<NHI1_HOME/theConfig/c> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theCompiler/src/lib_C.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theKernel/c/compiler.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theConfig/c/compiler.tcl> -> PINIT[#1] -> call init : top<c_Native.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/c_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_DX.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/c_MqC.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqC.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqC_type_C.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_Native.tcl> -> PINIT[#1] : LIST -> | info : +++ use -> | IGNORE(#ignore) : <> -> | IGNORE(#only) : <> -> | IGNORE(INTERNAL) : 0 -> PINIT[#1] -> IGNORE(HIDE)<0> : ::HIDE<> : ::KEEP<> -> PINIT[#1] -> imeta<NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[#1] -> getterL<alias:pGet_M2L> : getterS<alias:pGet_M2S> : getterC<alias:pGet_M2S> |DEBUG[1]: pEVAL -> >>> START: , CONFIG<array|P|*> , INIT<array|P|*> |DEBUG[1]: -> CONFIG = <array|P|*> |DEBUG[1]: -> | ALLOW_argv | no | ALWAYS_DEFAULT | no |DEBUG[1]: -> | ARRAY_IS_VARARG | no | BROKEN_C_NAME | no |DEBUG[1]: -> | CLASSEXPR | §undef§ | CMD | c_Native.tcl |DEBUG[1]: -> | CMT | // | CMT_DX | /// |DEBUG[1]: -> | CNs | LcNs | CODEEXT_C | c |DEBUG[1]: -> | CODEEXT_N | c | CODEEXT_S | c |DEBUG[1]: -> | C_API | yes | DEBUG | 1 |DEBUG[1]: -> | DEPENDENCY | no | DOCID | C |DEBUG[1]: -> | ENUM_KEYWORDS | <> | ERASE_ALL | no |DEBUG[1]: -> | FILTER | yes | FORCE | no |DEBUG[1]: -> | FRAME_CLEANUP | no | FRAME_GET_ALL | no |DEBUG[1]: -> | FRAME_INIT_STACK | no | FUNCEXPR | LcConfigLookupInt64 |DEBUG[1]: -> | FUNC_KEYWORDS | <> | HAS_CLASS | no |DEBUG[1]: -> | HAS_DEFAULT_ARG | no | HAS_REF_POINTER | no |DEBUG[1]: -> | HAS_TYPE_FIRST | yes | JUMP_ON_ERROR | no |DEBUG[1]: -> | KEYWORDS | <> | LIBDIR | NHI1_HOME/theConfig/c |DEBUG[1]: -> | LIB_BASE_DIR | NHI1_HOME/theConfig | LONG | lc |DEBUG[1]: -> | LngId | c | META_FILE_EXTENSION | <> |DEBUG[1]: -> | META_HIDE_BEGIN | #ifndef PARSE_C_HEADER_TO_META | META_HIDE_END | #endif |DEBUG[1]: -> | ONFILTER | 1 | ONFILTER2 | 1 |DEBUG[1]: -> | ONPROFILE | false | ONVERBOSE | 1 |DEBUG[1]: -> | OVERLOAD | no | OVERLOAD_CALL | yes |DEBUG[1]: -> | OVERLOAD_CLASS | yes | OVERLOAD_NAME | yes |DEBUG[1]: -> | PRINT | 1 | PRINT2 | 1 |DEBUG[1]: -> | PROFILE_KEY | exclusiveRuntime | PROFILE_PAT | * |DEBUG[1]: -> | RCNs | @RLcNs | SHOW_FILTER | no |DEBUG[1]: -> | SHOW_FILTER_DETAIL | no | SILENT | 0 |DEBUG[1]: -> | STDOUT | 0 | STYLE | C |DEBUG[1]: -> | TOPLEVEL | NHI1_HOME/theCompiler/src/c_Native.tcl | USE_CALLBACK | no |DEBUG[1]: -> | USE_FINAL_NAME | false | USE_LONG_NAME | no |DEBUG[1]: -> | USE_NS | no | VARARG_IS_ARRAY | no |DEBUG[1]: -> | VERBOSE | 1 | WARNING_AS_ERROR | no |DEBUG[1]: -> | WRITE | no | lng_nspkg | c_lcconfig |DEBUG[1]: -> INIT = <array|P|*> |DEBUG[1]: -> | Api | Native | LANG | C |DEBUG[1]: -> | Ns | Lc | Prefix | c_Native |DEBUG[1]: -> | argv | -i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta | example | no |DEBUG[1]: -> | lang | c | langid | c |DEBUG[1]: -> | ns | lc | overwrite | no pEVAL -> +++000 -> try native pEVAL -> +++333 -> use imeta -> imeta<NHI1_HOME/theConfig/c/gen/nat_lcconfig.meta> pEVAL -> +++333 -> use cache -> cache<NHI1_BUILD/x86_64-suse-linux-gnu/debug2/theConfig/c/gen/nat_lcconfig.meta.compile> | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<FUNC_S> , | DEBUG[1]: tcl::mathfunc::checkIgnore -> ignore<HIDE> , | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<INTERNAL> , p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigLookupInt64> p_funcEND -> statistics -> p_funcDEF_all<126> , p_funcDEF_use<1> , p_funcDEF_skip<125> , p_funcDEF_internal<13> , p_funcDEF_hide<0> p_funcEND -> skip '125' from '126' functions -> p_funcDEF_use<LcConfigLookupInt64> | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<FUNC_S> , pEVAL -> funcDEF RESULT : LcConfigLookupInt64 ========================================= pEVAL -> ty<omo> , type0M<ME_CCN_LcConfigC> , var0<config> , pEVAL -> retM<ME_ENE_MkErrorE> , retC<MkErrorE> , retOM<ME_ENE_MkErrorE> , pEVAL -> class<LcConfigC> , classM<ME_CCN_LcConfigC> , classC<LcConfigC> , pEVAL -> prefix<LcConfig> , prefixM<ME_CCN_LcConfigC> , prefixC<LcConfigC> , pEVAL -> argv<{ME_CCN_LcConfigC config} {ME_PSN_MK_STRN path} {ME_NI8_MK_I64 value_out}> , RETURN_MAPPING<> pEVAL -> =================================================================== | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<INSTANCE> , | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<STATIC> , | DEBUG[1]: lib_DX__getDocParameterApi -> >>> START: , __NAME__<LcConfigLookupInt64> | DEBUG[1]: getDocR -> >>> START: doc(R) , __NAME__<LcConfigLookupInt64> , cls<LcConfigC> , pfx<LcConfig> | DEBUG[1]: lib_DX__getDocParameterApi -> LIST | DEBUG[1]: -> | __NAME__ : LcConfigLookupInt64 | DEBUG[1]: -> | isDocI : 0 | DEBUG[1]: -> | dR : Lookup | DEBUG[1]: -> | dRA : LcConfigC-Lookup | DEBUG[1]: -> | dI : _ignore_ | DEBUG[1]: -> | dIA : LcConfigC-Lookup | DEBUG[1]: -> | clsR : LcConfigC | DEBUG[1]: -> | dDA : LcConfigC_Lookup_C_API writeARY(LcConfigC,LcConfigC-Lookup,omo) = |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~ , |DEBUG[1]: -> +++ START +++ , __NAME__<LcConfigLookupInt64> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: Setup , __NAME__<LcConfigLookupInt64> | DEBUG[1]: lib_MqS__ARG -> >>> START: , LIST | DEBUG[1]: -> | __NAME__ : LcConfigLookupInt64 | DEBUG[1]: -> | ty : omo | DEBUG[1]: -> | getter : getterC | DEBUG[1]: -> | formater : Filter_arg_in | DEBUG[1]: -> | argv : {ME_CCN_LcConfigC config} {ME_PSN_MK_STRN path} {ME_NI8_MK_I64 value_out} | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_CCN_LcConfigC> , av<config> , getter<getterC> , ::Flag_onNativeDefault<false> | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_PSN_MK_STRN> , av<path> , getter<getterC> , ::Flag_onNativeDefault<false> | DEBUG[1]: lib_MqS__ARG_default -> >>> START: , at<ME_NI8_MK_I64> , av<value_out> , getter<getterC> | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_NI8_MK_I64> , av<value_out> , getter<getterC> , ::Flag_onNativeDefault<false> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelProc , | DEBUG[1]: LevelProc -> >>> START: , /// @ingroup LcConfigC_Lookup_C_API mk_inline enum MkErrorE LcConfigLookupInt64 (LC_CFGN config, MK_STRN path, MK_I64 *value_out) { LC_INSTANCE_HDL(config); |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelInit , | DEBUG[1]: LevelInit -> >>> START: , | DEBUG[1]: lib_MqC__CALL__styleC -> >>> START: , argv<{ME_CCN_LcConfigC config} {ME_PSN_MK_STRN path} {ME_NI8_MK_I64 value_out}> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelCode , | DEBUG[1]: LevelCode -> >>> START: , |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: SpecialArgument , retVal<__retVal__L> , __NAME__<LcConfigLookupInt64> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: retVal definition , retOM<ME_ENE_MkErrorE> , ::LibAllErrorType<^ME_ENE_MkErrorE> , retVal<__retVal__L> , CALL<(enum LcErrorE)config_lookup_int64(config->nat, path, value_out)> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> 111 , ::attributeDEF<EMPTY> enum LcErrorE errVal = (enum LcErrorE)config_lookup_int64(config->nat, path, value_out); | DEBUG[1]: lib_MqC__Raise_Error -> >>> START: RaiseError , CONFIG(JUMP_ON_ERROR) LcErrorE_Check(config, errVal); |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: return , retM<void> , retOM<ME_ENE_MkErrorE> , classM<ME_CCN_LcConfigC> , ty<omo> , CALL<errVal> return MK_OK; error: return MK_ERROR; } lib_ME__build_CLASS_index -> print CLASS database -> CLASS<array|P|*> -> CLASS = <array|P|*> -> | LcConfig | empty -> | LcConfigC | LcConfigC-Lookup -> | LcSettingC | empty lib_ME__write_funcARY -> Xclass<LcConfigC> ::cache::cache_open -> CUM -> chORfn<LcConfigC> , ext<h> , args<{} §ClassC§ LcConfigC §NS_CLS§ LC_CFG> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> pInclude -> id<LcConfigC-inline> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> #ifndef PARSE_C_HEADER_TO_META // doc-key: LcConfigC,LcConfigC-Lookup,omo |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~ , |DEBUG[1]: -> +++ START +++ , __NAME__<LcConfigLookupInt64> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: Setup , __NAME__<LcConfigLookupInt64> | DEBUG[1]: lib_MqS__ARG -> >>> START: , LIST | DEBUG[1]: -> | __NAME__ : LcConfigLookupInt64 | DEBUG[1]: -> | ty : omo | DEBUG[1]: -> | getter : getterC | DEBUG[1]: -> | formater : Filter_arg_in | DEBUG[1]: -> | argv : {ME_CCN_LcConfigC config} {ME_PSN_MK_STRN path} {ME_NI8_MK_I64 value_out} | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_CCN_LcConfigC> , av<config> , getter<getterC> , ::Flag_onNativeDefault<false> | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_PSN_MK_STRN> , av<path> , getter<getterC> , ::Flag_onNativeDefault<false> | DEBUG[1]: lib_MqS__ARG_default -> >>> START: , at<ME_NI8_MK_I64> , av<value_out> , getter<getterC> | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_NI8_MK_I64> , av<value_out> , getter<getterC> , ::Flag_onNativeDefault<false> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelProc , | DEBUG[1]: LevelProc -> >>> START: , /// @ingroup LcConfigC_Lookup_C_API mk_inline enum MkErrorE LcConfigLookupInt64 (LC_CFGN config, MK_STRN path, MK_I64 *value_out) { LC_INSTANCE_HDL(config); |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelInit , | DEBUG[1]: LevelInit -> >>> START: , | DEBUG[1]: lib_MqC__CALL__styleC -> >>> START: , argv<{ME_CCN_LcConfigC config} {ME_PSN_MK_STRN path} {ME_NI8_MK_I64 value_out}> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelCode , | DEBUG[1]: LevelCode -> >>> START: , |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: SpecialArgument , retVal<__retVal__L> , __NAME__<LcConfigLookupInt64> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: retVal definition , retOM<ME_ENE_MkErrorE> , ::LibAllErrorType<^ME_ENE_MkErrorE> , retVal<__retVal__L> , CALL<(enum LcErrorE)config_lookup_int64(config->nat, path, value_out)> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> 111 , ::attributeDEF<EMPTY> enum LcErrorE errVal = (enum LcErrorE)config_lookup_int64(config->nat, path, value_out); | DEBUG[1]: lib_MqC__Raise_Error -> >>> START: RaiseError , CONFIG(JUMP_ON_ERROR) LcErrorE_Check(config, errVal); |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: return , retM<void> , retOM<ME_ENE_MkErrorE> , classM<ME_CCN_LcConfigC> , ty<omo> , CALL<errVal> return MK_OK; error: return MK_ERROR; } #endif |DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<FUPU_S> , | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<FUPU_S> , p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigIncludeCallF> p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigIncludeFreeF> p_filter -> DEBUG[#1] -> use , __NAME__<LcFupu_LcConfigSetDestructor_destructor> c_Native__fupuLST_2_fupuARY -> WARNING: func-expression(-f) filter on 'LcFupu_LcConfigSetDestructor_destructor' but 'baseFuncName' is missing , LIST -> | CONFIG(FUNCEXPR) : LcConfigLookupInt64 -> | baseFuncName : LcConfigSetDestructor -> | TASK : filter on '(LcConfigSetDestructor|LcFupu_LcConfigSetDestructor_destructor)' p_filter -> DEBUG[#1] -> use , __NAME__<LcSettingDeleteCallF> p_filter -> DEBUG[#1] -> use , __NAME__<LcSettingDeleteFreeF> p_filter -> DEBUG[#1] -> use , __NAME__<LcSetupThreadF> lib_MqS__fupu_filter -> WARNING: FILTER -> __NAME__<config_include_fn_t> lib_ME__build_CLASS_index -> print CLASS database -> CLASS<array|P|*> -> CLASS = <array|P|*> -> | LcConfig | empty -> | LcConfigC | empty -> | LcSettingC | empty lib_ME__write_funcARY -> Xclass<LcConfigC> ::cache::cache_open -> CUM -> chORfn<LcConfigC> , ext<h> , args<{} §ClassC§ LcConfigC §NS_CLS§ LC_CFG> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> pInclude -> id<LcConfigC-fupu> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> WARNING: outTXT is empty -> id<LcConfigC-fupu> , ext<-> , fn<NHI1_HOME/theConfig/c/LcConfigC_lc.h> -> Stack[2]: pInclude LcConfigC-fupu rc0 -add no ... -> Stack[1]: lib_ME__write_funcARY -array ::fupuARY -id %ClassC%-fupu -hea ...
An "overload" is a function that adds an additional function with the same or a similar name to an existing function to represent a "function" that does not exist in the original API.
"C" requires an "overload" for :
The default-argument is implemented in "C" using the overload-language-extension to "C" that appends the postfix _X
(X=0,1,2,3,...) to the original function name to identify the number of arguments in the "overload".
void MyFunc(type1 arg1, type2 arg2 __parser_(default=xyz))
void MyFunc(type1 arg1, type2 arg2)
#define MyFunc_1(...) MyFunc(__VA_ARGS__,xyz)
The following image shows the "overload" using the verbose -v
mode :
call: 'c_Overload.tcl' '-lc' '-v' pInit -> PINIT[#0] -> +++ use : lang<c> : api<Overload> : top<c_Overload.tcl> -> PINIT[#0] -> argv<-lc -v> -> PINIT[>0] -> INIT(lang)<c> : INIT(Api)<Overload> : INIT(argv)<-i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[>0] -> CONFIG(FUNCEXPR)<§undef§> : CONFIG(CLASSEXPR)<§undef§> -> PINIT[=1] -> CONFIG(PRINT)<0> : CONFIG(ONFILTER)<0> : CONFIG(ONFILTER2)<0> : CONFIG(ONVERBOSE)<1> -> PINIT[=1] -> CONFIG(LIB_BASE_DIR)<NHI1_HOME/theConfig> : CONFIG(LIBDIR)<NHI1_HOME/theConfig/c> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theCompiler/src/lib_C.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theKernel/c/compiler.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theConfig/c/compiler.tcl> -> PINIT[#1] -> call init : top<c_Overload.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_DX.tcl> -> PINIT[#1] : LIST -> | info : +++ use -> | IGNORE(#ignore) : <> -> | IGNORE(#only) : <> -> | IGNORE(INTERNAL) : 0 -> PINIT[#1] -> IGNORE(HIDE)<0> : ::HIDE<> : ::KEEP<> -> PINIT[#1] -> imeta<NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[#1] -> getterL<alias:pGet_M2L> : getterS<alias:pGet_M2S> : getterC<alias:pGet_M2S> pEVAL -> +++000 -> try native pEVAL -> +++333 -> use imeta -> imeta<NHI1_HOME/theConfig/c/gen/nat_lcconfig.meta> pEVAL -> +++333 -> use cache -> cache<NHI1_BUILD/x86_64-suse-linux-gnu/debug2/theConfig/c/gen/nat_lcconfig.meta.compile> p_funcEND -> statistics -> p_funcDEF_all<139> , p_funcDEF_use<139> , p_funcDEF_skip<0> , p_funcDEF_internal<0> , p_funcDEF_hide<0> p_funcEND -> use all '139' functions ::cache::cache_open -> CUM -> chORfn<gen/config_overload> , ext<h> , args<package_overload_lib> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/gen/config_overload_lc.h> lib_ME__build_CLASS_index -> print CLASS database -> CLASS<array|P|*> -> CLASS = <array|P|*> -> | LcConfig | LcConfig-Enum -> | LcConfigC | LcConfigC-Class-Export LcConfigC-Class-Introspection LcConfigC-Lookup LcConfigC-Misc LcConfigC-Set LcConfigC-TOR -> | LcSettingC | LcSettingC-Class-Export LcSettingC-Class-Introspection LcSettingC-Lookup LcSettingC-Misc LcSettingC-Set lib_ME__write_funcARY -> Xclass<LcConfig> pInclude -> id<LcConfig> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/gen/config_overload_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{} -create> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/gen/config_overload_lc.h> lib_ME__write_funcARY -> Xclass<LcConfigC> pInclude -> id<LcConfigC> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/gen/config_overload_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{} -create> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/gen/config_overload_lc.h> lib_ME__write_funcARY -> Xclass<LcSettingC> pInclude -> id<LcSettingC> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/gen/config_overload_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{} -create> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/gen/config_overload_lc.h> ::cache::cache_open -> CUM -> chORfn<NHI1_HOME/theConfig/c/gen/overload.index> , ext<-> , args<-create> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/gen/overload.index> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/gen/config_overload_lc.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/gen/overload.index>
The following image shows the "overload" of the manged-object function LcConfigLog :
call: 'c_Overload.tcl' '-lc' '-d' '-f' 'LcConfigLog' pInit -> PINIT[#0] -> +++ use : lang<c> : api<Overload> : top<c_Overload.tcl> -> PINIT[#0] -> argv<-lc -d -f LcConfigLog> -> PINIT[>0] -> INIT(lang)<c> : INIT(Api)<Overload> : INIT(argv)<-i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[>0] -> CONFIG(FUNCEXPR)<LcConfigLog> : CONFIG(CLASSEXPR)<§undef§> -> PINIT[=1] -> CONFIG(PRINT)<1> : CONFIG(ONFILTER)<1> : CONFIG(ONFILTER2)<1> : CONFIG(ONVERBOSE)<1> -> PINIT[=1] -> CONFIG(LIB_BASE_DIR)<NHI1_HOME/theConfig> : CONFIG(LIBDIR)<NHI1_HOME/theConfig/c> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theCompiler/src/lib_C.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theKernel/c/compiler.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theConfig/c/compiler.tcl> -> PINIT[#1] -> call init : top<c_Overload.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_DX.tcl> -> PINIT[#1] : LIST -> | info : +++ use -> | IGNORE(#ignore) : <> -> | IGNORE(#only) : <> -> | IGNORE(INTERNAL) : 0 -> PINIT[#1] -> IGNORE(HIDE)<0> : ::HIDE<> : ::KEEP<> -> PINIT[#1] -> imeta<NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[#1] -> getterL<alias:pGet_M2L> : getterS<alias:pGet_M2S> : getterC<alias:pGet_M2S> |DEBUG[1]: pEVAL -> >>> START: , CONFIG<array|P|*> , INIT<array|P|*> |DEBUG[1]: -> CONFIG = <array|P|*> |DEBUG[1]: -> | ALLOW_argv | no | ALWAYS_DEFAULT | no |DEBUG[1]: -> | ARRAY_IS_VARARG | no | BROKEN_C_NAME | no |DEBUG[1]: -> | CLASSEXPR | §undef§ | CMD | c_Overload.tcl |DEBUG[1]: -> | CMT | // | CMT_DX | /// |DEBUG[1]: -> | CNs | LcNs | CODEEXT_C | c |DEBUG[1]: -> | CODEEXT_N | c | CODEEXT_S | c |DEBUG[1]: -> | C_API | yes | DEBUG | 1 |DEBUG[1]: -> | DEPENDENCY | no | DOCID | C |DEBUG[1]: -> | ENUM_KEYWORDS | <> | ERASE_ALL | no |DEBUG[1]: -> | FILTER | yes | FORCE | no |DEBUG[1]: -> | FRAME_CLEANUP | no | FRAME_GET_ALL | no |DEBUG[1]: -> | FRAME_INIT_STACK | no | FUNCEXPR | LcConfigLog |DEBUG[1]: -> | FUNC_KEYWORDS | <> | HAS_CLASS | no |DEBUG[1]: -> | HAS_DEFAULT_ARG | no | HAS_REF_POINTER | no |DEBUG[1]: -> | HAS_TYPE_FIRST | yes | JUMP_ON_ERROR | no |DEBUG[1]: -> | KEYWORDS | <> | LIBDIR | NHI1_HOME/theConfig/c |DEBUG[1]: -> | LIB_BASE_DIR | NHI1_HOME/theConfig | LONG | lc |DEBUG[1]: -> | LngId | c | META_FILE_EXTENSION | <> |DEBUG[1]: -> | META_HIDE_BEGIN | #ifndef PARSE_C_HEADER_TO_META | META_HIDE_END | #endif |DEBUG[1]: -> | ONFILTER | 1 | ONFILTER2 | 1 |DEBUG[1]: -> | ONPROFILE | false | ONVERBOSE | 1 |DEBUG[1]: -> | OVERLOAD | no | OVERLOAD_CALL | yes |DEBUG[1]: -> | OVERLOAD_CLASS | yes | OVERLOAD_NAME | yes |DEBUG[1]: -> | PRINT | 1 | PRINT2 | 1 |DEBUG[1]: -> | PROFILE_KEY | exclusiveRuntime | PROFILE_PAT | * |DEBUG[1]: -> | RCNs | @RLcNs | SHOW_FILTER | no |DEBUG[1]: -> | SHOW_FILTER_DETAIL | no | SILENT | 0 |DEBUG[1]: -> | STDOUT | 0 | STYLE | C |DEBUG[1]: -> | TOPLEVEL | NHI1_HOME/theCompiler/src/c_Overload.tcl | USE_CALLBACK | no |DEBUG[1]: -> | USE_FINAL_NAME | false | USE_LONG_NAME | no |DEBUG[1]: -> | USE_NS | no | VARARG_IS_ARRAY | no |DEBUG[1]: -> | VERBOSE | 1 | WARNING_AS_ERROR | no |DEBUG[1]: -> | WRITE | no | lng_nspkg | c_lcconfig |DEBUG[1]: -> INIT = <array|P|*> |DEBUG[1]: -> | Api | Overload | LANG | C |DEBUG[1]: -> | Ns | Lc | Prefix | c_Overload |DEBUG[1]: -> | argv | -i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta | example | no |DEBUG[1]: -> | lang | c | langid | c |DEBUG[1]: -> | ns | lc | overwrite | no pEVAL -> +++000 -> try native pEVAL -> +++333 -> use imeta -> imeta<NHI1_HOME/theConfig/c/gen/nat_lcconfig.meta> pEVAL -> +++333 -> use cache -> cache<NHI1_BUILD/x86_64-suse-linux-gnu/debug2/theConfig/c/gen/nat_lcconfig.meta.compile> | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<FUNC_S> , | DEBUG[1]: tcl::mathfunc::checkIgnore -> ignore<HIDE> , | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> ignore<INTERNAL> , p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigLog> p_funcEND -> statistics -> p_funcDEF_all<139> , p_funcDEF_use<1> , p_funcDEF_skip<138> , p_funcDEF_internal<0> , p_funcDEF_hide<0> p_funcEND -> skip '138' from '139' functions -> p_funcDEF_use<LcConfigLog> | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<FUNC_S> , pEVAL -> funcDEF RESULT : LcConfigLog ========================================= pEVAL -> ty<om_> , type0M<ME_CCN_LcConfigC> , var0<cfg> , pEVAL -> retM<void> , retC<void> , retOM<void> , pEVAL -> class<LcConfigC> , classM<ME_CCN_LcConfigC> , classC<LcConfigC> , pEVAL -> prefix<LcConfig> , prefixM<ME_CCN_LcConfigC> , prefixC<LcConfigC> , pEVAL -> argv<{ME_CCN_LcConfigC cfg} {ME_CCN_MkObjectC fmtobj} {ME_NI4_MK_DBG debug} {ME_PSN_MK_STRN callfunc} {ME_NI4_MK_I32 lvl}> , RETURN_MAPPING<> pEVAL -> =================================================================== ::cache::cache_open -> CUM -> chORfn<gen/config_overload> , ext<h> , args<package_overload_lib> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/gen/config_overload_lc.h> | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<INSTANCE> , | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<STATIC> , | DEBUG[1]: lib_DX__getDocParameterApi -> >>> START: , __NAME__<LcConfigLog> | DEBUG[1]: getDocR -> >>> START: doc(R) , __NAME__<LcConfigLog> , cls<LcConfigC> , pfx<LcConfig> | DEBUG[1]: lib_DX__getDocParameterApi -> LIST | DEBUG[1]: -> | __NAME__ : LcConfigLog | DEBUG[1]: -> | isDocI : 0 | DEBUG[1]: -> | dR : Misc | DEBUG[1]: -> | dRA : LcConfigC-Misc | DEBUG[1]: -> | dI : _ignore_ | DEBUG[1]: -> | dIA : LcConfigC-Misc | DEBUG[1]: -> | clsR : LcConfigC | DEBUG[1]: -> | dDA : LcConfigC_Misc_C_API writeARY(LcConfigC,LcConfigC-Misc,om_) = |DEBUG[1]: c_Overload__funcLST_2_overloadARY -> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~ , |DEBUG[1]: -> +++ START +++ , __NAME__<LcConfigLog> | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<OVERLOAD_DEFAULT> , #define LcConfigLog_NULL(...) LcConfigLog_RT(MK_RT_CALL_NULL __VA_ARGS__) #define LcConfigLog(...) LcConfigLog_RT(MK_RT_CALL __VA_ARGS__) |DEBUG[1]: -> i<5> , last<5> , xcall<cfg fmtobj de~ , xarg<cfg fmtobj debug callfunc lvl> |DEBUG[1]: c_Overload__funcLST_2_overloadARY -> skip , i<5> , last<5> , xcall<cfg fmtobj debug callfunc lvl> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_I32 lvl> , getter<getterS> |DEBUG[1]: -> i<4> , last<5> , xcall<cfg fmtobj de~ , xarg<cfg fmtobj debug callfunc 0> #define LcConfigLog_4(cfg,fmtobj,debug,callfunc) LcConfigLog(cfg,fmtobj,debug,callfunc,0) | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_PSN_MK_STRN callfunc> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_I32 lvl> , getter<getterS> |DEBUG[1]: -> i<3> , last<4> , xcall<cfg fmtobj de~ , xarg<cfg fmtobj debug __func__ 0> #define LcConfigLog_3(cfg,fmtobj,debug) LcConfigLog(cfg,fmtobj,debug,__func__,0) | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_DBG debug> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_PSN_MK_STRN callfunc> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_I32 lvl> , getter<getterS> |DEBUG[1]: -> i<2> , last<3> , xcall<cfg fmtobj> , xarg<cfg fmtobj 0 __func__ 0> #define LcConfigLog_2(cfg,fmtobj) LcConfigLog(cfg,fmtobj,0,__func__,0) | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_CCN_MkObjectC fmtobj> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_DBG debug> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_PSN_MK_STRN callfunc> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_I32 lvl> , getter<getterS> |DEBUG[1]: -> i<1> , last<2> , xcall<cfg> , xarg<cfg NULL 0 __func__ 0> #define LcConfigLog_1(cfg) LcConfigLog(cfg,NULL,0,__func__,0) | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_CCN_MkObjectC fmtobj> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_DBG debug> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_PSN_MK_STRN callfunc> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_I32 lvl> , getter<getterS> |DEBUG[1]: -> i<0> , last<1> , xcall<cfg> , xarg<cfg NULL 0 __func__ 0> |DEBUG[1]: c_Overload__funcLST_2_overloadARY -> skip , i<0> , last<1> , xcall<cfg> | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<OVERLOAD_ERROR> , lib_ME__build_CLASS_index -> print CLASS database -> CLASS<array|P|*> -> CLASS = <array|P|*> -> | LcConfig | empty -> | LcConfigC | LcConfigC-Misc -> | LcSettingC | empty lib_ME__write_funcARY -> Xclass<LcConfigC> lib_ME__doc_start -> DEBUG[#1] -> Xclass<LcConfigC> , doc(DA)<LcConfigC_Misc_C_API> , CONFIG(DOCID)<C> , PN<LcConfigC_Misc_C_API> lib_ME__doc_start -> DEBUG[#1] -> doc<array|P|*> -> doc = <array|P|*> -> | DA | LcConfigC_Misc_C_API -> | I | _ignore_ -> | IA | LcConfigC-Misc -> | N | LcConfigC - LcConfigC_Misc_C_API -> | NA | LcConfigC_C_API -> | R | Misc -> | RA | LcConfigC-Misc -> | clsR | LcConfigC -> | isIdx | 0 -> | isN | 0 pInclude -> id<LcConfigC> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/gen/config_overload_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> /// @addtogroup LcConfigC_Misc_C_API /// @{ /// @name LcConfigC - LcConfigC_Misc_C_API - overload /// @{ // doc-key: LcConfigC,LcConfigC-Misc,om_ |DEBUG[1]: c_Overload__funcLST_2_overloadARY -> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~ , |DEBUG[1]: -> +++ START +++ , __NAME__<LcConfigLog> | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<OVERLOAD_DEFAULT> , #define LcConfigLog_NULL(...) LcConfigLog_RT(MK_RT_CALL_NULL __VA_ARGS__) #define LcConfigLog(...) LcConfigLog_RT(MK_RT_CALL __VA_ARGS__) |DEBUG[1]: -> i<5> , last<5> , xcall<cfg fmtobj de~ , xarg<cfg fmtobj debug callfunc lvl> |DEBUG[1]: c_Overload__funcLST_2_overloadARY -> skip , i<5> , last<5> , xcall<cfg fmtobj debug callfunc lvl> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_I32 lvl> , getter<getterS> |DEBUG[1]: -> i<4> , last<5> , xcall<cfg fmtobj de~ , xarg<cfg fmtobj debug callfunc 0> #define LcConfigLog_4(cfg,fmtobj,debug,callfunc) LcConfigLog(cfg,fmtobj,debug,callfunc,0) | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_PSN_MK_STRN callfunc> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_I32 lvl> , getter<getterS> |DEBUG[1]: -> i<3> , last<4> , xcall<cfg fmtobj de~ , xarg<cfg fmtobj debug __func__ 0> #define LcConfigLog_3(cfg,fmtobj,debug) LcConfigLog(cfg,fmtobj,debug,__func__,0) | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_DBG debug> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_PSN_MK_STRN callfunc> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_I32 lvl> , getter<getterS> |DEBUG[1]: -> i<2> , last<3> , xcall<cfg fmtobj> , xarg<cfg fmtobj 0 __func__ 0> #define LcConfigLog_2(cfg,fmtobj) LcConfigLog(cfg,fmtobj,0,__func__,0) | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_CCN_MkObjectC fmtobj> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_DBG debug> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_PSN_MK_STRN callfunc> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_I32 lvl> , getter<getterS> |DEBUG[1]: -> i<1> , last<2> , xcall<cfg> , xarg<cfg NULL 0 __func__ 0> #define LcConfigLog_1(cfg) LcConfigLog(cfg,NULL,0,__func__,0) | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_CCN_MkObjectC fmtobj> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_DBG debug> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_PSN_MK_STRN callfunc> , getter<getterS> | DEBUG[1]: lib_MqS__default -> >>> START: , a<ME_NI4_MK_I32 lvl> , getter<getterS> |DEBUG[1]: -> i<0> , last<1> , xcall<cfg> , xarg<cfg NULL 0 __func__ 0> |DEBUG[1]: c_Overload__funcLST_2_overloadARY -> skip , i<0> , last<1> , xcall<cfg> | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<OVERLOAD_ERROR> , /// @} /// @} ::cache::cache_open -> CUM -> chORfn<NHI1_HOME/theConfig/c/gen/overload.index> , ext<-> , args<-create> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/gen/overload.index>
The c_MqS exists for every programming language, where the "c" is replaced by the respective language abbreviation (e.g. tcl_MqS.tcl) and is used to declare the api.
A declaration can be an object (e.g. enum) or a function.
The X_MqS really shows its importance with the NONE-"C" language connection, where, for example, the interpreter interface is defined using X_MqS or a translation layer for data types (C#).
Usually the X_MqS does not write any code but only code references or code declarations, the code itself is written in X_MqC.
call: 'c_MqS.tcl' '-lc' '-v' pInit -> PINIT[#0] -> +++ use : lang<c> : api<MqS> : top<c_MqS.tcl> -> PINIT[#0] -> argv<-lc -v> -> PINIT[>0] -> INIT(lang)<c> : INIT(Api)<MqS> : INIT(argv)<-i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[>0] -> CONFIG(FUNCEXPR)<§undef§> : CONFIG(CLASSEXPR)<§undef§> -> PINIT[=1] -> CONFIG(PRINT)<0> : CONFIG(ONFILTER)<0> : CONFIG(ONFILTER2)<0> : CONFIG(ONVERBOSE)<1> -> PINIT[=1] -> CONFIG(LIB_BASE_DIR)<NHI1_HOME/theConfig> : CONFIG(LIBDIR)<NHI1_HOME/theConfig/c> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theCompiler/src/lib_C.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theKernel/c/compiler.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theConfig/c/compiler.tcl> -> PINIT[#1] -> call init : top<c_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_DX.tcl> -> PINIT[#1] : LIST -> | info : +++ use -> | IGNORE(#ignore) : <> -> | IGNORE(#only) : <> -> | IGNORE(INTERNAL) : 0 -> PINIT[#1] -> IGNORE(HIDE)<0> : ::HIDE<> : ::KEEP<> -> PINIT[#1] -> imeta<NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[#1] -> getterL<alias:pGet_M2L> : getterS<alias:pGet_M2S> : getterC<alias:pGet_M2S> pEVAL -> +++000 -> try native pEVAL -> +++333 -> use imeta -> imeta<NHI1_HOME/theConfig/c/gen/nat_lcconfig.meta> pEVAL -> +++333 -> use cache -> cache<NHI1_BUILD/x86_64-suse-linux-gnu/debug2/theConfig/c/gen/nat_lcconfig.meta.compile> p_funcEND -> statistics -> p_funcDEF_all<126> , p_funcDEF_use<126> , p_funcDEF_skip<0> , p_funcDEF_internal<13> , p_funcDEF_hide<0> p_funcEND -> use all '126' functions ::cache::cache_open -> CUM -> chORfn<LcEnum> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> pInclude -> id<LcErrorTypeE> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> pInclude -> id<LcConfigTypeE> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> pInclude -> id<LcConfigOptionsEF> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> pInclude -> id<LcErrorE> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> pInclude -> id<LcConfigFormatE> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/LcEnum_lc.h>
The following image shows the "declaration" of the manged-object callback for enum LcConfigFormatE :
call: 'c_MqS.tcl' '-lc' '-d' '-f' 'LcConfigFormatE' pInit -> PINIT[#0] -> +++ use : lang<c> : api<MqS> : top<c_MqS.tcl> -> PINIT[#0] -> argv<-lc -d -f LcConfigFormatE> -> PINIT[>0] -> INIT(lang)<c> : INIT(Api)<MqS> : INIT(argv)<-i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[>0] -> CONFIG(FUNCEXPR)<LcConfigFormatE> : CONFIG(CLASSEXPR)<§undef§> -> PINIT[=1] -> CONFIG(PRINT)<1> : CONFIG(ONFILTER)<1> : CONFIG(ONFILTER2)<1> : CONFIG(ONVERBOSE)<1> -> PINIT[=1] -> CONFIG(LIB_BASE_DIR)<NHI1_HOME/theConfig> : CONFIG(LIBDIR)<NHI1_HOME/theConfig/c> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theCompiler/src/lib_C.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theKernel/c/compiler.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theConfig/c/compiler.tcl> -> PINIT[#1] -> call init : top<c_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_DX.tcl> -> PINIT[#1] : LIST -> | info : +++ use -> | IGNORE(#ignore) : <> -> | IGNORE(#only) : <> -> | IGNORE(INTERNAL) : 0 -> PINIT[#1] -> IGNORE(HIDE)<0> : ::HIDE<> : ::KEEP<> -> PINIT[#1] -> imeta<NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[#1] -> getterL<alias:pGet_M2L> : getterS<alias:pGet_M2S> : getterC<alias:pGet_M2S> |DEBUG[1]: pEVAL -> >>> START: , CONFIG<array|P|*> , INIT<array|P|*> |DEBUG[1]: -> CONFIG = <array|P|*> |DEBUG[1]: -> | ALLOW_argv | no | ALWAYS_DEFAULT | no |DEBUG[1]: -> | ARRAY_IS_VARARG | no | BROKEN_C_NAME | no |DEBUG[1]: -> | CLASSEXPR | §undef§ | CMD | c_MqS.tcl |DEBUG[1]: -> | CMT | // | CMT_DX | /// |DEBUG[1]: -> | CNs | LcNs | CODEEXT_C | c |DEBUG[1]: -> | CODEEXT_N | c | CODEEXT_S | c |DEBUG[1]: -> | C_API | yes | DEBUG | 1 |DEBUG[1]: -> | DEPENDENCY | no | DOCID | C |DEBUG[1]: -> | ENUM_KEYWORDS | <> | ERASE_ALL | no |DEBUG[1]: -> | FILTER | yes | FORCE | no |DEBUG[1]: -> | FRAME_CLEANUP | no | FRAME_GET_ALL | no |DEBUG[1]: -> | FRAME_INIT_STACK | no | FUNCEXPR | LcConfigFormatE |DEBUG[1]: -> | FUNC_KEYWORDS | <> | HAS_CLASS | no |DEBUG[1]: -> | HAS_DEFAULT_ARG | no | HAS_REF_POINTER | no |DEBUG[1]: -> | HAS_TYPE_FIRST | yes | JUMP_ON_ERROR | no |DEBUG[1]: -> | KEYWORDS | <> | LIBDIR | NHI1_HOME/theConfig/c |DEBUG[1]: -> | LIB_BASE_DIR | NHI1_HOME/theConfig | LONG | lc |DEBUG[1]: -> | LngId | c | META_FILE_EXTENSION | <> |DEBUG[1]: -> | META_HIDE_BEGIN | #ifndef PARSE_C_HEADER_TO_META | META_HIDE_END | #endif |DEBUG[1]: -> | ONFILTER | 1 | ONFILTER2 | 1 |DEBUG[1]: -> | ONPROFILE | false | ONVERBOSE | 1 |DEBUG[1]: -> | OVERLOAD | no | OVERLOAD_CALL | yes |DEBUG[1]: -> | OVERLOAD_CLASS | yes | OVERLOAD_NAME | yes |DEBUG[1]: -> | PRINT | 1 | PRINT2 | 1 |DEBUG[1]: -> | PROFILE_KEY | exclusiveRuntime | PROFILE_PAT | * |DEBUG[1]: -> | RCNs | @RLcNs | SHOW_FILTER | no |DEBUG[1]: -> | SHOW_FILTER_DETAIL | no | SILENT | 0 |DEBUG[1]: -> | STDOUT | 0 | STYLE | C |DEBUG[1]: -> | TOPLEVEL | NHI1_HOME/theCompiler/src/c_MqS.tcl | USE_CALLBACK | no |DEBUG[1]: -> | USE_FINAL_NAME | false | USE_LONG_NAME | no |DEBUG[1]: -> | USE_NS | no | VARARG_IS_ARRAY | no |DEBUG[1]: -> | VERBOSE | 1 | WARNING_AS_ERROR | no |DEBUG[1]: -> | WRITE | no | lng_nspkg | c_lcconfig |DEBUG[1]: -> INIT = <array|P|*> |DEBUG[1]: -> | Api | MqS | LANG | C |DEBUG[1]: -> | Ns | Lc | Prefix | c_MqS |DEBUG[1]: -> | argv | -i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta | example | no |DEBUG[1]: -> | lang | c | langid | c |DEBUG[1]: -> | ns | lc | overwrite | no pEVAL -> +++000 -> try native pEVAL -> +++333 -> use imeta -> imeta<NHI1_HOME/theConfig/c/gen/nat_lcconfig.meta> pEVAL -> +++333 -> use cache -> cache<NHI1_BUILD/x86_64-suse-linux-gnu/debug2/theConfig/c/gen/nat_lcconfig.meta.compile> | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<ENUM_S> , p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigFormatE> p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigOptionsEF> p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigTypeE> p_filter -> DEBUG[#1] -> use , __NAME__<LcErrorE> p_filter -> DEBUG[#1] -> use , __NAME__<LcErrorTypeE> | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<FUNC_S> , | DEBUG[1]: tcl::mathfunc::checkIgnore -> ignore<HIDE> , | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<INTERNAL> , p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigFormatE_FromInt> p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigFormatE_ToInt> p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigFormatE_ToString> p_funcEND -> statistics -> p_funcDEF_all<126> , p_funcDEF_use<3> , p_funcDEF_skip<123> , p_funcDEF_internal<13> , p_funcDEF_hide<0> p_funcEND -> skip '123' from '126' functions -> p_funcDEF_use<LcConfigFormatE_FromInt LcConfigFormatE_ToInt LcConfigFormatE_ToString> | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<FUNC_S> , pEVAL -> funcDEF RESULT : LcConfigFormatE_FromInt ========================================= pEVAL -> ty<sco> , type0M<ME_NI4_MK_I32> , var0<value> , pEVAL -> retM<ME_ENE_MkErrorE> , retC<MkErrorE> , retOM<ME_ENE_MkErrorE> , pEVAL -> class<LcConfig> , classM<LcConfig> , classC<LcConfig> , pEVAL -> prefix<EnumFunc> , prefixM<LcConfig> , prefixC<EnumFuncC> , pEVAL -> argv<{ME_NI4_MK_I32 value} {ME_ENE_LcConfigFormatE value_out}> , RETURN_MAPPING<> pEVAL -> =================================================================== pEVAL -> funcDEF RESULT : LcConfigFormatE_ToInt ========================================= pEVAL -> ty<sm_> , type0M<ME_ENE_LcConfigFormatE~ , var0<value> , pEVAL -> retM<ME_NI4_MK_I32> , retC<MK_I32> , retOM<ME_NI4_MK_I32> , pEVAL -> class<LcConfig> , classM<LcConfig> , classC<LcConfig> , pEVAL -> prefix<EnumFunc> , prefixM<LcConfig> , prefixC<EnumFuncC> , pEVAL -> argv<{ME_ENE_LcConfigFormatE value}> , RETURN_MAPPING<> pEVAL -> =================================================================== pEVAL -> funcDEF RESULT : LcConfigFormatE_ToString ========================================= pEVAL -> ty<sm_> , type0M<ME_ENE_LcConfigFormatE~ , var0<value> , pEVAL -> retM<ME_PSN_MK_STRN> , retC<MK_STRN> , retOM<ME_PSN_MK_STRN> , pEVAL -> class<LcConfig> , classM<LcConfig> , classC<LcConfig> , pEVAL -> prefix<EnumFunc> , prefixM<LcConfig> , prefixC<EnumFuncC> , pEVAL -> argv<{ME_ENE_LcConfigFormatE value}> , RETURN_MAPPING<> pEVAL -> =================================================================== |DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<ENUM_S> , ::cache::cache_open -> CUM -> chORfn<LcEnum> , ext<h> , args<> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> pInclude -> id<LcErrorTypeE> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ErrorTypeE} as string … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc,return-type-default-no) LC_EXTERN MK_STRN MK_DECL LcErrorTypeE_ToString ( enum LcErrorTypeE value ) MK_ATTR_STATIC ; /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ErrorTypeE} as integer … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc,return-type-default-no) MK_ATTR_STATIC mk_inline MK_I32 LcErrorTypeE_ToInt ( enum LcErrorTypeE value ) { return (MK_I32) value; } /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ErrorTypeE} from integer … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc) LC_EXTERN enum MkErrorE LcErrorTypeE_FromInt ( MK_I32 const value, enum LcErrorTypeE * value_out ) MK_ATTR_STATIC ; pInclude -> id<LcConfigTypeE> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ConfigTypeE} as string … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc,return-type-default-no) LC_EXTERN MK_STRN MK_DECL LcConfigTypeE_ToString ( enum LcConfigTypeE value ) MK_ATTR_STATIC ; /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ConfigTypeE} as integer … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc,return-type-default-no) MK_ATTR_STATIC mk_inline MK_I32 LcConfigTypeE_ToInt ( enum LcConfigTypeE value ) { return (MK_I32) value; } /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ConfigTypeE} from integer … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc) LC_EXTERN enum MkErrorE LcConfigTypeE_FromInt ( MK_I32 const value, enum LcConfigTypeE * value_out ) MK_ATTR_STATIC ; pInclude -> id<LcConfigOptionsEF> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ConfigOptionsEF} as string … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc,return-type-default-no) LC_EXTERN MK_STRN MK_DECL LcConfigOptionsEF_ToString ( enum LcConfigOptionsEF value ) MK_ATTR_STATIC ; /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ConfigOptionsEF} as integer … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc,return-type-default-no) MK_ATTR_STATIC mk_inline MK_I32 LcConfigOptionsEF_ToInt ( enum LcConfigOptionsEF value ) { return (MK_I32) value; } /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ConfigOptionsEF} from integer … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc) LC_EXTERN enum MkErrorE LcConfigOptionsEF_FromInt ( MK_I32 const value, enum LcConfigOptionsEF * value_out ) MK_ATTR_STATIC ; pInclude -> id<LcErrorE> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ErrorE} as string … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc,return-type-default-no) LC_EXTERN MK_STRN MK_DECL LcErrorE_ToString ( enum LcErrorE value ) MK_ATTR_STATIC ; /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ErrorE} as integer … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc,return-type-default-no) MK_ATTR_STATIC mk_inline MK_I32 LcErrorE_ToInt ( enum LcErrorE value ) { return (MK_I32) value; } /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ErrorE} from integer … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc) LC_EXTERN enum MkErrorE LcErrorE_FromInt ( MK_I32 const value, enum LcErrorE * value_out ) MK_ATTR_STATIC ; pInclude -> id<LcConfigFormatE> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LcEnum_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ConfigFormatE} as string … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc,return-type-default-no) LC_EXTERN MK_STRN MK_DECL LcConfigFormatE_ToString ( enum LcConfigFormatE value ) MK_ATTR_STATIC ; /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ConfigFormatE} as integer … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc,return-type-default-no) MK_ATTR_STATIC mk_inline MK_I32 LcConfigFormatE_ToInt ( enum LcConfigFormatE value ) { return (MK_I32) value; } /// @ingroup LcConfig_Enum_C_API /// @brief return the @RLcNs{ConfigFormatE} from integer … __parser__(doc-group=Enum,doc-index=_ignore_,class=LcConfig,no-rpc,prefix=EnumFunc) LC_EXTERN enum MkErrorE LcConfigFormatE_FromInt ( MK_I32 const value, enum LcConfigFormatE * value_out ) MK_ATTR_STATIC ;
The c_MqC exists for every programming language, whereby the "c"
is replaced by the respective language abbreviation (e.g. tcl_MqC.tcl
).
The c_MqC is used to write the wrapper source code.
The wrapper-source-code ultimately has the task of integrating the managed-object-api-function into the target-language so that the namespace of the managed-object is valid for input and the namespace for the target-language is valid for output.
The integration includes the data type or the type-cast as well as the error handling.
Usually the X_MqC write wrapper-source-code :
call: 'c_MqC.tcl' '-lc' '-v' pInit -> PINIT[#0] -> +++ use : lang<c> : api<MqC> : top<c_MqC.tcl> -> PINIT[#0] -> argv<-lc -v> -> PINIT[>0] -> INIT(lang)<c> : INIT(Api)<MqC> : INIT(argv)<-i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[>0] -> CONFIG(FUNCEXPR)<§undef§> : CONFIG(CLASSEXPR)<§undef§> -> PINIT[=1] -> CONFIG(PRINT)<0> : CONFIG(ONFILTER)<0> : CONFIG(ONFILTER2)<0> : CONFIG(ONVERBOSE)<1> -> PINIT[=1] -> CONFIG(LIB_BASE_DIR)<NHI1_HOME/theConfig> : CONFIG(LIBDIR)<NHI1_HOME/theConfig/c> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theCompiler/src/lib_C.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theKernel/c/compiler.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theConfig/c/compiler.tcl> -> PINIT[#1] -> call init : top<c_MqC.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqC.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqC_type_C.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/c_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_DX.tcl> -> PINIT[#1] : LIST -> | info : +++ use -> | IGNORE(#ignore) : <> -> | IGNORE(#only) : <> -> | IGNORE(INTERNAL) : 0 -> PINIT[#1] -> IGNORE(HIDE)<0> : ::HIDE<> : ::KEEP<> -> PINIT[#1] -> imeta<NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[#1] -> getterL<alias:pGet_M2L> : getterS<alias:pGet_M2S> : getterC<alias:pGet_M2S> pEVAL -> +++000 -> try native pEVAL -> +++333 -> use imeta -> imeta<NHI1_HOME/theConfig/c/gen/nat_lcconfig.meta> pEVAL -> +++333 -> use cache -> cache<NHI1_BUILD/x86_64-suse-linux-gnu/debug2/theConfig/c/gen/nat_lcconfig.meta.compile> p_funcEND -> statistics -> p_funcDEF_all<126> , p_funcDEF_use<126> , p_funcDEF_skip<0> , p_funcDEF_internal<13> , p_funcDEF_hide<0> p_funcEND -> use all '126' functions ::cache::cache_open -> CUM -> chORfn<LcConfig> , ext<c> , args<LibNsPkg_lib> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> pInclude -> id<Enum-ToString> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> pInclude -> id<Enum-FromInt> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc0> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> ::cache::cache_open -> CUM -> chORfn<gen/config_inline> , ext<h> , args<package_inline_lib> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.h> ::cache::cache_open -> CUM -> chORfn<tempfile> , ext<1> , args<> lib_ME__build_CLASS_index -> print CLASS database -> CLASS<array|P|*> -> CLASS = <array|P|*> -> | LcConfig | LcConfig-Enum -> | LcConfigC | LcConfigC-Class-Define LcConfigC-Class-Export LcConfigC-Class-Introspection LcConfigC-Class-Misc LcConfigC-Error LcConfigC-Get LcConfigC-Lookup LcConfigC-Misc LcConfigC-Set LcConfigC-TOR -> | LcSettingC | LcSettingC-Class-Define LcSettingC-Class-Export LcSettingC-Class-Introspection LcSettingC-Class-Misc LcSettingC-Get LcSettingC-Is LcSettingC-Lookup LcSettingC-Misc LcSettingC-Set LcSettingC-TOR lib_ME__write_funcARY -> Xclass<LcConfig> pInclude -> id<LcConfig> , cfn<rc4> , fn<tempfile-1> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc4> , ext<-> , args<{} -create> cache_open -> open from cache -> fn<tempfile-1> lib_ME__write_funcARY -> Xclass<LcConfigC> pInclude -> id<LcConfigC> , cfn<rc4> , fn<tempfile-1> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc4> , ext<-> , args<{} -create> cache_open -> open from cache -> fn<tempfile-1> lib_ME__write_funcARY -> Xclass<LcSettingC> pInclude -> id<LcSettingC> , cfn<rc4> , fn<tempfile-1> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc4> , ext<-> , args<{} -create> cache_open -> open from cache -> fn<tempfile-1> pInclude -> id<inline> , cfn<rc2> , fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc2> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.h> ::cache::cache_open -> CUM -> chORfn<gen/config_inline> , ext<c> , args<package_inline_lib §header§ config_inline_lc.h> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.c> ::cache::cache_open -> CUM -> chORfn<tempfile> , ext<1> , args<> lib_ME__build_CLASS_index -> print CLASS database -> CLASS<array|P|*> -> CLASS = <array|P|*> -> | LcConfig | LcConfig-Enum -> | LcConfigC | LcConfigC-Class-Define LcConfigC-Class-Export LcConfigC-Class-Introspection LcConfigC-Class-Misc LcConfigC-Error LcConfigC-Get LcConfigC-Lookup LcConfigC-Misc LcConfigC-Set LcConfigC-TOR -> | LcSettingC | LcSettingC-Class-Define LcSettingC-Class-Export LcSettingC-Class-Introspection LcSettingC-Class-Misc LcSettingC-Get LcSettingC-Is LcSettingC-Lookup LcSettingC-Misc LcSettingC-Set LcSettingC-TOR lib_ME__write_funcARY -> Xclass<LcConfig> pInclude -> id<LcConfig> , cfn<rc8> , fn<tempfile-1> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc8> , ext<-> , args<{} -create> cache_open -> open from cache -> fn<tempfile-1> lib_ME__write_funcARY -> Xclass<LcConfigC> pInclude -> id<LcConfigC> , cfn<rc8> , fn<tempfile-1> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc8> , ext<-> , args<{} -create> cache_open -> open from cache -> fn<tempfile-1> lib_ME__write_funcARY -> Xclass<LcSettingC> pInclude -> id<LcSettingC> , cfn<rc8> , fn<tempfile-1> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc8> , ext<-> , args<{} -create> cache_open -> open from cache -> fn<tempfile-1> pInclude -> id<inline> , cfn<rc6> , fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.c> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> ::cache::cache_open -> CUM -> chORfn<rc6> , ext<-> , args<{}> cache_open -> open from cache -> fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.c> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/private_lc.h> tmpl_make_from_file -> keep file -> fn<NHI1_HOME/theConfig/c/private_lc.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.h> cache_close -> keep file -> fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.c>
The following image shows the C-wrapper-source-code of the manged-object LcConfigLookupInt64 :
call: 'c_MqC.tcl' '-lc' '-d' '-f' 'LcConfigLookupInt64' pInit -> PINIT[#0] -> +++ use : lang<c> : api<MqC> : top<c_MqC.tcl> -> PINIT[#0] -> argv<-lc -d -f LcConfigLookupInt64> -> PINIT[>0] -> INIT(lang)<c> : INIT(Api)<MqC> : INIT(argv)<-i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[>0] -> CONFIG(FUNCEXPR)<LcConfigLookupInt64> : CONFIG(CLASSEXPR)<§undef§> -> PINIT[=1] -> CONFIG(PRINT)<1> : CONFIG(ONFILTER)<1> : CONFIG(ONFILTER2)<1> : CONFIG(ONVERBOSE)<1> -> PINIT[=1] -> CONFIG(LIB_BASE_DIR)<NHI1_HOME/theConfig> : CONFIG(LIBDIR)<NHI1_HOME/theConfig/c> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theCompiler/src/lib_C.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theKernel/c/compiler.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theConfig/c/compiler.tcl> -> PINIT[#1] -> call init : top<c_MqC.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqC.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqC_type_C.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/c_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_DX.tcl> -> PINIT[#1] : LIST -> | info : +++ use -> | IGNORE(#ignore) : <> -> | IGNORE(#only) : <> -> | IGNORE(INTERNAL) : 0 -> PINIT[#1] -> IGNORE(HIDE)<0> : ::HIDE<> : ::KEEP<> -> PINIT[#1] -> imeta<NHI1_HOME/theConfig/c/gen/c_lcconfig.meta> -> PINIT[#1] -> getterL<alias:pGet_M2L> : getterS<alias:pGet_M2S> : getterC<alias:pGet_M2S> |DEBUG[1]: pEVAL -> >>> START: , CONFIG<array|P|*> , INIT<array|P|*> |DEBUG[1]: -> CONFIG = <array|P|*> |DEBUG[1]: -> | ALLOW_argv | no | ALWAYS_DEFAULT | no |DEBUG[1]: -> | ARRAY_IS_VARARG | no | BROKEN_C_NAME | no |DEBUG[1]: -> | CLASSEXPR | §undef§ | CMD | c_MqC.tcl |DEBUG[1]: -> | CMT | // | CMT_DX | /// |DEBUG[1]: -> | CNs | LcNs | CODEEXT_C | c |DEBUG[1]: -> | CODEEXT_N | c | CODEEXT_S | c |DEBUG[1]: -> | C_API | yes | DEBUG | 1 |DEBUG[1]: -> | DEPENDENCY | no | DOCID | C |DEBUG[1]: -> | ENUM_KEYWORDS | <> | ERASE_ALL | no |DEBUG[1]: -> | FILTER | yes | FORCE | no |DEBUG[1]: -> | FRAME_CLEANUP | no | FRAME_GET_ALL | no |DEBUG[1]: -> | FRAME_INIT_STACK | no | FUNCEXPR | LcConfigLookupInt64 |DEBUG[1]: -> | FUNC_KEYWORDS | <> | HAS_CLASS | no |DEBUG[1]: -> | HAS_DEFAULT_ARG | no | HAS_REF_POINTER | no |DEBUG[1]: -> | HAS_TYPE_FIRST | yes | JUMP_ON_ERROR | no |DEBUG[1]: -> | KEYWORDS | <> | LIBDIR | NHI1_HOME/theConfig/c |DEBUG[1]: -> | LIB_BASE_DIR | NHI1_HOME/theConfig | LONG | lc |DEBUG[1]: -> | LngId | c | META_FILE_EXTENSION | <> |DEBUG[1]: -> | META_HIDE_BEGIN | #ifndef PARSE_C_HEADER_TO_META | META_HIDE_END | #endif |DEBUG[1]: -> | ONFILTER | 1 | ONFILTER2 | 1 |DEBUG[1]: -> | ONPROFILE | false | ONVERBOSE | 1 |DEBUG[1]: -> | OVERLOAD | no | OVERLOAD_CALL | yes |DEBUG[1]: -> | OVERLOAD_CLASS | yes | OVERLOAD_NAME | yes |DEBUG[1]: -> | PRINT | 1 | PRINT2 | 1 |DEBUG[1]: -> | PROFILE_KEY | exclusiveRuntime | PROFILE_PAT | * |DEBUG[1]: -> | RCNs | @RLcNs | SHOW_FILTER | no |DEBUG[1]: -> | SHOW_FILTER_DETAIL | no | SILENT | 0 |DEBUG[1]: -> | STDOUT | 0 | STYLE | C |DEBUG[1]: -> | TOPLEVEL | NHI1_HOME/theCompiler/src/c_MqC.tcl | USE_CALLBACK | no |DEBUG[1]: -> | USE_FINAL_NAME | false | USE_LONG_NAME | no |DEBUG[1]: -> | USE_NS | no | VARARG_IS_ARRAY | no |DEBUG[1]: -> | VERBOSE | 1 | WARNING_AS_ERROR | no |DEBUG[1]: -> | WRITE | no | lng_nspkg | c_lcconfig |DEBUG[1]: -> INIT = <array|P|*> |DEBUG[1]: -> | Api | MqC | LANG | C |DEBUG[1]: -> | Ns | Lc | Prefix | c_MqC |DEBUG[1]: -> | argv | -i NHI1_HOME/theConfig/c/gen/c_lcconfig.meta | example | no |DEBUG[1]: -> | lang | c | langid | c |DEBUG[1]: -> | ns | lc | overwrite | no pEVAL -> +++000 -> try native pEVAL -> +++333 -> use imeta -> imeta<NHI1_HOME/theConfig/c/gen/nat_lcconfig.meta> pEVAL -> +++333 -> use cache -> cache<NHI1_BUILD/x86_64-suse-linux-gnu/debug2/theConfig/c/gen/nat_lcconfig.meta.compile> | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<ENUM_S> , p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigFormatE> p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigOptionsEF> p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigTypeE> p_filter -> DEBUG[#1] -> use , __NAME__<LcErrorE> p_filter -> DEBUG[#1] -> use , __NAME__<LcErrorTypeE> | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<FUNC_S> , | DEBUG[1]: tcl::mathfunc::checkIgnore -> ignore<HIDE> , | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<INTERNAL> , p_filter -> DEBUG[#1] -> use , __NAME__<LcConfigLookupInt64> p_funcEND -> statistics -> p_funcDEF_all<126> , p_funcDEF_use<1> , p_funcDEF_skip<125> , p_funcDEF_internal<13> , p_funcDEF_hide<0> p_funcEND -> skip '125' from '126' functions -> p_funcDEF_use<LcConfigLookupInt64> | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<FUNC_S> , pEVAL -> funcDEF RESULT : LcConfigLookupInt64 ========================================= pEVAL -> ty<omo> , type0M<ME_CCN_LcConfigC> , var0<config> , pEVAL -> retM<ME_ENE_MkErrorE> , retC<MkErrorE> , retOM<ME_ENE_MkErrorE> , pEVAL -> class<LcConfigC> , classM<ME_CCN_LcConfigC> , classC<LcConfigC> , pEVAL -> prefix<LcConfig> , prefixM<ME_CCN_LcConfigC> , prefixC<LcConfigC> , pEVAL -> argv<{ME_CCN_LcConfigC config} {ME_PSN_MK_STRN path} {ME_NI8_MK_I64 value_out}> , RETURN_MAPPING<> pEVAL -> =================================================================== |DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<ENUM_S> , ::cache::cache_open -> CUM -> chORfn<LcConfig> , ext<c> , args<LibNsPkg_lib> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> pInclude -> id<Enum-ToString> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> MK_ATTR_STATIC MK_STRN LcConfigFormatE_ToString ( const enum LcConfigFormatE type ) { switch (type) { case CONFIG_FORMAT_DEFAULT: return "DEFAULT" ; case CONFIG_FORMAT_HEX: return "HEX" ; } return "NOTHING"; } MK_ATTR_STATIC MK_STRN LcConfigOptionsEF_ToString ( const enum LcConfigOptionsEF type ) { if (type == CONFIG_OPTION_NONE) { return "NONE"; } else { static MkThreadLocal char buffer[175] = {0}; *buffer = '\0'; MK_STR tmp = buffer; if (mk_bit_compare(type,CONFIG_OPTION_AUTOCONVERT)) mk_append_fix_str(tmp,"AUTOCONVERT|") ; if (mk_bit_compare(type,CONFIG_OPTION_SEMICOLON_SEPARATORS)) mk_append_fix_str(tmp,"SEMICOLON_SEPARATORS|") ; if (mk_bit_compare(type,CONFIG_OPTION_COLON_ASSIGNMENT_FOR_GROUPS)) mk_append_fix_str(tmp,"COLON_ASSIGNMENT_FOR_GROUPS|") ; if (mk_bit_compare(type,CONFIG_OPTION_COLON_ASSIGNMENT_FOR_NON_GROUPS)) mk_append_fix_str(tmp,"COLON_ASSIGNMENT_FOR_NON_GROUPS|") ; if (mk_bit_compare(type,CONFIG_OPTION_OPEN_BRACE_ON_SEPARATE_LINE)) mk_append_fix_str(tmp,"OPEN_BRACE_ON_SEPARATE_LINE|") ; if (mk_bit_compare(type,CONFIG_OPTION_ALLOW_SCIENTIFIC_NOTATION)) mk_append_fix_str(tmp,"ALLOW_SCIENTIFIC_NOTATION|") ; if (mk_bit_compare(type,CONFIG_OPTION_FSYNC)) mk_append_fix_str(tmp,"FSYNC|") ; if (mk_bit_compare(type,CONFIG_OPTION_ALLOW_OVERRIDES)) mk_append_fix_str(tmp,"ALLOW_OVERRIDES|") ; if (*buffer != '\0') *(tmp-1) = '\0'; return buffer; } } MK_ATTR_STATIC MK_STRN LcConfigTypeE_ToString ( const enum LcConfigTypeE type ) { switch (type) { case CONFIG_TYPE_NONE: return "NONE" ; case CONFIG_TYPE_GROUP: return "GROUP" ; case CONFIG_TYPE_INT: return "INT" ; case CONFIG_TYPE_INT64: return "INT64" ; case CONFIG_TYPE_FLOAT: return "FLOAT" ; case CONFIG_TYPE_STRING: return "STRING" ; case CONFIG_TYPE_BOOL: return "BOOL" ; case CONFIG_TYPE_ARRAY: return "ARRAY" ; case CONFIG_TYPE_LIST: return "LIST" ; } return "NOTHING"; } MK_ATTR_STATIC MK_STRN LcErrorE_ToString ( const enum LcErrorE type ) { switch (type) { case CONFIG_FALSE: return "FALSE" ; case CONFIG_TRUE: return "TRUE" ; } return "NOTHING"; } MK_ATTR_STATIC MK_STRN LcErrorTypeE_ToString ( const enum LcErrorTypeE type ) { switch (type) { case CONFIG_ERRROR_NONE: return "NONE" ; case CONFIG_ERRROR_FILE_IO: return "FILE_IO" ; case CONFIG_ERRROR_PARSE: return "PARSE" ; } return "NOTHING"; } pInclude -> id<Enum-FromInt> , cfn<rc0> , fn<NHI1_HOME/theConfig/c/LibLcConfig_lc.c> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> MK_ATTR_STATIC enum MkErrorE LcConfigFormatE_FromInt ( const MK_I32 value, enum LcConfigFormatE * enumP ) { switch (value) { case CONFIG_FORMAT_DEFAULT : case CONFIG_FORMAT_HEX : *enumP = (enum LcConfigFormatE) value; return MK_OK; default: return MkThrowEnumInvalidValueError("LcConfigFormatE",value); } } MK_ATTR_STATIC enum MkErrorE LcConfigOptionsEF_FromInt ( const MK_I32 value, enum LcConfigOptionsEF * enumP ) { const static MK_I32 enumValues = ( CONFIG_OPTION_NONE | CONFIG_OPTION_AUTOCONVERT | CONFIG_OPTION_SEMICOLON_SEPARATORS | CONFIG_OPTION_COLON_ASSIGNMENT_FOR_GROUPS | CONFIG_OPTION_COLON_ASSIGNMENT_FOR_NON_GROUPS | CONFIG_OPTION_OPEN_BRACE_ON_SEPARATE_LINE | CONFIG_OPTION_ALLOW_SCIENTIFIC_NOTATION | CONFIG_OPTION_FSYNC | CONFIG_OPTION_ALLOW_OVERRIDES | 0 ); // this is a FAST but WEAK test because it assume a NON overlap bitfield if (mk_bit_compare(enumValues,value)) { *enumP = (enum LcConfigOptionsEF) value; return MK_OK; } else { return MkThrowEnumInvalidValueError("LcConfigOptionsEF",value); } } MK_ATTR_STATIC enum MkErrorE LcConfigTypeE_FromInt ( const MK_I32 value, enum LcConfigTypeE * enumP ) { switch (value) { case CONFIG_TYPE_NONE : case CONFIG_TYPE_GROUP : case CONFIG_TYPE_INT : case CONFIG_TYPE_INT64 : case CONFIG_TYPE_FLOAT : case CONFIG_TYPE_STRING : case CONFIG_TYPE_BOOL : case CONFIG_TYPE_ARRAY : case CONFIG_TYPE_LIST : *enumP = (enum LcConfigTypeE) value; return MK_OK; default: return MkThrowEnumInvalidValueError("LcConfigTypeE",value); } } MK_ATTR_STATIC enum MkErrorE LcErrorE_FromInt ( const MK_I32 value, enum LcErrorE * enumP ) { switch (value) { case CONFIG_FALSE : case CONFIG_TRUE : *enumP = (enum LcErrorE) value; return MK_OK; default: return MkThrowEnumInvalidValueError("LcErrorE",value); } } MK_ATTR_STATIC enum MkErrorE LcErrorTypeE_FromInt ( const MK_I32 value, enum LcErrorTypeE * enumP ) { switch (value) { case CONFIG_ERRROR_NONE : case CONFIG_ERRROR_FILE_IO : case CONFIG_ERRROR_PARSE : *enumP = (enum LcErrorTypeE) value; return MK_OK; default: return MkThrowEnumInvalidValueError("LcErrorTypeE",value); } } | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<INSTANCE> , | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<STATIC> , |DEBUG[1]: c_MqC__funcLST_2_inlineARY_and_headerARY -> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~ , |DEBUG[1]: -> +++ START +++ , __NAME__<LcConfigLookupInt64> | DEBUG[1]: lib_DX__getDocParameterApi -> >>> START: , __NAME__<LcConfigLookupInt64> | DEBUG[1]: getDocR -> >>> START: doc(R) , __NAME__<LcConfigLookupInt64> , cls<LcConfigC> , pfx<LcConfig> | DEBUG[1]: lib_DX__getDocParameterApi -> LIST | DEBUG[1]: -> | __NAME__ : LcConfigLookupInt64 | DEBUG[1]: -> | isDocI : 0 | DEBUG[1]: -> | dR : Lookup | DEBUG[1]: -> | dRA : LcConfigC-Lookup | DEBUG[1]: -> | dI : _ignore_ | DEBUG[1]: -> | dIA : LcConfigC-Lookup | DEBUG[1]: -> | clsR : LcConfigC | DEBUG[1]: -> | dDA : LcConfigC_Lookup_C_API c_MqC__funcLST_2_inlineARY_and_headerARY -> DEBUG[#1] -> my(__NAME__)<LcConfigLookupInt64> , isVoid<0> , isRuntime~ , Oret<enum MkErrorE> , Oargs<LC_CFGN config, MK_STRN path, MK_I64 *value_out> ::cache::cache_open -> CUM -> chORfn<gen/config_inline> , ext<h> , args<package_inline_lib> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.h> ::cache::cache_open -> CUM -> chORfn<tempfile> , ext<1> , args<> writeARY(LcConfigC,LcConfigC-Lookup,omo) = __parser__global__(LcConfigLookupInt64:value_out:out=yes); /// @brief Non-inline replacement for @RLcNs{ConfigLookupInt64} … __parser__(inline=LcConfigLookupInt64,DEFAULT-ARGS=value_out,INSTANCE=config,const=yes,alias=LcConfigLookupInt64) LC_EXTERN enum MkErrorE MK_DECL LcConfigLookupInt64P (LC_CFGN config, MK_STRN path, MK_I64 *value_out); lib_ME__build_CLASS_index -> print CLASS database -> CLASS<array|P|*> -> CLASS = <array|P|*> -> | LcConfig | empty -> | LcConfigC | LcConfigC-Lookup -> | LcSettingC | empty lib_ME__write_funcARY -> Xclass<LcConfigC> lib_ME__doc_start -> DEBUG[#1] -> Xclass<LcConfigC> , doc(DA)<LcConfigC_Lookup_C_API> , CONFIG(DOCID)<C> , PN<LcConfigC_Lookup_C_API> lib_ME__doc_start -> DEBUG[#1] -> doc<array|P|*> -> doc = <array|P|*> -> | DA | LcConfigC_Lookup_C_API -> | I | _ignore_ -> | IA | LcConfigC-Lookup -> | N | LcConfigC - LcConfigC_Lookup_C_API -> | NA | LcConfigC_C_API -> | R | Lookup -> | RA | LcConfigC-Lookup -> | clsR | LcConfigC -> | isIdx | 0 -> | isN | 0 pInclude -> id<LcConfigC> , cfn<rc4> , fn<tempfile-1> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> /// @addtogroup LcConfigC_Lookup_C_API /// @{ /// @name LcConfigC - LcConfigC_Lookup_C_API - function /// @{ // doc-key: LcConfigC,LcConfigC-Lookup,omo __parser__global__(LcConfigLookupInt64:value_out:out=yes); /// @brief Non-inline replacement for @RLcNs{ConfigLookupInt64} … __parser__(inline=LcConfigLookupInt64,DEFAULT-ARGS=value_out,INSTANCE=config,const=yes,alias=LcConfigLookupInt64) LC_EXTERN enum MkErrorE MK_DECL LcConfigLookupInt64P (LC_CFGN config, MK_STRN path, MK_I64 *value_out); /// @} /// @} pInclude -> id<inline> , cfn<rc2> , fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.h> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> WARNING: outTXT is empty -> id<inline> , ext<-> , fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.h> -> Stack[2]: pInclude inline rc2 ... -> Stack[1]: lib_ME__write_funcARY__compress inline rc2 -array headerARY ... ::cache::cache_open -> CUM -> chORfn<gen/config_inline> , ext<c> , args<package_inline_lib §header§ config_inline_lc.h> pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.c> ::cache::cache_open -> CUM -> chORfn<tempfile> , ext<1> , args<> cache_open -> open from cache -> fn<tempfile-1> writeARY(LcConfigC,LcConfigC-Lookup,omo) = | DEBUG[1]: lib_MqS__ARG -> >>> START: , LIST | DEBUG[1]: -> | __NAME__ : LcConfigLookupInt64 | DEBUG[1]: -> | ty : omo | DEBUG[1]: -> | getter : getterC | DEBUG[1]: -> | formater : Filter_arg_in | DEBUG[1]: -> | argv : {ME_CCN_LcConfigC config} {ME_PSN_MK_STRN path} {ME_NI8_MK_I64 value_out} | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_CCN_LcConfigC> , av<config> , getter<getterC> , ::Flag_onNativeDefault<false> | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_PSN_MK_STRN> , av<path> , getter<getterC> , ::Flag_onNativeDefault<false> | DEBUG[1]: lib_MqS__ARG_default -> >>> START: , at<ME_NI8_MK_I64> , av<value_out> , getter<getterC> | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_NI8_MK_I64> , av<value_out> , getter<getterC> , ::Flag_onNativeDefault<false> |DEBUG[1]: c_MqC__funcLST_2_inlineARY_and_headerARY -> XargsSave<LC_CFGN config, MK_STRN ~ , enum MkErrorE LcConfigLookupInt64P (LC_CFGN config, MK_STRN path, MK_I64 *value_out) { | DEBUG[1]: lib_MqC__CALL__styleC -> >>> START: , argv<{ME_CCN_LcConfigC config} {ME_PSN_MK_STRN path} {ME_NI8_MK_I64 value_out}> return LcConfigLookupInt64(config, path, value_out); } lib_ME__build_CLASS_index -> print CLASS database -> CLASS<array|P|*> -> CLASS = <array|P|*> -> | LcConfig | empty -> | LcConfigC | LcConfigC-Lookup -> | LcSettingC | empty lib_ME__write_funcARY -> Xclass<LcConfigC> pInclude -> id<LcConfigC> , cfn<rc4> , fn<tempfile-1> , opts<array|P|*> -> opts = <array|P|*> -> | -add | yes -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> // doc-key: LcConfigC,LcConfigC-Lookup,omo | DEBUG[1]: lib_MqS__ARG -> >>> START: , LIST | DEBUG[1]: -> | __NAME__ : LcConfigLookupInt64 | DEBUG[1]: -> | ty : omo | DEBUG[1]: -> | getter : getterC | DEBUG[1]: -> | formater : Filter_arg_in | DEBUG[1]: -> | argv : {ME_CCN_LcConfigC config} {ME_PSN_MK_STRN path} {ME_NI8_MK_I64 value_out} | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_CCN_LcConfigC> , av<config> , getter<getterC> , ::Flag_onNativeDefault<false> | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_PSN_MK_STRN> , av<path> , getter<getterC> , ::Flag_onNativeDefault<false> | DEBUG[1]: lib_MqS__ARG_default -> >>> START: , at<ME_NI8_MK_I64> , av<value_out> , getter<getterC> | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_NI8_MK_I64> , av<value_out> , getter<getterC> , ::Flag_onNativeDefault<false> |DEBUG[1]: c_MqC__funcLST_2_inlineARY_and_headerARY -> XargsSave<LC_CFGN config, MK_STRN ~ , enum MkErrorE LcConfigLookupInt64P (LC_CFGN config, MK_STRN path, MK_I64 *value_out) { | DEBUG[1]: lib_MqC__CALL__styleC -> >>> START: , argv<{ME_CCN_LcConfigC config} {ME_PSN_MK_STRN path} {ME_NI8_MK_I64 value_out}> return LcConfigLookupInt64(config, path, value_out); } pInclude -> id<inline> , cfn<rc6> , fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.c> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> pInclude -> WARNING: outTXT is empty -> id<inline> , ext<-> , fn<NHI1_HOME/theConfig/c/gen/config_inline_lc.c> -> Stack[2]: pInclude inline rc6 ... -> Stack[1]: lib_ME__write_funcARY__compress inline rc6 -array inlineARY ... pFILENAME -> use file -> fn<NHI1_HOME/theConfig/c/private_lc.h> tmpl_make_from_file -> keep file -> fn<NHI1_HOME/theConfig/c/private_lc.h>
C#
api functionThe example in the alc-compiler C# backend shows the debugging of the MkBufferAppendC function.
This function is from the library LibMkKernel_mk.h or mk
for short and is a method of the class MkBufferC .
call: 'cs_MqC.tcl' '-mk' '-d' '-d' '-f' 'MkBufferAppendC' pInit -> PINIT[#0] -> +++ use : lang<cs> : api<MqC> : top<cs_MqC.tcl> -> PINIT[#0] -> argv<-mk -d -d -f MkBufferAppendC> -> PINIT[>0] -> INIT(lang)<cs> : INIT(Api)<MqC> : INIT(argv)<-i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta> -> PINIT[>0] -> CONFIG(FUNCEXPR)<MkBufferAppendC> : CONFIG(CLASSEXPR)<§undef§> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theCompiler/src/lib_CS.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theKernel/c/compiler.tcl> -> PINIT[>0] -> config load : LIB<NHI1_HOME/theKernel/cs/compiler.tcl> -> PINIT[#1] -> call init : top<cs_MqC.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqC.tcl> pInit -> PINIT[#2] -> +++ skip : lang<no> : api<MqC> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqC_type_C.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/cs_MqS.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqS.tcl> pInit -> PINIT[#2] -> +++ skip : lang<no> : api<MqS> pInit -> PINIT[#2] -> +++ skip : lang<cs> : api<MqS> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_MqS_type_C.tcl> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_DX.tcl> pInit -> PINIT[#2] -> +++ skip : lang<no> : api<DOC> pSource -> source file -> src<NHI1_HOME/theCompiler/src/lib_CLS.tcl> classTree::Main -> use classdb: NHI1_HOME/etc/ClassDB.tcl -> PINIT[#1] : LIST -> | info : +++ use -> | IGNORE(#ignore) : <> -> | IGNORE(#only) : <> -> | IGNORE(INTERNAL) : 0 -> PINIT[#1] -> IGNORE(HIDE)<0> : ::HIDE<> : ::KEEP<> -> PINIT[#1] -> imeta<NHI1_HOME/theKernel/cs/gen/pre_mkkernel.meta> -> PINIT[#1] -> getterL<alias:pGet_M2S> : getterS<alias:pGet_M2S> : getterC<alias:pGet_M2C> |DEBUG[1]: pEVAL -> >>> START: , CONFIG<array|P|*> , INIT<array|P|*> |DEBUG[1]: -> CONFIG = <array|P|*> |DEBUG[1]: -> | ALLOW_argv | no | ALWAYS_DEFAULT | no |DEBUG[1]: -> | ARRAY_IS_VARARG | no | BROKEN_C_NAME | no |DEBUG[1]: -> | CLASSEXPR | §undef§ | CMD | cs_MqC.tcl |DEBUG[1]: -> | CMT | // | CMT_DX | /// |DEBUG[1]: -> | CNs | MkNs | CODEEXT_C | cs |DEBUG[1]: -> | CODEEXT_N | cs | CODEEXT_S | cs |DEBUG[1]: -> | C_API | no | DEBUG | 2 |DEBUG[1]: -> | DEPENDENCY | no | DOCID | CS |DEBUG[1]: -> | ENUM_KEYWORDS | <> | ERASE_ALL | no |DEBUG[1]: -> | FILTER | yes | FORCE | no |DEBUG[1]: -> | FRAME_CLEANUP | no | FRAME_GET_ALL | yes |DEBUG[1]: -> | FRAME_INIT_STACK | no | FUNCEXPR | MkBufferAppendC |DEBUG[1]: -> | FUNC_KEYWORDS | <> | HAS_CLASS | yes |DEBUG[1]: -> | HAS_DEFAULT_ARG | yes | HAS_REF_POINTER | no |DEBUG[1]: -> | HAS_TYPE_FIRST | yes | JUMP_ON_ERROR | no |DEBUG[1]: -> | KEYWORDS | <> | LIBDIR | NHI1_HOME/theKernel/cs |DEBUG[1]: -> | LIB_BASE_DIR | NHI1_HOME/theKernel | LONG | cs |DEBUG[1]: -> | LngId | cs | META_FILE_EXTENSION | <> |DEBUG[1]: -> | META_HIDE_BEGIN | #ifndef PARSE_C_HEADER_TO_META | META_HIDE_END | #endif |DEBUG[1]: -> | ONFILTER | 1 | ONFILTER2 | 1 |DEBUG[1]: -> | ONPROFILE | false | ONVERBOSE | 1 |DEBUG[1]: -> | OVERLOAD | yes | OVERLOAD_CALL | yes |DEBUG[1]: -> | OVERLOAD_CLASS | yes | OVERLOAD_NAME | yes |DEBUG[1]: -> | PRINT | 1 | PRINT2 | 1 |DEBUG[1]: -> | PROFILE_KEY | exclusiveRuntime | PROFILE_PAT | * |DEBUG[1]: -> | RCNs | @RMkNs | SHOW_FILTER | no |DEBUG[1]: -> | SHOW_FILTER_DETAIL | no | SILENT | 0 |DEBUG[1]: -> | STDOUT | 0 | STYLE | C |DEBUG[1]: -> | TOPLEVEL | NHI1_HOME/theCompiler/src/cs_MqC.tcl | USE_CALLBACK | yes |DEBUG[1]: -> | USE_FINAL_NAME | yes | USE_LONG_NAME | no |DEBUG[1]: -> | USE_NS | no | VARARG_IS_ARRAY | yes |DEBUG[1]: -> | VERBOSE | 2 | WARNING_AS_ERROR | no |DEBUG[1]: -> | WRITE | no | lng_nspkg | cs_mkkernel |DEBUG[1]: -> INIT = <array|P|*> |DEBUG[1]: -> | Api | MqC | LANG | CS |DEBUG[1]: -> | Ns | Mk | Prefix | cs_MqC |DEBUG[1]: -> | argv | -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta | example | no |DEBUG[1]: -> | lang | cs | langid | cs |DEBUG[1]: -> | ns | mk | overwrite | no pEVAL -> +++333 -> use imeta -> imeta<NHI1_HOME/theKernel/cs/gen/pre_mkkernel.meta> pEVAL -> +++333 -> use cache -> cache<NHI1_BUILD/x86_64-suse-linux-gnu/debug2/theKernel/cs/gen/pre_mkkernel.meta.compile> p_attributeEND -> DEBUG[#2] -> ::HIDE<list> -> ::HIDE = <list> -> | \mMkBflCheckO\M | \mMkBflCheck\M | \mMkBfl\M | \mMkBinaryCreateSlice\M -> | \mMkBinaryCreate\M | \mMkBinaryDup\M | \mMkBinaryGetData\M | \mMkBinaryGetSize\M -> | \mMkBinaryIsNull\M | \mMkBinaryLog\M | \mMkBinaryR\M | \mMkBufCheckO\M -> | \mMkBufCheck\M | \mMkBuf\M | \mMkBusCheckO\M | \mMkBusCheck\M -> | \mMkBus\M | \mMkCsTypeUpdate\M | \mMkErrCheckO\M | \mMkErrCheck\M -> | \mMkErr\M | \mMkErrorEXIT\M | \mMkErrorPANIC\M | \mMkErrorSetE\M -> | \mMkIdSE\M | \mMkIdS\M | \mMkLflCheckO\M | \mMkLflCheck\M -> | \mMkLfl\M | \mMkObjCheckO\M | \mMkObjCheck\M | \mMkObjCopy\M -> | \mMkObjCreate\M | \mMkObjDup2\M | \mMkObjDup\M | \mMkObjMerge\M -> | \mMkObjReset\M | \mMkObj\M | \mMkRefCidN\M | \mMkRefDecrWithUnlinkSelf\M -> | \mMkRefDecrWithoutSelf\M | \mMkRefDecr\M | \mMkRefGet\M | \mMkRefIncrSelf\M -> | \mMkRefIncr\M | \mMkRefIsLocked\M | \mMkRefLock\M | \mMkRtCheckO\M -> | \mMkRtCheck\M | \mMkRt\M | \mMkRuntimeGetFromObj\M | \mMkRuntimeGetNull\M -> | \mMkRuntimeGet\M | \mMkRuntimeHandleGet\M | \mMkRuntimeHandleResolve\M | \mMkRuntimeInstances\M -> | \mMkRuntimeNext\M | \mMkRuntimePrev\M | \mMkRuntimeSetCID\M | \mMkSelfCreate\M -> | \mMkSelfDeleteForce\M | \mMkSelfDelete\M | \mMkSelfExists\M | \mMkSelfGet\M -> | \mMkSelfNew\M | \mMkSelfSet\M | \mMkSelfUnlink\M | \mMkString2ATO\M -> | \mMkString2BOL\M | \mMkString2BOOL\M | \mMkString2DBL\M | \mMkString2FLT\M -> | \mMkString2HDL\M | \mMkString2I16\M | \mMkString2I32\M | \mMkString2I64\M -> | \mMkString2I8\M | \mMkString2LONG\M | \mMkString2U16\M | \mMkString2U32\M -> | \mMkStringCreate\M | \mMkStringCreate_1\M | \mMkStringDup\M | \mMkStringGetData\M -> | \mMkStringGetSize\M | \mMkStringIsNULL\M | \mMkStringLog\M | \mMkStringR\M -> | \mMkStringSlice\M | \mMkStringSplit\M | \mMkSysBasename\M | \mMkSysCalloc\M -> | \mMkSysDirname\M | \mMkSysExit\M | \mMkSysFreeNonNull\M | \mMkSysFreeP\M -> | \mMkSysFree\M | \mMkSysGetPid\M | \mMkSysGetTimeOfDay\M | \mMkSysGetTrace\M -> | \mMkSysHashI32\M | \mMkSysHashSTR\M | \mMkSysKill\M | \mMkSysMalloc\M -> | \mMkSysMemDup\M | \mMkSysPrintProcessMemoryMap\M | \mMkSysPrintStackTrace\M | \mMkSysReCalloc\M -> | \mMkSysRealloc\M | \mMkSysSleep\M | \mMkSysStrDup\M | \mMkSysStrNCpy\M -> | \mMkSysStrNDup\M | \mMkSysStringArrayDup\M | \mMkSysStringGetNoNULL\M | \mMkSysStringGet\M -> | \mMkSysStringIsNULL\M | \mMkSysStringIsNotNULL\M | \mMkSysUSleep\M | \mMkSysWaitForProcess\M -> | \mMkSysWaitForThread\M | <> | <> | <> p_attributeEND -> DEBUG[#2] -> ::KEEP<list> -> ::KEEP = <list> -> | MkBufferListToList\M | MkBufferToObject\M | MkRefGet\M | MkSysGetPid\M -> | MkSysHashI32\M | MkSysHashSTR\M | MkSysKill\M | <> | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<FUNC_S> , | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<HIDE> , | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<INTERNAL> , p_filter -> DEBUG[#1] -> use , __NAME__<MkBufferAppendC> p_funcEND -> statistics -> p_funcDEF_all<299> , p_funcDEF_use<1> , p_funcDEF_skip<298> , p_funcDEF_internal<66> , p_funcDEF_hide<84> p_funcEND -> skip '298' from '299' functions -> p_funcDEF_use<MkBufferAppendC> | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<FUNC_S> , pEVAL -> funcDEF RESULT : MkBufferAppendC ========================================= pEVAL -> ty<oc_> , type0M<ME_CCC_MkBufferC> , var0<buf> , pEVAL -> retM<ME_CCC_MkBufferC> , retC<MkBufferC> , retOM<ME_CCC_MkBufferC> , pEVAL -> class<MkBufferC> , classM<ME_CCC_MkBufferC> , classC<MkBufferC> , pEVAL -> prefix<MkBuffer> , prefixM<ME_CCC_MkBufferC> , prefixC<MkBufferC> , pEVAL -> argv<{ME_CCC_MkBufferC buf} {ME_PSN_MK_STRN val}> , RETURN_MAPPING<ME_CCC_MkBufferC §DEFAULT§ M {}> pEVAL -> =================================================================== |DEBUG[2]: pEVAL -> <<< END: , |DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<CLASS_S> , ::cache::cache_open -> CUM -> chORfn<LibMkKernel> , ext<cs> , args<LibNsPkg_cs> pFILENAME -> use file -> fn<NHI1_HOME/theKernel/cs/LibMkKernel.cs> cache_open -> fnExistsB<1> , createB<0> , tmplB<1> , overwriteB<0> , alwaysCreateB<0> , fn<NHI1_HOME/theKernel/cs/LibMkKernel.cs> cache_open -> fi -> args<§NS§ MK §Ns§ Mk §ns§ mk §libnative§ kernel §libbase§ kernel §libBase§ Kernel §NsPkg§ MkKernel §nspkg§ mkkernel §NSPKG§ MKKERNEL> pInclude -> id<CLASS> , cfn<rc0> , fn<NHI1_HOME/theKernel/cs/LibMkKernel.cs> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> MkObjectC.SetupThreadOBJ(mkrt); MkBufferC.SetupThreadBUF(mkrt); MkBufferStreamC.SetupThreadBUS(mkrt); MkBufferListC.SetupThreadBFL(mkrt); MkLogFileC.SetupThreadLFL(mkrt); MkErrorC.SetupThreadERR(mkrt); MkRuntimeC.SetupThreadRT(mkrt); | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<OVERLOAD_CALLBACK> , |DEBUG[1]: lib_MqS__funcLST_2_overload_callback_funcLST -> >>> START: , |DEBUG[2]: lib_MqS__funcLST_2_overload_callback_funcLST -> <<< END: , | DEBUG[1]: tcl::mathfunc::checkNotIgnore -> allow<OVERLOAD_DEFAULTS> , |DEBUG[2]: lib_MqS__funcLST_2_overload_defaults_funcLST -> --- head : on OVERLOAD , LIST |DEBUG[2]: -> | __NAME__ : MkBufferAppendC |DEBUG[2]: -> | retM : ME_CCC_MkBufferC |DEBUG[2]: -> | argv : {ME_CCC_MkBufferC buf} {ME_PSN_MK_STRN val} |DEBUG[2]: -> | attributeDEF,* : <array|P|*> |DEBUG[2]: -> | : attributeDEF,INSTANCE : buf |DEBUG[2]: -> | : attributeDEF,doc-group : Access |DEBUG[2]: -> | : attributeDEF,mkrt,internal : yes |DEBUG[2]: -> | : attributeDEF,no-type-extension : yes |DEBUG[2]: -> | : attributeDEF,runtime : MkBufferAppendC_RT |DEBUG[2]: -> | -------------------- : ------------------------------------------------------ | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<INSTANCE> , | DEBUG[1]: tcl::mathfunc::checkIgnore -> allow<STATIC> , | DEBUG[1]: lib_DX__getDocParameterApi -> >>> START: , __NAME__<MkBufferAppendC> | DEBUG[1]: getDocR -> >>> START: doc(R) , __NAME__<MkBufferAppendC> , cls<MkBufferC> , pfx<MkBuffer> | DEBUG[2]: getDocR -> <<< END: doc(R) , ret<Access> | DEBUG[1]: lib_DX__getDocParameterApi -> LIST | DEBUG[1]: -> | __NAME__ : MkBufferAppendC | DEBUG[1]: -> | isDocI : 0 | DEBUG[1]: -> | dR : Access | DEBUG[1]: -> | dRA : MkBufferC-Access | DEBUG[1]: -> | dI : _ignore_ | DEBUG[1]: -> | dIA : MkBufferC-Access | DEBUG[1]: -> | clsR : MkBufferC | DEBUG[1]: -> | dDA : MkBufferC_Access_C_API | DEBUG[2]: lib_DX__getDocParameterApi -> <<< END: , lib_DX__name_2_docParameters_cache(MkBufferAppendC)<isIdx 0 R Access RA MkBufferC-Access I _ignore_ IA MkBufferC-Access clsR MkBufferC DA MkBufferC_Access_C_API isN 0 N MkBufferC_Access_C_API NA MkBufferC_C_API> writeARY(MkBufferC,MkBufferC-Access,oc_) = |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~ , |DEBUG[2]: -> +++ START +++ , my<instance> |DEBUG[2]: -> my = <instance> |DEBUG[2]: -> | ARG_DEFAULT,mkrt,k | N |DEBUG[2]: -> | ARG_DEFAULT,mkrt,v | RUNTIME |DEBUG[2]: -> | ARG_TYPE_ATTRIBUTE,buf,M | 1 |DEBUG[2]: -> | ARG_TYPE_ATTRIBUTE,val,M | 1 |DEBUG[2]: -> | RETURN_MAPPING | ME_CCC_MkBufferC §DEFAULT§ M {} |DEBUG[2]: -> | __CLASS__ | ::funcDEF |DEBUG[2]: -> | __NAME__ | MkBufferAppendC |DEBUG[2]: -> | __NS__ | ::funcDEF::MkBufferAppendC |DEBUG[2]: -> | argv | {ME_CCC_MkBufferC buf} {ME_PSN_MK_STRN val} |DEBUG[2]: -> | attributeDEF,INSTANCE | buf |DEBUG[2]: -> | attributeDEF,doc-group | Access |DEBUG[2]: -> | attributeDEF,mkrt,internal | yes |DEBUG[2]: -> | attributeDEF,no-type-extension | yes |DEBUG[2]: -> | attributeDEF,runtime | MkBufferAppendC_RT |DEBUG[2]: -> | class | MkBufferC |DEBUG[2]: -> | classC | MkBufferC |DEBUG[2]: -> | classM | ME_CCC_MkBufferC |DEBUG[2]: -> | needError | no |DEBUG[2]: -> | prefix | MkBuffer |DEBUG[2]: -> | prefixC | MkBufferC |DEBUG[2]: -> | prefixM | ME_CCC_MkBufferC |DEBUG[2]: -> | retC | MkBufferC |DEBUG[2]: -> | retM | ME_CCC_MkBufferC |DEBUG[2]: -> | retOM | ME_CCC_MkBufferC |DEBUG[2]: -> | ty | oc_ |DEBUG[2]: -> | type0M | ME_CCC_MkBufferC |DEBUG[2]: -> | var0 | buf |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: Setup , __NAME__<MkBufferAppendC> | DEBUG[1]: lib_MqS__ARG -> >>> START: , LIST | DEBUG[1]: -> | __NAME__ : MkBufferAppendC | DEBUG[1]: -> | ty : oc_ | DEBUG[1]: -> | getter : getterC | DEBUG[1]: -> | formater : Filter_arg_in | DEBUG[1]: -> | argv : {ME_CCC_MkBufferC buf} {ME_PSN_MK_STRN val} | DEBUG[2]: lib_MqS__ARG -> loop: arg , at<ME_PSN_MK_STRN> , av<val> , default_args<> | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_PSN_MK_STRN> , av<val> , getter<getterC> , ::Flag_onNativeDefault<false> | DEBUG[2]: lib_MqS__ARG_default_init -> <<< END: RETURN , mod<> , ext<> , isDef<no> , isPointer<0> | DEBUG[2]: lib_MqS__ARG -> Info , at<ME_PSN_MK_STRN> , av<val> , mod<> , ext<> , isDef<no> , formater<Filter_arg_in> | DEBUG[2]: lib_MqS__ARG -> <<< END: RETURN , RETURN_MAPPING<ME_CCC_MkBufferC §DEFAULT§ M {}> , ARG_CLEANUP<> , ARG_OUT<> , args<{string val}> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> +++ INFO , Oret<MkBufferC> , Okwd<> , Oname<AppendC> , Oargs<string val> , Oattr<> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: Setup , Oname<AppendC> , Osta<> , lstM<ME_CCC_MkBufferC ME_CCN_MkBufferC ME_CXC_MK_MNG ME_CXN_MK_MNGN> , Oret<MkBufferC> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelProc , | DEBUG[1]: LevelProc-overload-1 -> >>> START: , | DEBUG[2]: refdoc_resolve -> +++ CUM , cmd<refdoc> | DEBUG[2]: refdoc_resolve -> 555 , strL<MkBufferAppendC MkBufferAppendC_RT> /// @refdocRT{BufferAppendC} public MkBufferC AppendC (string val) { |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelInit , | DEBUG[1]: LevelInit -> >>> START: , | DEBUG[1]: lib_MqC__CALL__styleC -> >>> START: , argv<{ME_CCC_MkBufferC buf} {ME_PSN_MK_STRN val}> | DEBUG[2]: lib_MqC__CALL__styleC -> loop: call arguments , LIST | DEBUG[2]: -> | at : ME_CCC_MkBufferC | DEBUG[2]: -> | av : buf | DEBUG[2]: -> | nat : <> | DEBUG[2]: -> | isPointer : 0 | DEBUG[2]: -> | isCast : 0 | DEBUG[2]: -> | isNative : 0 | DEBUG[2]: -> | isOut : 0 | DEBUG[2]: -> | isInOut : 0 | DEBUG[2]: -> | isInternal : 0 | DEBUG[2]: -> | avOrig : buf | DEBUG[2]: -> | idx : 0 | DEBUG[2]: lib_MqC__CALL__styleC -> loop: , first<yes> , at<ME_CCC_MkBufferC> , lstM<ME_CCC_MkBufferC ME_CCN_MkBufferC ME_CXC_MK_MNG ME_CXN_MK_MNGN> , ty<oc_> | DEBUG[2]: lib_MqC__CALL__styleC -> loop: call arguments , LIST | DEBUG[2]: -> | at : ME_PSN_MK_STRN | DEBUG[2]: -> | av : val | DEBUG[2]: -> | nat : <> | DEBUG[2]: -> | isPointer : 0 | DEBUG[2]: -> | isCast : 0 | DEBUG[2]: -> | isNative : 0 | DEBUG[2]: -> | isOut : 0 | DEBUG[2]: -> | isInOut : 0 | DEBUG[2]: -> | isInternal : 0 | DEBUG[2]: -> | avOrig : val | DEBUG[2]: -> | idx : 1 | DEBUG[2]: lib_MqC__CALL__styleC -> <<< END: , LIST | DEBUG[2]: -> | CALL : Mk.MkBufferAppendC(mkrt, hdl, val_cstr) | DEBUG[2]: -> | CALL_PRE_MAPPING : {ME_PSN_MK_STRN val String_Read val_cstr 1} | DEBUG[2]: -> | CALL_POST_MAPPING : {ME_PSN_MK_STRN val String_Read val_cstr 1} | DEBUG[2]: LevelInit -> <<< END: , |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: LevelInit , |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelCode , | DEBUG[1]: LevelCode -> >>> START: , |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: SpecialArgument , retVal<__retVal__L> , __NAME__<MkBufferAppendC> |DEBUG[2]: -> start : , classM<ME_CCC_MkBufferC> , lstM<ME_CCC_MkBufferC ME_CCN_MkBufferC ME_CXC_MK_MNG ME_CXN_MK_MNGN> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> loop: special argument , at<ME_CCC_MkBufferC> , av<buf> , pos<0> , |DEBUG[2]: -> ++ isClass : , is_instance<1> , ttM<ME_CCC_MkBufferC> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> loop: special argument , at<ME_PSN_MK_STRN> , av<val> , pos<1> , |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: SpecialArgument , retVal<__retVal__L> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: CallFrame , | DEBUG[1]: lib_MqC__FRAME_GET_ALL -> START , RETURN_MAPPING<ME_CCC_MkBufferC §DEFAULT§ M {}> | DEBUG[1]: lib_MqC__FRAME_GET_ALL -> END , |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: CallFrame , |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: #1 RETURN_MAPPING , RETURN_MAPPING<ME_CCC_MkBufferC §DEFAULT§ M {}> , retVal<__retVal__L> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: #1 RETURN_MAPPING , retVal<__retVal__L> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: CALL_PRE_MAPPING , IntPtr val_cstr = Marshal.StringToHGlobalAnsi(val); |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: CALL_PRE_MAPPING , |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: retVal definition , retOM<ME_CCC_MkBufferC> , ::LibAllErrorType<^ME_ENE_(?:Mk)ErrorE> , retVal<__retVal__L> , CALL<Mk.MkBufferAppendC(mkrt, hdl, val_cstr)> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> 222 , retM<ME_CCC_MkBufferC> , retVal<__retVal__L> , CALL<Mk.MkBufferAppendC(mkrt, hdl, val_cstr)> , CALL_POST_MAPPING<{ME_PSN_MK_STRN val String_Read val_cstr 1}> IntPtr __retVal__L = Mk.MkBufferAppendC(mkrt, hdl, val_cstr); |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: retVal definition , retVal<__retVal__L> , CALL<__retVal__L> , retSelf<§undef§> , instance<hdl> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: CALL_POST_MAPPING , Marshal.FreeHGlobal(val_cstr); |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: CALL_POST_MAPPING , | DEBUG[2]: lib_MqC__Raise_Error -> +++ SKIP: RaiseError , CONFIG(JUMP_ON_ERROR) , CALL<__retVal__L> , retOM<ME_CCC_MkBufferC> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: #2 RETURN_MAPPING , LIST |DEBUG[1]: -> | RETURN_MAPPING : ME_CCC_MkBufferC §DEFAULT§ M {} |DEBUG[1]: -> | ARG_OUT : <> |DEBUG[1]: -> | CALL : __retVal__L |DEBUG[1]: -> | retM : ME_CCC_MkBufferC |DEBUG[1]: -> | retVal : __retVal__L |DEBUG[1]: -> | retOM : ME_CCC_MkBufferC |DEBUG[1]: -> | type0M : ME_CCC_MkBufferC |DEBUG[1]: -> typ<ME_CCC_MkBufferC> , arg<§DEFAULT§> , key<M> , val<> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: #2 RETURN_MAPPING , CALL<__retVal__L> , retM<ME_CCC_MkBufferC> , retVal<__retVal__L> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: return , retM<ME_CCC_MkBufferC> , retOM<ME_CCC_MkBufferC> , classM<ME_CCC_MkBufferC> , ty<oc_> , CALL<__retVal__L> return MkBufferC.MkBufferC_ObjNew(__retVal__L); |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: return , retM<ME_CCC_MkBufferC> , CALL<__retVal__L> | DEBUG[2]: LevelCode -> <<< END: , |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: LevelCode , } | DEBUG[2]: LevelProc-overload-1 -> <<< END: , |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: LevelProc , lib_ME__build_CLASS_index -> print CLASS database -> CLASS<array|P|*> -> CLASS = <array|P|*> -> | MkBufferC | MkBufferC-Access -> | MkBufferListC | empty -> | MkBufferStreamC | empty -> | MkErrorC | empty -> | MkKernel | empty -> | MkLogFileC | empty -> | MkObjectC | empty -> | MkRuntimeC | empty lib_ME__write_funcARY -> Xclass<MkBufferC> ::cache::cache_open -> CUM -> chORfn<MkBufferC> , ext<cs> , args<NsClass_cs §ClassC§ MkBufferC §NS_CLS§ MK_BUF> pFILENAME -> use file -> fn<NHI1_HOME/theKernel/cs/MkBufferC.cs> cache_open -> fnExistsB<1> , createB<0> , tmplB<1> , overwriteB<0> , alwaysCreateB<0> , fn<NHI1_HOME/theKernel/cs/MkBufferC.cs> cache_open -> fi -> args<§ClassC§ MkBufferC §NS_CLS§ MK_BUF §NS§ MK §Ns§ Mk §ns§ mk §libnative§ kernel §libbase§ kernel §libBase§ Kernel §NsPkg§ MkKernel §nspkg§ mkkernel §NSPKG§ MKKERNEL> lib_ME__doc_start -> DEBUG[#1] -> Xclass<MkBufferC> , doc(DA)<MkBufferC_Access_C_API> , CONFIG(DOCID)<CS> , PN<MkBufferC_Access_CS_API> lib_ME__doc_start -> DEBUG[#1] -> doc<array|P|*> -> doc = <array|P|*> -> | DA | MkBufferC_Access_C_API -> | I | _ignore_ -> | IA | MkBufferC-Access -> | N | MkBufferC - MkBufferC_Access_C_API -> | NA | MkBufferC_C_API -> | R | Access -> | RA | MkBufferC-Access -> | clsR | MkBufferC -> | isIdx | 0 -> | isN | 0 pInclude -> id<MkBufferC> , cfn<rc2> , fn<NHI1_HOME/theKernel/cs/MkBufferC.cs> , opts<array|P|*> -> opts = <array|P|*> -> | -add | no -> | -ext | - -> | -null-allowed | no -> | -null-ignore | no -> | -sp | yes -> | -tmpl | <> -> | -tmpl-args | <> public partial class MkBufferC { /// @addtogroup MkBufferC_Access_CS_API /// @copyAPI{MkBufferC_Access_C_API} /// @{ // doc-key: MkBufferC,MkBufferC-Access,oc_ |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~ , |DEBUG[2]: -> +++ START +++ , my<instance> |DEBUG[2]: -> my = <instance> |DEBUG[2]: -> | ARG_DEFAULT,mkrt,k | N |DEBUG[2]: -> | ARG_DEFAULT,mkrt,v | RUNTIME |DEBUG[2]: -> | ARG_TYPE_ATTRIBUTE,buf,M | 1 |DEBUG[2]: -> | ARG_TYPE_ATTRIBUTE,val,M | 1 |DEBUG[2]: -> | RETURN_MAPPING | ME_CCC_MkBufferC §DEFAULT§ M {} |DEBUG[2]: -> | __CLASS__ | ::funcDEF |DEBUG[2]: -> | __NAME__ | MkBufferAppendC |DEBUG[2]: -> | __NS__ | ::funcDEF::MkBufferAppendC |DEBUG[2]: -> | argv | {ME_CCC_MkBufferC buf} {ME_PSN_MK_STRN val} |DEBUG[2]: -> | attributeDEF,INSTANCE | buf |DEBUG[2]: -> | attributeDEF,doc-group | Access |DEBUG[2]: -> | attributeDEF,mkrt,internal | yes |DEBUG[2]: -> | attributeDEF,no-type-extension | yes |DEBUG[2]: -> | attributeDEF,runtime | MkBufferAppendC_RT |DEBUG[2]: -> | class | MkBufferC |DEBUG[2]: -> | classC | MkBufferC |DEBUG[2]: -> | classM | ME_CCC_MkBufferC |DEBUG[2]: -> | needError | no |DEBUG[2]: -> | prefix | MkBuffer |DEBUG[2]: -> | prefixC | MkBufferC |DEBUG[2]: -> | prefixM | ME_CCC_MkBufferC |DEBUG[2]: -> | retC | MkBufferC |DEBUG[2]: -> | retM | ME_CCC_MkBufferC |DEBUG[2]: -> | retOM | ME_CCC_MkBufferC |DEBUG[2]: -> | ty | oc_ |DEBUG[2]: -> | type0M | ME_CCC_MkBufferC |DEBUG[2]: -> | var0 | buf |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: Setup , __NAME__<MkBufferAppendC> | DEBUG[1]: lib_MqS__ARG -> >>> START: , LIST | DEBUG[1]: -> | __NAME__ : MkBufferAppendC | DEBUG[1]: -> | ty : oc_ | DEBUG[1]: -> | getter : getterC | DEBUG[1]: -> | formater : Filter_arg_in | DEBUG[1]: -> | argv : {ME_CCC_MkBufferC buf} {ME_PSN_MK_STRN val} | DEBUG[2]: lib_MqS__ARG -> loop: arg , at<ME_PSN_MK_STRN> , av<val> , default_args<> | DEBUG[1]: lib_MqS__ARG_default_init -> >>> START: , at<ME_PSN_MK_STRN> , av<val> , getter<getterC> , ::Flag_onNativeDefault<false> | DEBUG[2]: lib_MqS__ARG_default_init -> <<< END: RETURN , mod<> , ext<> , isDef<no> , isPointer<0> | DEBUG[2]: lib_MqS__ARG -> Info , at<ME_PSN_MK_STRN> , av<val> , mod<> , ext<> , isDef<no> , formater<Filter_arg_in> | DEBUG[2]: lib_MqS__ARG -> <<< END: RETURN , RETURN_MAPPING<ME_CCC_MkBufferC §DEFAULT§ M {}> , ARG_CLEANUP<> , ARG_OUT<> , args<{string val}> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> +++ INFO , Oret<MkBufferC> , Okwd<> , Oname<AppendC> , Oargs<string val> , Oattr<> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: Setup , Oname<AppendC> , Osta<> , lstM<ME_CCC_MkBufferC ME_CCN_MkBufferC ME_CXC_MK_MNG ME_CXN_MK_MNGN> , Oret<MkBufferC> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelProc , | DEBUG[1]: LevelProc-overload-1 -> >>> START: , | DEBUG[2]: refdoc_resolve -> +++ CUM , cmd<refdoc> | DEBUG[2]: refdoc_resolve -> 555 , strL<MkBufferAppendC MkBufferAppendC_RT> /// @refdocRT{BufferAppendC} public MkBufferC AppendC (string val) { |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelInit , | DEBUG[1]: LevelInit -> >>> START: , | DEBUG[1]: lib_MqC__CALL__styleC -> >>> START: , argv<{ME_CCC_MkBufferC buf} {ME_PSN_MK_STRN val}> | DEBUG[2]: lib_MqC__CALL__styleC -> loop: call arguments , LIST | DEBUG[2]: -> | at : ME_CCC_MkBufferC | DEBUG[2]: -> | av : buf | DEBUG[2]: -> | nat : <> | DEBUG[2]: -> | isPointer : 0 | DEBUG[2]: -> | isCast : 0 | DEBUG[2]: -> | isNative : 0 | DEBUG[2]: -> | isOut : 0 | DEBUG[2]: -> | isInOut : 0 | DEBUG[2]: -> | isInternal : 0 | DEBUG[2]: -> | avOrig : buf | DEBUG[2]: -> | idx : 0 | DEBUG[2]: lib_MqC__CALL__styleC -> loop: , first<yes> , at<ME_CCC_MkBufferC> , lstM<ME_CCC_MkBufferC ME_CCN_MkBufferC ME_CXC_MK_MNG ME_CXN_MK_MNGN> , ty<oc_> | DEBUG[2]: lib_MqC__CALL__styleC -> loop: call arguments , LIST | DEBUG[2]: -> | at : ME_PSN_MK_STRN | DEBUG[2]: -> | av : val | DEBUG[2]: -> | nat : <> | DEBUG[2]: -> | isPointer : 0 | DEBUG[2]: -> | isCast : 0 | DEBUG[2]: -> | isNative : 0 | DEBUG[2]: -> | isOut : 0 | DEBUG[2]: -> | isInOut : 0 | DEBUG[2]: -> | isInternal : 0 | DEBUG[2]: -> | avOrig : val | DEBUG[2]: -> | idx : 1 | DEBUG[2]: lib_MqC__CALL__styleC -> <<< END: , LIST | DEBUG[2]: -> | CALL : Mk.MkBufferAppendC(mkrt, hdl, val_cstr) | DEBUG[2]: -> | CALL_PRE_MAPPING : {ME_PSN_MK_STRN val String_Read val_cstr 1} | DEBUG[2]: -> | CALL_POST_MAPPING : {ME_PSN_MK_STRN val String_Read val_cstr 1} | DEBUG[2]: LevelInit -> <<< END: , |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: LevelInit , |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: LevelCode , | DEBUG[1]: LevelCode -> >>> START: , |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: SpecialArgument , retVal<__retVal__L> , __NAME__<MkBufferAppendC> |DEBUG[2]: -> start : , classM<ME_CCC_MkBufferC> , lstM<ME_CCC_MkBufferC ME_CCN_MkBufferC ME_CXC_MK_MNG ME_CXN_MK_MNGN> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> loop: special argument , at<ME_CCC_MkBufferC> , av<buf> , pos<0> , |DEBUG[2]: -> ++ isClass : , is_instance<1> , ttM<ME_CCC_MkBufferC> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> loop: special argument , at<ME_PSN_MK_STRN> , av<val> , pos<1> , |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: SpecialArgument , retVal<__retVal__L> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: CallFrame , | DEBUG[1]: lib_MqC__FRAME_GET_ALL -> START , RETURN_MAPPING<ME_CCC_MkBufferC §DEFAULT§ M {}> | DEBUG[1]: lib_MqC__FRAME_GET_ALL -> END , |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: CallFrame , |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: #1 RETURN_MAPPING , RETURN_MAPPING<ME_CCC_MkBufferC §DEFAULT§ M {}> , retVal<__retVal__L> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: #1 RETURN_MAPPING , retVal<__retVal__L> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: CALL_PRE_MAPPING , IntPtr val_cstr = Marshal.StringToHGlobalAnsi(val); |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: CALL_PRE_MAPPING , |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: retVal definition , retOM<ME_CCC_MkBufferC> , ::LibAllErrorType<^ME_ENE_(?:Mk)ErrorE> , retVal<__retVal__L> , CALL<Mk.MkBufferAppendC(mkrt, hdl, val_cstr)> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> 222 , retM<ME_CCC_MkBufferC> , retVal<__retVal__L> , CALL<Mk.MkBufferAppendC(mkrt, hdl, val_cstr)> , CALL_POST_MAPPING<{ME_PSN_MK_STRN val String_Read val_cstr 1}> IntPtr __retVal__L = Mk.MkBufferAppendC(mkrt, hdl, val_cstr); |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: retVal definition , retVal<__retVal__L> , CALL<__retVal__L> , retSelf<§undef§> , instance<hdl> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: CALL_POST_MAPPING , Marshal.FreeHGlobal(val_cstr); |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: CALL_POST_MAPPING , | DEBUG[2]: lib_MqC__Raise_Error -> +++ SKIP: RaiseError , CONFIG(JUMP_ON_ERROR) , CALL<__retVal__L> , retOM<ME_CCC_MkBufferC> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: #2 RETURN_MAPPING , LIST |DEBUG[1]: -> | RETURN_MAPPING : ME_CCC_MkBufferC §DEFAULT§ M {} |DEBUG[1]: -> | ARG_OUT : <> |DEBUG[1]: -> | CALL : __retVal__L |DEBUG[1]: -> | retM : ME_CCC_MkBufferC |DEBUG[1]: -> | retVal : __retVal__L |DEBUG[1]: -> | retOM : ME_CCC_MkBufferC |DEBUG[1]: -> | type0M : ME_CCC_MkBufferC |DEBUG[1]: -> typ<ME_CCC_MkBufferC> , arg<§DEFAULT§> , key<M> , val<> |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: #2 RETURN_MAPPING , CALL<__retVal__L> , retM<ME_CCC_MkBufferC> , retVal<__retVal__L> |DEBUG[1]: lib_MqC__funcLST_2_funcARY__styleC -> >>> START: return , retM<ME_CCC_MkBufferC> , retOM<ME_CCC_MkBufferC> , classM<ME_CCC_MkBufferC> , ty<oc_> , CALL<__retVal__L> return MkBufferC.MkBufferC_ObjNew(__retVal__L); |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: return , retM<ME_CCC_MkBufferC> , CALL<__retVal__L> | DEBUG[2]: LevelCode -> <<< END: , |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: LevelCode , } | DEBUG[2]: LevelProc-overload-1 -> <<< END: , |DEBUG[2]: lib_MqC__funcLST_2_funcARY__styleC -> <<< END: LevelProc , /// @} // MkBufferC_Access_CS_API }
call: 'BuildNhi1.bash' '-lc' '-f' '-c' [Nhi1Env] setup=debug2: > /dev/shm/dev1usr/Main/x86_64-suse-linux-gnu/debug2/env-build.sh +++ [ BuildNhi1 : jobId=BuildNhi1:doG:lc:c : jobs= 1 : sec= 0 : pid=19103 ] JOB START +++ [ BuildNhi1 : jobId=BuildNhi1:doG:lc:c : jobs= 1 : sec= 0 : pid=19103 ] JOB START caller=proc_lib_and_lng Nhi1Make -v -no-j -predir /home/dev1usr/Project/NHI1/theConfig/c --silent MqC ~/Project/NHI1/theCompiler/docs ~/Project/NHI1/theConfig/c ~/Project/NHI1/theConfig/c > make --no-builtin-rules --no-builtin-variables -C /dev/shm/dev1usr/Main/x86_64-suse-linux-gnu/debug2/theCompiler/docs --silent MqC make[1]: Verzeichnis „/home/dev1usr/Project/NHI1/theConfig/c“ wird betreten make[1]: Verzeichnis „/dev/shm/dev1usr/Main/x86_64-suse-linux-gnu/debug2/theCompiler/docs“ wird verlassen Nhi1Make -v -no-j -predir /home/dev1usr/Project/NHI1/theConfig/c --silent RpcServer ~/Project/NHI1/theCompiler/docs ~/Project/NHI1/theConfig/c ~/Project/NHI1/theConfig/c > make --no-builtin-rules --no-builtin-variables -C /dev/shm/dev1usr/Main/x86_64-suse-linux-gnu/debug2/theCompiler/docs --silent RpcServer make[1]: Verzeichnis „/home/dev1usr/Project/NHI1/theConfig/c“ wird betreten make[1]: Verzeichnis „/dev/shm/dev1usr/Main/x86_64-suse-linux-gnu/debug2/theCompiler/docs“ wird verlassen Nhi1Make -v -no-j -predir /home/dev1usr/Project/NHI1/theConfig/c --silent RpcClient ~/Project/NHI1/theCompiler/docs ~/Project/NHI1/theConfig/c ~/Project/NHI1/theConfig/c > make --no-builtin-rules --no-builtin-variables -C /dev/shm/dev1usr/Main/x86_64-suse-linux-gnu/debug2/theCompiler/docs --silent RpcClient make[1]: Verzeichnis „/home/dev1usr/Project/NHI1/theConfig/c“ wird betreten make[1]: Verzeichnis „/dev/shm/dev1usr/Main/x86_64-suse-linux-gnu/debug2/theCompiler/docs“ wird verlassen ==================================================================================================0 make[1]: Warnung: Kein Jobserver verfügbar: -j1 wird gesetzt. Fügen Sie der Ursprungsregel „+“ hinzu. make[1]: *** Keine Regel, um „MqC“ zu erstellen. Schluss. make[1]: Warnung: Kein Jobserver verfügbar: -j1 wird gesetzt. Fügen Sie der Ursprungsregel „+“ hinzu. make[1]: *** Keine Regel, um „RpcServer“ zu erstellen. Schluss. make[1]: Warnung: Kein Jobserver verfügbar: -j1 wird gesetzt. Fügen Sie der Ursprungsregel „+“ hinzu. make[1]: *** Keine Regel, um „RpcClient“ zu erstellen. Schluss. +++ [ BuildNhi1 : jobId=BuildNhi1:doD:lc:c : jobs= 1 : sec= 0 : pid=19139 ] JOB START +++ [ BuildNhi1 : jobId=BuildNhi1:doD:lc:c : jobs= 1 : sec= 0 : pid=19139 ] JOB START caller=proc_lib_and_lng Nhi1Make -v -no-j -predir /home/dev1usr/Project/NHI1/theConfig/c --silent DOC DOCARGS= ~/Project/NHI1/theCompiler/docs ~/Project/NHI1/theConfig/c ~/Project/NHI1/theConfig/c > make --no-builtin-rules --no-builtin-variables -C /dev/shm/dev1usr/Main/x86_64-suse-linux-gnu/debug2/theCompiler/docs --silent DOC DOCARGS= make[1]: Verzeichnis „/home/dev1usr/Project/NHI1/theConfig/c“ wird betreten make[1]: Verzeichnis „/dev/shm/dev1usr/Main/x86_64-suse-linux-gnu/debug2/theCompiler/docs“ wird verlassen ==================================================================================================0 make[1]: Warnung: Kein Jobserver verfügbar: -j1 wird gesetzt. Fügen Sie der Ursprungsregel „+“ hinzu. make[1]: *** Keine Regel, um „DOC“ zu erstellen. Schluss. +++ [ BuildNhi1 : jobId=main : jobs= 0 : sec= 0 : pid=19099 ] FINISH