// p≡p API C data types mapping
|
|
|
|
// Copyleft (c) 2019, p≡p foundation
|
|
// this file is under GNU General Public License 3.0
|
|
// see LICENSE.txt
|
|
|
|
// written by Volker Birk
|
|
|
|
|
|
template "*", mode=name {
|
|
param "abbr", "false()";
|
|
if ".!=/*" {
|
|
apply "..", 0, mode=name;
|
|
if "@name!='basic' and @name != string(../@name)"
|
|
> _
|
|
}
|
|
if "@name!='basic' and @name != string(../@name)"
|
|
> «@name»
|
|
}
|
|
|
|
function "name" {
|
|
param "abbr", "false()";
|
|
apply ".", mode=name with "abbr", "$abbr";
|
|
}
|
|
|
|
def "func:name" {
|
|
param "abbr", "false()";
|
|
result call "name" with "abbr", "$abbr";
|
|
}
|
|
|
|
def "func:basetype" {
|
|
param "type";
|
|
const "definition", "//type[@name=$type]";
|
|
choose {
|
|
when "$definition/extends"
|
|
result "func:c-type($definition/extends/@type)";
|
|
otherwise
|
|
result "func:c-type($type)";
|
|
}
|
|
}
|
|
|
|
def "func:c-type" {
|
|
param "dsltype";
|
|
choose {
|
|
// base types
|
|
when "$dsltype = 'string'"
|
|
result > char *
|
|
when "$dsltype = 'binary'"
|
|
result > char *
|
|
when "$dsltype = 'int'"
|
|
result > int
|
|
when "$dsltype = 'unsigned'"
|
|
result > unsigned int
|
|
when "$dsltype = 'size_t'"
|
|
result > size_t
|
|
when "$dsltype = 'bool'"
|
|
result > bool
|
|
|
|
// basic type definitions
|
|
when "/package/package[@name='basic']/type[@name=$dsltype]"
|
|
result > «$dsltype»
|
|
|
|
// other
|
|
otherwise
|
|
result call "name" with "abbr", "$dsltype";
|
|
}
|
|
}
|
|
|