1/*
2 * Copyright 2008, Haiku.
3 * Distributed under the terms of the MIT license.
4 *
5 * Authors:
6 *		Michael Pfeiffer <laplace@users.sourceforge.net>
7 */
8
9#include "StatementList.h"
10#include "Statement.h"
11
12#include <stdio.h>
13
14StatementList::StatementList(bool ownsStatements)
15	: fOwnsStatements(ownsStatements)
16{
17}
18
19StatementList::~StatementList()
20{
21	if (fOwnsStatements) {
22		for (int32 i = 0; i < Size(); i ++) {
23			Statement* statement = StatementAt(i);
24			delete statement;
25		}
26	}
27	fList.MakeEmpty();
28}
29
30void StatementList::Add(Statement* statement)
31{
32	fList.AddItem(statement);
33}
34
35void StatementList::Remove(Statement* statement)
36{
37	fList.RemoveItem(statement);
38}
39
40int32 StatementList::Size()
41{
42	return fList.CountItems();
43}
44
45Statement* StatementList::StatementAt(int32 index)
46{
47	return (Statement*)fList.ItemAt(index);
48}
49
50Statement* StatementList::GetStatement(const char* keyword)
51{
52	for (int32 i = 0; i < fList.CountItems(); i ++) {
53		if (strcmp(keyword, StatementAt(i)->GetKeywordString()) == 0) {
54			return StatementAt(i);
55		}
56	}
57	return NULL;
58}
59
60const char* StatementList::GetValue(const char* keyword)
61{
62	Statement* statement = GetStatement(keyword);
63	if (statement != NULL) {
64		return statement->GetValueString();
65	}
66	return NULL;
67}
68
69void StatementList::Print()
70{
71	for (int32 i = 0; i < Size(); i ++) {
72		StatementAt(i)->Print();
73	}
74}
75