// This file is under GNU General Public License 3.0
|
|
// see LICENSE.txt
|
|
// generated files of this template are under BSD License 2.0
|
|
|
|
// generate message functions
|
|
|
|
// Copyleft (c) 2017-2020, p≡p foundation
|
|
|
|
// Written by Volker Birk
|
|
|
|
include yslt.yml2
|
|
|
|
tstylesheet {
|
|
include standardlib.ysl2
|
|
include ./functions.ysl2
|
|
|
|
function "pEp_imports"
|
|
| IMPORTS Version, Identity, IdentityList, TID, Hash, Rating FROM PEP
|
|
|
|
function "header"
|
|
||
|
|
-- This file is under BSD License 2.0
|
|
|
|
-- «@name» protocol for p≡p
|
|
-- Copyleft 2016-2020 by p≡p foundation
|
|
|
|
-- Written by Volker Birk
|
|
|
|
||
|
|
|
|
template "/" {
|
|
apply "protocol", 0, mode=overview;
|
|
apply "protocol/fsm", 0, mode=individual;
|
|
}
|
|
|
|
template "protocol", mode=overview
|
|
document "generated/{yml:lcase(@name)}.asn1", "text" {
|
|
|
|
call "header";
|
|
||
|
|
«yml:ucase(@name)»
|
|
{ iso(1) org(3) dod(6) internet(1) private(4) enterprise(1) pEp(47878) «yml:lcase(@name)»(«@id») }
|
|
|
|
DEFINITIONS AUTOMATIC TAGS EXTENSIBILITY IMPLIED ::=
|
|
|
|
BEGIN
|
|
|
|
IMPORTS
|
|
`` for "fsm" |> «@name» FROM «yml:ucase(@name)»
|
|
;
|
|
|
|
«@name» ::= CHOICE {
|
|
«yml:lcase(fsm[1]/@name)» [APPLICATION «fsm[1]/@id»] «fsm[1]/@name»`if "count(fsm)>1" > ,`
|
|
`` if "count(fsm)>1" |> ...,
|
|
`` for "fsm[position()>1]" |> «yml:lcase(@name)» [APPLICATION «@id»] «@name»`if "position()!=last()" > ,`
|
|
}
|
|
|
|
END
|
|
|
|
||
|
|
}
|
|
|
|
template "fsm", mode=individual
|
|
document "generated/{yml:lcase(@name)}.asn1", "text" {
|
|
|
|
call "header";
|
|
||
|
|
«yml:ucase(@name)»
|
|
{ iso(1) org(3) dod(6) internet(1) private(4) enterprise(1) pEp(47878) «yml:lcase(../@name)»(«../@id») «yml:lcase(@name)»(«@id») }
|
|
|
|
DEFINITIONS AUTOMATIC TAGS EXTENSIBILITY IMPLIED ::=
|
|
|
|
BEGIN
|
|
|
|
EXPORTS «@name»;
|
|
`` call "pEp_imports"
|
|
`` apply "message/embed", mode=import
|
|
;
|
|
|
|
`` apply "message//list|message", 0, mode=impl;
|
|
«@name» ::= CHOICE {
|
|
`` for "message" |> «yml:mixedCase(@name)» [APPLICATION «@id»] «@name»`if "position()!=last()" > ,`
|
|
}
|
|
|
|
END
|
|
|
|
||
|
|
}
|
|
|
|
template "message", mode=impl
|
|
||
|
|
«@name» ::= SEQUENCE {
|
|
`` apply "field|auto|list|embed", mode=direct
|
|
}
|
|
|
|
||
|
|
|
|
template "list", mode=impl
|
|
||
|
|
«@type» ::= SEQUENCE {
|
|
`` apply "field|auto|list", mode=direct
|
|
}
|
|
|
|
||
|
|
|
|
template "field|auto|embed", mode=direct
|
|
| «func:asn1name()» «func:asn1type()»`if "position()!=last()" > ,`
|
|
|
|
template "list", mode=direct
|
|
| «func:asn1name()» SEQUENCE OF «func:asn1type()»`if "position()!=last()" > ,`
|
|
|
|
template "embed", mode=import
|
|
| «@type» FROM «yml:ucase(@protocol)»
|
|
}
|
|
|