root/src/kits/debugger/settings/generic/SettingsDescription.cpp
/*
 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */


#include "SettingsDescription.h"

#include "Setting.h"


SettingsDescription::SettingsDescription()
{
}


SettingsDescription::~SettingsDescription()
{
        for (int32 i = 0; Setting* setting = SettingAt(i); i++)
                setting->ReleaseReference();
}


int32
SettingsDescription::CountSettings() const
{
        return fSettings.CountItems();
}


Setting*
SettingsDescription::SettingAt(int32 index) const
{
        return fSettings.ItemAt(index);
}


Setting*
SettingsDescription::SettingByID(const char* id) const
{
        for (int32 i = 0; Setting* setting = fSettings.ItemAt(i); i++) {
                if (strcmp(setting->ID(), id) == 0)
                        return setting;
        }

        return NULL;
}


bool
SettingsDescription::AddSetting(Setting* setting)
{
        if (!fSettings.AddItem(setting))
                return false;

        setting->AcquireReference();
        return true;
}