plcopen/variables_infos.ysl2
changeset 1361 7158aa054226
parent 1359 cce13b237b07
child 1368 e567e4bee11f
equal deleted inserted replaced
1360:ebfe9c22af2a 1361:7158aa054226
    30                 copy "document('extensions')/extensions/*";
    30                 copy "document('extensions')/extensions/*";
    31             }
    31             }
    32         }
    32         }
    33     }
    33     }
    34     
    34     
       
    35     template "ppx:configuration" {
       
    36         apply "ppx:globalVars";
       
    37     }
       
    38     
       
    39     template "ppx:resource" {
       
    40         apply "ppx:globalVars";
       
    41     }
       
    42     
       
    43     template "ppx:pou" {
       
    44         apply "ppx:interface/*";
       
    45     }
       
    46     
    35     template "ppx:returnType" {
    47     template "ppx:returnType" {
    36         value "ns:AddTree()";
    48         value "ns:AddTree()";
    37         apply;
    49         apply ".", mode="var_type";
    38     }
    50     }
    39     
    51     
    40     function "variables_infos" {
    52     function "variables_infos" {
    41         param "var_class";
    53         param "var_class";
    42         variable "var_option" {
    54         variable "var_option" {
    57                         apply "ppx:type", mode="var_edit";
    69                         apply "ppx:type", mode="var_edit";
    58                     }
    70                     }
    59                 }
    71                 }
    60             }
    72             }
    61             value "ns:AddTree()";
    73             value "ns:AddTree()";
    62             apply "ppx:type";
    74             apply "ppx:type", mode="var_type";
    63             value "ns:AddVariable(@name, $var_class, $var_option, @address, $initial_value, $edit, ppx:documentation/xhtml:p/text())";
    75             value "ns:AddVariable(@name, $var_class, $var_option, @address, $initial_value, $edit, ppx:documentation/xhtml:p/text())";
    64         }
    76         }
    65     }
    77     }
    66     
    78     
    67     template "ppx:localVars" {
    79     template "ppx:localVars" {
   104         call "variables_infos" {
   116         call "variables_infos" {
   105             with "var_class" > InOut
   117             with "var_class" > InOut
   106         }
   118         }
   107     }
   119     }
   108     
   120     
   109     template "ppx:pou" {
   121     template "ppx:pou", mode="var_type" {
   110         apply "ppx:interface/*[self::ppx:inputVars or self::ppx:inOutVars or self::ppx:outputVars]/ppx:variable";
   122         apply "ppx:interface/*[self::ppx:inputVars or self::ppx:inOutVars or self::ppx:outputVars]/ppx:variable", mode="var_type";
   111     }
   123     }
   112     
   124     
   113     template "ppx:variable" {
   125     template "ppx:variable", mode="var_type" {
   114         variable "name" > «@name»
   126         variable "name" > «@name»
   115         value "ns:AddTree($name)";
   127         value "ns:AddTree($name)";
   116         apply "ppx:type";
   128         apply "ppx:type", mode="var_type";
   117         value "ns:AddVarToTree($name)";
   129         value "ns:AddVarToTree($name)";
   118     }
   130     }
   119     
   131     
   120     template "ppx:dataType" {
   132     template "ppx:dataType", mode="var_type" {
   121         apply "ppx:baseType";
   133         apply "ppx:baseType", mode="var_type";
   122     }
   134     }
   123     
   135     
   124     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:struct" {
   136     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:struct", mode="var_type" {
   125         apply "ppx:variable";
   137         apply "ppx:variable", mode="var_type";
   126     }
   138     }
   127     
   139     
   128     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:derived" {
   140     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:derived", mode="var_type" {
   129         variable "type_name" > «@name»
   141         variable "type_name" > «@name»
   130         choose {
   142         choose {
   131             when "$tree='True'" {
   143             when "$tree='True'" {
   132                 apply """exsl:node-set($project)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
   144                 apply """exsl:node-set($project)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
   133                          exsl:node-set($project)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name] |
   145                          exsl:node-set($project)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name] |
   134                          exsl:node-set($stdlib)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
   146                          exsl:node-set($stdlib)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
   135                          exsl:node-set($stdlib)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name] |
   147                          exsl:node-set($stdlib)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name] |
   136                          exsl:node-set($extensions)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
   148                          exsl:node-set($extensions)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
   137                          exsl:node-set($extensions)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name]""";
   149                          exsl:node-set($extensions)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name]""", mode="var_type";
   138             }
   150             }
   139         }
   151         }
   140         value "ns:SetType($type_name)";
   152         value "ns:SetType($type_name)";
   141     }
   153     }
   142      
   154      
   143     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:array" {
   155     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:array", mode="var_type" {
   144         apply "ppx:baseType";
   156         apply "ppx:baseType", mode="var_type";
   145         foreach "ppx:dimension" {
   157         foreach "ppx:dimension" {
   146             value "ns:AddDimension(@lower, @upper)";
   158             value "ns:AddDimension(@lower, @upper)";
   147         }
   159         }
   148     }
   160     }
   149     
   161     
   150     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:string" {
   162     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:string", mode="var_type" {
   151         variable "name" > STRING
   163         variable "name" > STRING
   152         value "ns:SetType($name)";
   164         value "ns:SetType($name)";
   153     }
   165     }
   154     
   166     
   155     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:wstring" {
   167     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:wstring", mode="var_type" {
   156         variable "name" > WSTRING
   168         variable "name" > WSTRING
   157         value "ns:SetType($name)";
   169         value "ns:SetType($name)";
   158     }
   170     }
   159     
   171     
   160     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/*" {
   172     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/*", mode="var_type" {
   161         variable "name" > «local-name()»
   173         variable "name" > «local-name()»
   162         value "ns:SetType($name)";
   174         value "ns:SetType($name)";
   163     }
   175     }
   164     
   176     
   165     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:derived", mode="var_edit" {
   177     template "*[self::ppx:type or self::ppx:baseType or self::ppx:returnType]/ppx:derived", mode="var_edit" {