// Change History:

#include "ddp/ddp_descr.h"

DDP_Descr::DDP_Descr(const DDP_Descr & rhs)
{
    SetCaption(rhs.GetCaption());
    SetShort(rhs.GetShort());
    SetID(rhs.GetID());
}
//--------------------------------------------------------------------------

DDP_DescrCollection::DDP_DescrCollection(const DDP_DescrCollection &rhs)
{
    uint i, cnt = rhs.GetCount();
    for(i = 0; i < cnt; ++i)
        {
        DDP_Descr * descr = rhs.CreateObject(i);
        if(descr)
            coll.push_back(descr);
        }
}
//--------------------------------------------------------------------------

const DDP_Descr * DDP_DescrCollection::Get(const byte * str) const
{
    uint i, cnt = GetCount();
    for(i = 0; i < cnt; ++i)
        {
        const DDP_Descr * descr = Get(i);
        if(*descr == str)
            return descr;
        }
        
return NULL;
}
//--------------------------------------------------------------------------

bool DDP_DescrCollection::Add(const byte * caption, const byte * sshort,
        const byte * id)
{
    DDP_Descr * descr = CreateObject();
    if(!descr)
        return false;
    descr->SetCaption(caption);
    descr->SetShort(sshort);
    descr->SetID(id);
    
    coll.push_back(descr);
    
return true;
}
//--------------------------------------------------------------------------

bool DDP_DescrCollection::Add(const DDP_Descr * descr)
{
    if(!descr)
        return false;
return Add(descr->GetCaption(), descr->GetShort(), descr->GetID());
}
//--------------------------------------------------------------------------

bool DDP_DescrCollection::Add(const DRS_Descriptor * descr)
{
    if(!descr)
        return false;
return Add((const byte *)descr->Caption, (const byte *)descr->Descr, (const byte *)descr->ID);
}
//--------------------------------------------------------------------------

void DDP_DescrCollection::Clear()
{
    uint i, cnt = GetCount();
    for(i = 0; i < cnt; ++i)
        {
        DDP_Descr * descr = (DDP_Descr *)Get(i);
        delete descr;
        }
    coll.clear();
}

//--------------------------------------------------------------------------
//eof

