1// Warnings.h
2
3#include "Warnings.h"
4
5#include <stdio.h>
6
7// constructor
8Warnings::Warnings()
9		: fWarnings()
10{
11}
12
13// destructor
14Warnings::~Warnings()
15{
16	for (int32 i = 0; BString* warning = (BString*)fWarnings.ItemAt(i); i++)
17		delete warning;
18}
19
20// GetCurrentWarnings
21Warnings*
22Warnings::GetCurrentWarnings()
23{
24	return fCurrentWarnings;
25}
26
27// SetCurrentWarnings
28void
29Warnings::SetCurrentWarnings(Warnings* warnings)
30{
31	fCurrentWarnings = warnings;
32}
33
34// AddWarning
35void
36Warnings::AddWarning(BString warning)
37{
38	fWarnings.AddItem(new BString(warning));
39}
40
41// AddWarning
42void
43Warnings::AddWarning(const char* format,...)
44{
45	va_list args;
46	va_start(args, format);
47	AddWarningV(format, args);
48	va_end(args);
49}
50
51// AddWarningV
52void
53Warnings::AddWarningV(const char* format, va_list arg)
54{
55	char buffer[2048];
56	vsprintf(buffer, format, arg);
57	AddWarning(BString(buffer));
58}
59
60// AddCurrentWarning
61void
62Warnings::AddCurrentWarning(BString warning)
63{
64	if (Warnings* currentWarnings = GetCurrentWarnings())
65		currentWarnings->AddWarning(warning);
66}
67
68// AddCurrentWarning
69void
70Warnings::AddCurrentWarning(const char* format,...)
71{
72	va_list args;
73	va_start(args, format);
74	AddCurrentWarningV(format, args);
75	va_end(args);
76}
77
78// AddCurrentWarningV
79void
80Warnings::AddCurrentWarningV(const char* format, va_list arg)
81{
82	char buffer[2048];
83	vsprintf(buffer, format, arg);
84	AddCurrentWarning(BString(buffer));
85}
86
87// CountWarnings
88int32
89Warnings::CountWarnings() const
90{
91	return fWarnings.CountItems();
92}
93
94// WarningAt
95const char*
96Warnings::WarningAt(int32 index) const
97{
98	const char* result = NULL;
99	if (BString* warning = (BString*)fWarnings.ItemAt(index))
100		result = warning->String();
101	return result;
102}
103
104// fCurrentWarnings
105Warnings* Warnings::fCurrentWarnings = NULL;
106
107