⛏️ index : haiku.git

/*
 * Copyright 2008, Haiku.
 * Distributed under the terms of the MIT license.
 *
 * Authors:
 *		Michael Pfeiffer <laplace@users.sourceforge.net>
 */

#include "StatementList.h"
#include "Statement.h"

#include <stdio.h>

StatementList::StatementList(bool ownsStatements)
	: fOwnsStatements(ownsStatements)
{
}

StatementList::~StatementList()
{
	if (fOwnsStatements) {
		for (int32 i = 0; i < Size(); i ++) {
			Statement* statement = StatementAt(i);
			delete statement;
		}
	}
	fList.MakeEmpty();
}

void StatementList::Add(Statement* statement)
{
	fList.AddItem(statement);
}

void StatementList::Remove(Statement* statement)
{
	fList.RemoveItem(statement);
}

int32 StatementList::Size()
{
	return fList.CountItems();
}

Statement* StatementList::StatementAt(int32 index)
{
	return (Statement*)fList.ItemAt(index);
}

Statement* StatementList::GetStatement(const char* keyword)
{
	for (int32 i = 0; i < fList.CountItems(); i ++) {
		if (strcmp(keyword, StatementAt(i)->GetKeywordString()) == 0) {
			return StatementAt(i);
		}
	}
	return NULL;
}

const char* StatementList::GetValue(const char* keyword)
{
	Statement* statement = GetStatement(keyword);
	if (statement != NULL) {
		return statement->GetValueString();
	}
	return NULL;
}

void StatementList::Print()
{
	for (int32 i = 0; i < Size(); i ++) {
		StatementAt(i)->Print();
	}	
}