// Copyright (c) 2005-2014 Code Synthesis Tools CC
//
// This program was generated by CodeSynthesis XSD, an XML Schema to
// C++ data binding compiler.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
// In addition, as a special exception, Code Synthesis Tools CC gives
// permission to link this program with the Xerces-C++ library (or with
// modified versions of Xerces-C++ that use the same license as Xerces-C++),
// and distribute linked combinations including the two. You must obey
// the GNU General Public License version 2 in all respects for all of
// the code used other than Xerces-C++. If you modify this copy of the
// program, you may extend this exception to your version of the program,
// but you are not obligated to do so. If you do not wish to do so, delete
// this exception statement from your version.
//
// Furthermore, Code Synthesis Tools CC makes a special exception for
// the Free/Libre and Open Source Software (FLOSS) which is described
// in the accompanying FLOSSE file.
//

// Begin prologue.
//
//
// End prologue.

#include <xsd/cxx/pre.hxx>

#include "SimController_ZoneControlTemperature_ThermostatStagedDual.hxx"

#include "doublelist.hxx"

namespace schema
{
  namespace simxml
  {
    namespace MepModel
    {
      // SimController_ZoneControlTemperature_ThermostatStagedDual
      // 

      const SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_NumOfHeatStages_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_NumOfHeatStages () const
      {
        return this->SimCntrl_NumOfHeatStages_;
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_NumOfHeatStages_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_NumOfHeatStages ()
      {
        return this->SimCntrl_NumOfHeatStages_;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_NumOfHeatStages (const SimCntrl_NumOfHeatStages_type& x)
      {
        this->SimCntrl_NumOfHeatStages_.set (x);
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_NumOfHeatStages (const SimCntrl_NumOfHeatStages_optional& x)
      {
        this->SimCntrl_NumOfHeatStages_ = x;
      }

      const SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_HeatTempSetptSchedName_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_HeatTempSetptSchedName () const
      {
        return this->SimCntrl_HeatTempSetptSchedName_;
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_HeatTempSetptSchedName_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_HeatTempSetptSchedName ()
      {
        return this->SimCntrl_HeatTempSetptSchedName_;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_HeatTempSetptSchedName (const SimCntrl_HeatTempSetptSchedName_type& x)
      {
        this->SimCntrl_HeatTempSetptSchedName_.set (x);
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_HeatTempSetptSchedName (const SimCntrl_HeatTempSetptSchedName_optional& x)
      {
        this->SimCntrl_HeatTempSetptSchedName_ = x;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_HeatTempSetptSchedName (::std::auto_ptr< SimCntrl_HeatTempSetptSchedName_type > x)
      {
        this->SimCntrl_HeatTempSetptSchedName_.set (x);
      }

      const SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_HeatThrotTempRange_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_HeatThrotTempRange () const
      {
        return this->SimCntrl_HeatThrotTempRange_;
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_HeatThrotTempRange_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_HeatThrotTempRange ()
      {
        return this->SimCntrl_HeatThrotTempRange_;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_HeatThrotTempRange (const SimCntrl_HeatThrotTempRange_type& x)
      {
        this->SimCntrl_HeatThrotTempRange_.set (x);
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_HeatThrotTempRange (const SimCntrl_HeatThrotTempRange_optional& x)
      {
        this->SimCntrl_HeatThrotTempRange_ = x;
      }

      const SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_Stage_1_4_HeatTempOffset_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_Stage_1_4_HeatTempOffset () const
      {
        return this->SimCntrl_Stage_1_4_HeatTempOffset_;
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_Stage_1_4_HeatTempOffset_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_Stage_1_4_HeatTempOffset ()
      {
        return this->SimCntrl_Stage_1_4_HeatTempOffset_;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_Stage_1_4_HeatTempOffset (const SimCntrl_Stage_1_4_HeatTempOffset_type& x)
      {
        this->SimCntrl_Stage_1_4_HeatTempOffset_.set (x);
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_Stage_1_4_HeatTempOffset (const SimCntrl_Stage_1_4_HeatTempOffset_optional& x)
      {
        this->SimCntrl_Stage_1_4_HeatTempOffset_ = x;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_Stage_1_4_HeatTempOffset (::std::auto_ptr< SimCntrl_Stage_1_4_HeatTempOffset_type > x)
      {
        this->SimCntrl_Stage_1_4_HeatTempOffset_.set (x);
      }

      const SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_NumofCoolStages_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_NumofCoolStages () const
      {
        return this->SimCntrl_NumofCoolStages_;
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_NumofCoolStages_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_NumofCoolStages ()
      {
        return this->SimCntrl_NumofCoolStages_;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_NumofCoolStages (const SimCntrl_NumofCoolStages_type& x)
      {
        this->SimCntrl_NumofCoolStages_.set (x);
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_NumofCoolStages (const SimCntrl_NumofCoolStages_optional& x)
      {
        this->SimCntrl_NumofCoolStages_ = x;
      }

      const SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_CoolTempSetptBaseSchedName_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_CoolTempSetptBaseSchedName () const
      {
        return this->SimCntrl_CoolTempSetptBaseSchedName_;
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_CoolTempSetptBaseSchedName_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_CoolTempSetptBaseSchedName ()
      {
        return this->SimCntrl_CoolTempSetptBaseSchedName_;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_CoolTempSetptBaseSchedName (const SimCntrl_CoolTempSetptBaseSchedName_type& x)
      {
        this->SimCntrl_CoolTempSetptBaseSchedName_.set (x);
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_CoolTempSetptBaseSchedName (const SimCntrl_CoolTempSetptBaseSchedName_optional& x)
      {
        this->SimCntrl_CoolTempSetptBaseSchedName_ = x;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_CoolTempSetptBaseSchedName (::std::auto_ptr< SimCntrl_CoolTempSetptBaseSchedName_type > x)
      {
        this->SimCntrl_CoolTempSetptBaseSchedName_.set (x);
      }

      const SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_CoolThrotTempRange_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_CoolThrotTempRange () const
      {
        return this->SimCntrl_CoolThrotTempRange_;
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_CoolThrotTempRange_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_CoolThrotTempRange ()
      {
        return this->SimCntrl_CoolThrotTempRange_;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_CoolThrotTempRange (const SimCntrl_CoolThrotTempRange_type& x)
      {
        this->SimCntrl_CoolThrotTempRange_.set (x);
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_CoolThrotTempRange (const SimCntrl_CoolThrotTempRange_optional& x)
      {
        this->SimCntrl_CoolThrotTempRange_ = x;
      }

      const SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_Stage_1_4_CoolTempOffset_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_Stage_1_4_CoolTempOffset () const
      {
        return this->SimCntrl_Stage_1_4_CoolTempOffset_;
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::SimCntrl_Stage_1_4_CoolTempOffset_optional& SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_Stage_1_4_CoolTempOffset ()
      {
        return this->SimCntrl_Stage_1_4_CoolTempOffset_;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_Stage_1_4_CoolTempOffset (const SimCntrl_Stage_1_4_CoolTempOffset_type& x)
      {
        this->SimCntrl_Stage_1_4_CoolTempOffset_.set (x);
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_Stage_1_4_CoolTempOffset (const SimCntrl_Stage_1_4_CoolTempOffset_optional& x)
      {
        this->SimCntrl_Stage_1_4_CoolTempOffset_ = x;
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimCntrl_Stage_1_4_CoolTempOffset (::std::auto_ptr< SimCntrl_Stage_1_4_CoolTempOffset_type > x)
      {
        this->SimCntrl_Stage_1_4_CoolTempOffset_.set (x);
      }
    }
  }
}

#include <xsd/cxx/xml/dom/parsing-source.hxx>

#include <xsd/cxx/tree/type-factory-map.hxx>

namespace _xsd
{
  static
  const ::xsd::cxx::tree::type_factory_plate< 0, char >
  type_factory_plate_init;
}

namespace schema
{
  namespace simxml
  {
    namespace MepModel
    {
      // SimController_ZoneControlTemperature_ThermostatStagedDual
      //

      SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimController_ZoneControlTemperature_ThermostatStagedDual ()
      : ::schema::simxml::MepModel::SimController_ZoneControlTemperature (),
        SimCntrl_NumOfHeatStages_ (this),
        SimCntrl_HeatTempSetptSchedName_ (this),
        SimCntrl_HeatThrotTempRange_ (this),
        SimCntrl_Stage_1_4_HeatTempOffset_ (this),
        SimCntrl_NumofCoolStages_ (this),
        SimCntrl_CoolTempSetptBaseSchedName_ (this),
        SimCntrl_CoolThrotTempRange_ (this),
        SimCntrl_Stage_1_4_CoolTempOffset_ (this)
      {
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimController_ZoneControlTemperature_ThermostatStagedDual (const RefId_type& RefId)
      : ::schema::simxml::MepModel::SimController_ZoneControlTemperature (RefId),
        SimCntrl_NumOfHeatStages_ (this),
        SimCntrl_HeatTempSetptSchedName_ (this),
        SimCntrl_HeatThrotTempRange_ (this),
        SimCntrl_Stage_1_4_HeatTempOffset_ (this),
        SimCntrl_NumofCoolStages_ (this),
        SimCntrl_CoolTempSetptBaseSchedName_ (this),
        SimCntrl_CoolThrotTempRange_ (this),
        SimCntrl_Stage_1_4_CoolTempOffset_ (this)
      {
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimController_ZoneControlTemperature_ThermostatStagedDual (const SimController_ZoneControlTemperature_ThermostatStagedDual& x,
                                                                 ::xml_schema::flags f,
                                                                 ::xml_schema::container* c)
      : ::schema::simxml::MepModel::SimController_ZoneControlTemperature (x, f, c),
        SimCntrl_NumOfHeatStages_ (x.SimCntrl_NumOfHeatStages_, f, this),
        SimCntrl_HeatTempSetptSchedName_ (x.SimCntrl_HeatTempSetptSchedName_, f, this),
        SimCntrl_HeatThrotTempRange_ (x.SimCntrl_HeatThrotTempRange_, f, this),
        SimCntrl_Stage_1_4_HeatTempOffset_ (x.SimCntrl_Stage_1_4_HeatTempOffset_, f, this),
        SimCntrl_NumofCoolStages_ (x.SimCntrl_NumofCoolStages_, f, this),
        SimCntrl_CoolTempSetptBaseSchedName_ (x.SimCntrl_CoolTempSetptBaseSchedName_, f, this),
        SimCntrl_CoolThrotTempRange_ (x.SimCntrl_CoolThrotTempRange_, f, this),
        SimCntrl_Stage_1_4_CoolTempOffset_ (x.SimCntrl_Stage_1_4_CoolTempOffset_, f, this)
      {
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::
      SimController_ZoneControlTemperature_ThermostatStagedDual (const ::xercesc::DOMElement& e,
                                                                 ::xml_schema::flags f,
                                                                 ::xml_schema::container* c)
      : ::schema::simxml::MepModel::SimController_ZoneControlTemperature (e, f | ::xml_schema::flags::base, c),
        SimCntrl_NumOfHeatStages_ (this),
        SimCntrl_HeatTempSetptSchedName_ (this),
        SimCntrl_HeatThrotTempRange_ (this),
        SimCntrl_Stage_1_4_HeatTempOffset_ (this),
        SimCntrl_NumofCoolStages_ (this),
        SimCntrl_CoolTempSetptBaseSchedName_ (this),
        SimCntrl_CoolThrotTempRange_ (this),
        SimCntrl_Stage_1_4_CoolTempOffset_ (this)
      {
        if ((f & ::xml_schema::flags::base) == 0)
        {
          ::xsd::cxx::xml::dom::parser< char > p (e, true, false, true);
          this->parse (p, f);
        }
      }

      void SimController_ZoneControlTemperature_ThermostatStagedDual::
      parse (::xsd::cxx::xml::dom::parser< char >& p,
             ::xml_schema::flags f)
      {
        this->::schema::simxml::MepModel::SimController_ZoneControlTemperature::parse (p, f);

        for (; p.more_content (); p.next_content (false))
        {
          const ::xercesc::DOMElement& i (p.cur_element ());
          const ::xsd::cxx::xml::qualified_name< char > n (
            ::xsd::cxx::xml::dom::name< char > (i));

          // SimCntrl_NumOfHeatStages
          //
          if (n.name () == "SimCntrl_NumOfHeatStages" && n.namespace_ () == "http://d-alchemy.com/schema/simxml/MepModel")
          {
            if (!this->SimCntrl_NumOfHeatStages_)
            {
              this->SimCntrl_NumOfHeatStages_.set (SimCntrl_NumOfHeatStages_traits::create (i, f, this));
              continue;
            }
          }

          // SimCntrl_HeatTempSetptSchedName
          //
          if (n.name () == "SimCntrl_HeatTempSetptSchedName" && n.namespace_ () == "http://d-alchemy.com/schema/simxml/MepModel")
          {
            ::std::auto_ptr< SimCntrl_HeatTempSetptSchedName_type > r (
              SimCntrl_HeatTempSetptSchedName_traits::create (i, f, this));

            if (!this->SimCntrl_HeatTempSetptSchedName_)
            {
              this->SimCntrl_HeatTempSetptSchedName_.set (r);
              continue;
            }
          }

          // SimCntrl_HeatThrotTempRange
          //
          if (n.name () == "SimCntrl_HeatThrotTempRange" && n.namespace_ () == "http://d-alchemy.com/schema/simxml/MepModel")
          {
            if (!this->SimCntrl_HeatThrotTempRange_)
            {
              this->SimCntrl_HeatThrotTempRange_.set (SimCntrl_HeatThrotTempRange_traits::create (i, f, this));
              continue;
            }
          }

          // SimCntrl_Stage_1_4_HeatTempOffset
          //
          if (n.name () == "SimCntrl_Stage_1_4_HeatTempOffset" && n.namespace_ () == "http://d-alchemy.com/schema/simxml/MepModel")
          {
            ::std::auto_ptr< SimCntrl_Stage_1_4_HeatTempOffset_type > r (
              SimCntrl_Stage_1_4_HeatTempOffset_traits::create (i, f, this));

            if (!this->SimCntrl_Stage_1_4_HeatTempOffset_)
            {
              this->SimCntrl_Stage_1_4_HeatTempOffset_.set (r);
              continue;
            }
          }

          // SimCntrl_NumofCoolStages
          //
          if (n.name () == "SimCntrl_NumofCoolStages" && n.namespace_ () == "http://d-alchemy.com/schema/simxml/MepModel")
          {
            if (!this->SimCntrl_NumofCoolStages_)
            {
              this->SimCntrl_NumofCoolStages_.set (SimCntrl_NumofCoolStages_traits::create (i, f, this));
              continue;
            }
          }

          // SimCntrl_CoolTempSetptBaseSchedName
          //
          if (n.name () == "SimCntrl_CoolTempSetptBaseSchedName" && n.namespace_ () == "http://d-alchemy.com/schema/simxml/MepModel")
          {
            ::std::auto_ptr< SimCntrl_CoolTempSetptBaseSchedName_type > r (
              SimCntrl_CoolTempSetptBaseSchedName_traits::create (i, f, this));

            if (!this->SimCntrl_CoolTempSetptBaseSchedName_)
            {
              this->SimCntrl_CoolTempSetptBaseSchedName_.set (r);
              continue;
            }
          }

          // SimCntrl_CoolThrotTempRange
          //
          if (n.name () == "SimCntrl_CoolThrotTempRange" && n.namespace_ () == "http://d-alchemy.com/schema/simxml/MepModel")
          {
            if (!this->SimCntrl_CoolThrotTempRange_)
            {
              this->SimCntrl_CoolThrotTempRange_.set (SimCntrl_CoolThrotTempRange_traits::create (i, f, this));
              continue;
            }
          }

          // SimCntrl_Stage_1_4_CoolTempOffset
          //
          if (n.name () == "SimCntrl_Stage_1_4_CoolTempOffset" && n.namespace_ () == "http://d-alchemy.com/schema/simxml/MepModel")
          {
            ::std::auto_ptr< SimCntrl_Stage_1_4_CoolTempOffset_type > r (
              SimCntrl_Stage_1_4_CoolTempOffset_traits::create (i, f, this));

            if (!this->SimCntrl_Stage_1_4_CoolTempOffset_)
            {
              this->SimCntrl_Stage_1_4_CoolTempOffset_.set (r);
              continue;
            }
          }

          break;
        }
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual* SimController_ZoneControlTemperature_ThermostatStagedDual::
      _clone (::xml_schema::flags f,
              ::xml_schema::container* c) const
      {
        return new class SimController_ZoneControlTemperature_ThermostatStagedDual (*this, f, c);
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual& SimController_ZoneControlTemperature_ThermostatStagedDual::
      operator= (const SimController_ZoneControlTemperature_ThermostatStagedDual& x)
      {
        if (this != &x)
        {
          static_cast< ::schema::simxml::MepModel::SimController_ZoneControlTemperature& > (*this) = x;
          this->SimCntrl_NumOfHeatStages_ = x.SimCntrl_NumOfHeatStages_;
          this->SimCntrl_HeatTempSetptSchedName_ = x.SimCntrl_HeatTempSetptSchedName_;
          this->SimCntrl_HeatThrotTempRange_ = x.SimCntrl_HeatThrotTempRange_;
          this->SimCntrl_Stage_1_4_HeatTempOffset_ = x.SimCntrl_Stage_1_4_HeatTempOffset_;
          this->SimCntrl_NumofCoolStages_ = x.SimCntrl_NumofCoolStages_;
          this->SimCntrl_CoolTempSetptBaseSchedName_ = x.SimCntrl_CoolTempSetptBaseSchedName_;
          this->SimCntrl_CoolThrotTempRange_ = x.SimCntrl_CoolThrotTempRange_;
          this->SimCntrl_Stage_1_4_CoolTempOffset_ = x.SimCntrl_Stage_1_4_CoolTempOffset_;
        }

        return *this;
      }

      SimController_ZoneControlTemperature_ThermostatStagedDual::
      ~SimController_ZoneControlTemperature_ThermostatStagedDual ()
      {
      }
    }
  }
}

#include <istream>
#include <xsd/cxx/xml/sax/std-input-source.hxx>
#include <xsd/cxx/tree/error-handler.hxx>

namespace schema
{
  namespace simxml
  {
    namespace MepModel
    {
    }
  }
}

#include <xsd/cxx/post.hxx>

// Begin epilogue.
//
//
// End epilogue.

