#ifndef _BIP_Engine_PortItf_HPP_
#define _BIP_Engine_PortItf_HPP_

#include <bip-engineiface-config.hpp>
using namespace bipbasetypes;
using namespace biptypes;

// referenced classes
class PortValue;


class PortItf {
 public:
  // destructor
  virtual ~PortItf();

  // getters for references
  virtual vector<PortValue *> &portValues() = 0;
  virtual const vector<PortValue *> &portValues() const = 0;
  virtual bool hasPortValues() const = 0;

  // getters for attributes
  const string &name() const { return mName; }
  const PortType &type() const { return mType; }

  // setters for references
  virtual void addPortValue(PortValue &portValue) = 0;
  virtual void clearPortValues() = 0;

 protected:
  // protected constructors
  PortItf(const string &name, const PortType &type);

  // attributes
  const string mName;
  const PortType mType;
};

#endif // _BIP_Engine_PortItf_HPP_
