xref: /haiku/src/tests/add-ons/print/ppd/model/StatementList.cpp (revision 21258e2674226d6aa732321b6f8494841895af5f)
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 
14 StatementList::StatementList(bool ownsStatements)
15 	: fOwnsStatements(ownsStatements)
16 {
17 }
18 
19 StatementList::~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 
30 void StatementList::Add(Statement* statement)
31 {
32 	fList.AddItem(statement);
33 }
34 
35 void StatementList::Remove(Statement* statement)
36 {
37 	fList.RemoveItem(statement);
38 }
39 
40 int32 StatementList::Size()
41 {
42 	return fList.CountItems();
43 }
44 
45 Statement* StatementList::StatementAt(int32 index)
46 {
47 	return (Statement*)fList.ItemAt(index);
48 }
49 
50 Statement* 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 
60 const 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 
69 void StatementList::Print()
70 {
71 	for (int32 i = 0; i < Size(); i ++) {
72 		StatementAt(i)->Print();
73 	}
74 }
75