/******************************************************************************
** Copyright (c) 2012 MAK Technologies, Inc.
** All rights reserved.
******************************************************************************/

//! \file DtObserverModesRecord.h
//! \brief Contains makArchives::DtObserverModesRecord class.
//! \ingroup makArchives

#pragma once

#include <makArchives/DtObserverModeRecord.h>

#include <list>


namespace makArchives
{
   //! \brief DtObserverModesRecord is the serializable record used to
   //! read and write a list of Visual Mode Records
   //! \ingroup makArchives
   class DT_DLL_MAKARCHIVES DtObserverModesRecord
   {
   public:
      // A list of visual mode records
      typedef std::list<DtObserverModeRecord> ObserverModeRecords;      

      //! \brief CTOR
      DtObserverModesRecord();
      
      //! \brief Copy constructor
      DtObserverModesRecord( const DtObserverModesRecord& orig );
      
      //! \brief DTOR
      virtual ~DtObserverModesRecord();  
      
      //! \brief Assignment operator
      DtObserverModesRecord& operator=( const DtObserverModesRecord& orig );
      
      const ObserverModeRecords& observerModes() const;
      
      void addObserverMode( const DtObserverModeRecord& observerMode );
        
   protected:
      friend class boost::serialization::access;
      
      template <typename Archive>
      void serialize(Archive& ar,unsigned int version)
      {
         ar & BOOST_SERIALIZATION_NVP(myObserverModes);
      }
      
   protected:
      // A vector, by ObserverMode, of ModelSetLists
      ObserverModeRecords myObserverModes;
   };
}
