// Auto-generated PLCopen types - pou category
// DO NOT EDIT - Generated by build script

use serde::{Serialize, Deserialize};
use super::*;

/// Root_project_InlineType_types_InlineType_pous_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_Inline {
    /// pou element
    #[serde(rename = "pou", default)]
    pub pou: Vec<Root_project_InlineType_types_InlineType_pous_InlineType_pou_Inline>,
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_Inline {
    /// name attribute
    #[serde(rename = "@name", default)]
    pub name: String,
    /// pouType attribute
    #[serde(rename = "@pouType", default)]
    pub pou_type: String,
    /// globalId attribute
    #[serde(rename = "@globalId", default)]
    pub global_id: Option<String>,
    /// interface element
    #[serde(rename = "interface", default)]
    pub interface: Option<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_Inline>,
    /// actions element
    #[serde(rename = "actions", default)]
    pub actions: Option<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_actions_Inline>,
    /// transitions element
    #[serde(rename = "transitions", default)]
    pub transitions: Option<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_transitions_Inline>,
    /// body element
    #[serde(rename = "body", default)]
    pub body: Vec<Body>,
    /// addData element
    #[serde(rename = "addData", default)]
    pub add_data: Option<AddData>,
    /// documentation element
    #[serde(rename = "documentation", default)]
    pub documentation: Option<FormattedText>,
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_Inline {
    /// returnType element
    #[serde(rename = "returnType", default)]
    pub return_type: Option<Data>,
    /// localVars element
    #[serde(rename = "localVars", default)]
    pub local_vars: Vec<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_localVars_Inline>,
    /// tempVars element
    #[serde(rename = "tempVars", default)]
    pub temp_vars: Vec<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_tempVars_Inline>,
    /// inputVars element
    #[serde(rename = "inputVars", default)]
    pub input_vars: Vec<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_inputVars_Inline>,
    /// outputVars element
    #[serde(rename = "outputVars", default)]
    pub output_vars: Vec<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_outputVars_Inline>,
    /// inOutVars element
    #[serde(rename = "inOutVars", default)]
    pub in_out_vars: Vec<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_inOutVars_Inline>,
    /// externalVars element
    #[serde(rename = "externalVars", default)]
    pub external_vars: Vec<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_externalVars_Inline>,
    /// globalVars element
    #[serde(rename = "globalVars", default)]
    pub global_vars: Vec<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_globalVars_Inline>,
    /// accessVars element
    #[serde(rename = "accessVars", default)]
    pub access_vars: Vec<VarList>,
    /// addData element
    #[serde(rename = "addData", default)]
    pub add_data: Option<AddData>,
    /// documentation element
    #[serde(rename = "documentation", default)]
    pub documentation: Option<FormattedText>,
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_localVars_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_localVars_Inline {
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_tempVars_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_tempVars_Inline {
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_inputVars_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_inputVars_Inline {
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_outputVars_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_outputVars_Inline {
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_inOutVars_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_inOutVars_Inline {
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_externalVars_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_externalVars_Inline {
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_globalVars_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_interface_InlineType_globalVars_Inline {
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_actions_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_actions_Inline {
    /// action element
    #[serde(rename = "action", default)]
    pub action: Vec<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_actions_InlineType_action_Inline>,
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_actions_InlineType_action_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_actions_InlineType_action_Inline {
    /// name attribute
    #[serde(rename = "@name", default)]
    pub name: String,
    /// globalId attribute
    #[serde(rename = "@globalId", default)]
    pub global_id: Option<String>,
    /// body element
    #[serde(rename = "body", default)]
    pub body: Option<Body>,
    /// addData element
    #[serde(rename = "addData", default)]
    pub add_data: Option<AddData>,
    /// documentation element
    #[serde(rename = "documentation", default)]
    pub documentation: Option<FormattedText>,
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_transitions_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_transitions_Inline {
    /// transition element
    #[serde(rename = "transition", default)]
    pub transition: Vec<Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_transitions_InlineType_transition_Inline>,
}

/// Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_transitions_InlineType_transition_InlineType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Root_project_InlineType_types_InlineType_pous_InlineType_pou_InlineType_transitions_InlineType_transition_Inline {
    /// name attribute
    #[serde(rename = "@name", default)]
    pub name: String,
    /// globalId attribute
    #[serde(rename = "@globalId", default)]
    pub global_id: Option<String>,
    /// body element
    #[serde(rename = "body", default)]
    pub body: Option<Body>,
    /// addData element
    #[serde(rename = "addData", default)]
    pub add_data: Option<AddData>,
    /// documentation element
    #[serde(rename = "documentation", default)]
    pub documentation: Option<FormattedText>,
}

/// pouInstance element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct PouInstance {
    /// name attribute
    #[serde(rename = "@name", default)]
    pub name: String,
    /// typeName attribute
    #[serde(rename = "@typeName", default)]
    pub type_name: String,
    /// globalId attribute
    #[serde(rename = "@globalId", default)]
    pub global_id: Option<String>,
    /// addData element
    #[serde(rename = "addData", default)]
    pub add_data: Option<AddData>,
    /// documentation element
    #[serde(rename = "documentation", default)]
    pub documentation: Option<FormattedText>,
}

