edouard@1936: include yslt_noindent.yml2 edouard@1936: istylesheet xmlns:ppx="http://www.plcopen.org/xml/tc6_0201" Laurent@1348: xmlns:xhtml="http://www.w3.org/1999/xhtml" edouard@1943: xmlns:ns="beremiz" Laurent@1348: extension-element-prefixes="ns" Laurent@1348: exclude-result-prefixes="ns" { Laurent@1348: Laurent@1348: template "text()"; Laurent@1348: template "text()", mode="var_class"; Laurent@1348: template "text()", mode="var_type"; Laurent@1348: template "text()", mode="var_edit"; Laurent@1348: template "text()", mode="var_debug"; Laurent@1348: edouard@1943: variable "project", "ns:GetProject()"; edouard@1943: edouard@1943: variable "stdlib", "ns:GetStdLibs()"; edouard@1943: edouard@1943: variable "extensions", "ns:GetExtensions()"; edouard@1945: Edouard@1949: variable "all_types", "($project | $stdlib | $extensions)/ppx:types"; Laurent@1348: Laurent@1348: function "add_root" { Laurent@1348: param "class"; Laurent@1348: param "type"; Laurent@1348: param "edit" > true Laurent@1348: param "debug" > true Laurent@1348: value "ns:SetRoot($class, $type, $edit, $debug)"; Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:pou" { Laurent@1348: call "add_root" { Laurent@1348: with "class" > «@pouType» Laurent@1348: with "type" > «@name» Laurent@1348: } Laurent@1348: apply "ppx:interface"; Laurent@1348: apply "ppx:actions/ppx:action | ppx:transitions/ppx:transition", mode="variable_list"; Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:action" { Laurent@1348: call "add_root" { Laurent@1348: with "class" > action Laurent@1348: } Laurent@1348: apply "ancestor::ppx:pou/child::ppx:interface"; Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:transition" { Laurent@1348: call "add_root" { Laurent@1348: with "class" > transition Laurent@1348: } Laurent@1348: apply "ancestor::ppx:pou/child::ppx:interface"; Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:configuration" { Laurent@1348: call "add_root" { Laurent@1348: with "class" > configuration Laurent@1348: with "debug" > false Laurent@1348: } Laurent@1348: apply "ppx:resource", mode="variable_list"; Laurent@1348: apply "ppx:globalVars"; Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:resource" { Laurent@1348: call "add_root" { Laurent@1348: with "class" > resource Laurent@1348: with "debug" > false Laurent@1348: } Laurent@1348: apply "ppx:pouInstance | ppx:task/ppx:pouInstance", mode="variable_list"; Laurent@1348: apply "ppx:globalVars"; Laurent@1348: } Laurent@1348: Laurent@1348: function "variables_infos" { Laurent@1348: param "var_class"; Laurent@1348: foreach "ppx:variable" { Laurent@1348: variable "class" { Laurent@1348: apply "ppx:type", mode="var_class" { Laurent@1348: with "default_class" > «$var_class» Laurent@1348: } Laurent@1348: } Laurent@1348: variable "type" { Laurent@1348: apply"ppx:type", mode="var_type"; Laurent@1348: } Laurent@1348: variable "edit" { Laurent@1348: apply "ppx:type", mode="var_edit"; Laurent@1348: } Laurent@1348: variable "debug" { Laurent@1348: apply "ppx:type", mode="var_debug"; Laurent@1348: } Laurent@1348: value "ns:AddVariable(@name, $class, $type, $edit, $debug)"; Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:localVars" { Laurent@1348: call "variables_infos" { Laurent@1348: with "var_class" > Local Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:globalVars" { Laurent@1348: call "variables_infos" { Laurent@1348: with "var_class" > Global Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:externalVars" { Laurent@1348: call "variables_infos" { Laurent@1348: with "var_class" > External Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:tempVars" { Laurent@1348: call "variables_infos" { Laurent@1348: with "var_class" > Temp Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:inputVars" { Laurent@1348: call "variables_infos" { Laurent@1348: with "var_class" > Input Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:outputVars" { Laurent@1348: call "variables_infos" { Laurent@1348: with "var_class" > Output Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:inOutVars" { Laurent@1348: call "variables_infos" { Laurent@1348: with "var_class" > InOut Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: function "add_variable" { Laurent@1348: param "name"; Laurent@1348: param "class"; Laurent@1348: param "type"; Laurent@1348: param "edit" > true Laurent@1348: param "debug" > true Laurent@1348: value "ns:AddVariable($name, $class, $type, $edit, $debug)"; Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:action", mode="variable_list" { Laurent@1348: call "add_variable" { Laurent@1348: with "name" > «@name» Laurent@1348: with "class" > action Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:transition", mode="variable_list" { Laurent@1348: call "add_variable" { Laurent@1348: with "name" > «@name» Laurent@1348: with "class" > transition Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:resource", mode="variable_list" { Laurent@1348: call "add_variable" { Laurent@1348: with "name" > «@name» Laurent@1348: with "class" > resource Laurent@1348: with "debug" > false Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:pouInstance", mode="variable_list" { Laurent@1348: call "add_variable" { Laurent@1348: with "name" > «@name» Laurent@1348: with "class" > program Laurent@1348: with "type" > «@typeName» Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/ppx:derived", mode="var_class" { Laurent@1348: param "default_class"; Laurent@1348: variable "type_name", "@name"; Edouard@1949: variable "pou_infos", "$all_types/ppx:pous/ppx:pou[@name=$type_name]"; Laurent@1348: choose { edouard@1943: when "$pou_infos" { edouard@1943: apply "$pou_infos", mode="var_class"; Laurent@1348: } Laurent@1348: otherwise { Laurent@1348: value "$default_class" Laurent@1348: } Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:pou", mode="var_class" { Laurent@1348: value "@pouType"; Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/*" mode="var_class" { Laurent@1348: param "default_class"; Laurent@1348: value "$default_class"; Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/ppx:derived", mode="var_type" { Laurent@1348: > «@name» Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/ppx:array", mode="var_type" { Laurent@1348: > ARRAY [ Laurent@1348: foreach "ppx:dimension" { Laurent@1348: > «@lower»..«@upper» Laurent@1348: } Laurent@1348: > ] OF Laurent@1348: apply "ppx:baseType", mode="var_type"; Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/ppx:string", mode="var_type" { Laurent@1348: > STRING Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/ppx:wstring", mode="var_type" { Laurent@1348: > WSTRING Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/*", mode="var_type" { Laurent@1348: > «local-name()» Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/ppx:derived", mode="var_edit" { Laurent@1348: variable "type_name", "@name"; edouard@1945: variable "pou_infos", "$project/ppx:types/ppx:pous/ppx:pou[@name=$type_name]"; Laurent@1348: choose { edouard@1943: when "$pou_infos" > true Laurent@1348: otherwise > false Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/ppx:array", mode="var_edit" { Laurent@1348: apply "ppx:baseType", mode="var_edit"; Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/*", mode="var_edit" { Laurent@1348: > false Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/ppx:derived", mode="var_debug" { Laurent@1348: variable "type_name", "@name"; edouard@1946: variable "datatype_infos", """ \ edouard@1946: $project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] | \ Edouard@1949: $all_types/ppx:dataTypes/ppx:dataType[@name=$type_name] \ edouard@1945: """; Laurent@1348: choose { edouard@1945: when "$datatype_infos" { edouard@1943: apply "$datatype_infos", mode="var_debug"; Laurent@1348: } Laurent@1348: otherwise > false Laurent@1348: } Laurent@1348: } Laurent@1348: Laurent@1348: template "ppx:pou", mode="var_debug" { Laurent@1348: > true Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/ppx:array", mode="var_debug" { Laurent@1348: > false Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/ppx:struct", mode="var_debug" { Laurent@1348: > false Laurent@1348: } Laurent@1348: Laurent@1348: template "*[self::ppx:type or self::ppx:baseType]/*", mode="var_debug" { Laurent@1348: > true Laurent@1348: } Laurent@1348: Laurent@1348: }