//Editor-Info: -*- C++ -*-
//
//Subject: SCOMS project / 
//
//File: .h
//
//Version: $Revision: 1.2 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/08 11:05:15 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//
//Description:
//
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __PF_IECONTAINER_H__
#define __PF_IECONTAINER_H__

#include <typeinfo>
#include <string>
#include <map>
#include <autoptr.h>
#include "ie.h"

class pfIEcontainer
{
    public:
        pfIEcontainer(void);
        pfIEcontainer(const pfIEcontainer &other_);
        virtual ~pfIEcontainer(void);
        
        void setIE(const string name_, pfIE *value_);
        void setIE(const string name_, auto_ptr<pfIE> &value_);
        
        pfIE *getIE(const string &name_) const;
        pfIE *adoptIE(const string name_);
        
        void adoptAll(pfIEcontainer *other_);
        void copyAll(pfIEcontainer *other_);
        
        bool ieAvailable(const string &name_) const;
        
    private:
        typedef multimap<string, pfIE*, less<string> > iemapType;
        typedef iemapType::iterator ieIterType;
        typedef iemapType::const_iterator ieConstIterType;
        typedef iemapType::value_type ieValueType;
        
        iemapType _parameters;
};

#endif //  __PF_IECONTAINER_H__
