//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / IE
//
//File: broadbandbearercapability.cpp
//
//Version: $Revision: 1.5 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/10 15:01:35 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//
//Description:
//      See corresponding header file.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#include "broadbandbearercapability.h"
#include "pf/error.h"

ieBroadbandBearerCapability :: ieBroadbandBearerCapability(pfUlong class_)
    : ieInformationElement(),
      _bearerClass(class_),
      _trafficType(0),
      _timing(0),
      _susceptibility(0),
      _userPlane(0),
      _trafficTypeSet(false),
      _timingSet(false),
      _susceptibilitySet(false),
      _userPlaneSet(false)
{
    return;
}

ieBroadbandBearerCapability :: ieBroadbandBearerCapability(
    const ieBroadbandBearerCapability &other_)
    : _bearerClass(other_._bearerClass),
      _trafficType(other_._trafficType),
      _timing(other_._timing),
      _susceptibility(other_._susceptibility),
      _userPlane(other_._userPlane),
      _trafficTypeSet(other_._trafficTypeSet),
      _timingSet(other_._timingSet),
      _susceptibilitySet(other_._susceptibilitySet),
      _userPlaneSet(other_._userPlaneSet)
{
    return;
}

ieBroadbandBearerCapability :: ~ieBroadbandBearerCapability(void)
{
    return;
}

const ieBroadbandBearerCapability &ieBroadbandBearerCapability :: operator=(
    const ieBroadbandBearerCapability &other_)
{
    if (&other_ != this)
    {
        _bearerClass = other_._bearerClass;
        _trafficType = other_._trafficType;
        _timing = other_._timing;
        _susceptibility = other_._susceptibility;
        _userPlane = other_._userPlane;
        _trafficTypeSet = other_._trafficTypeSet;
        _timingSet = other_._timingSet;
        _susceptibilitySet = other_._susceptibilitySet;
        _userPlaneSet = other_._userPlaneSet;
    }
    return *this;
}

pfIE *ieBroadbandBearerCapability :: clone(void) const
{
    ieBroadbandBearerCapability *newIe =
        new ieBroadbandBearerCapability(*this);
    return (pfIE *)newIe;
}

ieBroadbandBearerCapability* ieBroadbandBearerCapability :: narrow(pfIE *ie_)
{
    ieBroadbandBearerCapability *result =
        dynamic_cast<ieBroadbandBearerCapability*>(ie_);
    THROW_IF_DYNAMIC_CAST_FAILED(result);
    return result;
}

void ieBroadbandBearerCapability :: setBearerClass(pfUlong value_)
{
    _bearerClass = value_;
    return;
}

void ieBroadbandBearerCapability :: setTrafficType(pfUlong value_)
{
    _trafficType = value_;
    _trafficTypeSet = true;
    return;
}

void ieBroadbandBearerCapability :: setTimingRequirements(pfUlong value_)
{
    _timing = value_;
    _timingSet = true;
    return;
}

void ieBroadbandBearerCapability :: setSusceptibilityToClipping(pfUlong value_)
{
    _susceptibility = value_;
    _susceptibilitySet = true;
    return;
}

void ieBroadbandBearerCapability :: setUserPlaneConnectionConfiguration(
    pfUlong value_)
{
    _userPlane = value_;
    _userPlaneSet = true;
    return;
}

pfUlong ieBroadbandBearerCapability :: getBearerClass(void) const
{
    return _bearerClass;
}

pfUlong ieBroadbandBearerCapability :: getTrafficType(void) const
{
    return _trafficType;
}

pfUlong ieBroadbandBearerCapability :: getTimingRequirements(void) const
{
    return _timing;
}

pfUlong ieBroadbandBearerCapability :: getSusceptibilityToClipping(void) const
{
    return _susceptibility;
}

pfUlong ieBroadbandBearerCapability :: 
getUserPlaneConnectionConfiguration(void) const
{
    return _userPlane;
}

bool ieBroadbandBearerCapability :: isTrafficType(void) const
{
    return _trafficTypeSet;
}

bool ieBroadbandBearerCapability :: isTimingRequirements(void) const
{
    return _timingSet;
}

bool ieBroadbandBearerCapability :: isSusceptibilityToClipping(void) const
{
    return _susceptibilitySet;
}

bool ieBroadbandBearerCapability :: isUserPlaneConnectionConfiguration(void) const
{
    return _userPlaneSet;
}
