]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/wx-console/wxbtableparser.h
Add wx-console directory
[bacula/bacula] / bacula / src / wx-console / wxbtableparser.h
1 /*
2  *
3  *   Class used to parse tables received from director in this format :
4  *
5  *  +---------+---------+-------------------+
6  *  | Header1 | Header2 | ...               |
7  *  +---------+---------+-------------------+
8  *  |  Data11 | Data12  | ...               |
9  *  |  ....   |  ...    | ...               |
10  *  +---------+---------+-------------------+
11  *
12  *    Nicolas Boichat, April 2004
13  *
14  */
15 /*
16    Copyright (C) 2004 Kern Sibbald and John Walker
17
18    This program is free software; you can redistribute it and/or
19    modify it under the terms of the GNU General Public License
20    as published by the Free Software Foundation; either version 2
21    of the License, or (at your option) any later version.
22
23    This program is distributed in the hope that it will be useful,
24    but WITHOUT ANY WARRANTY; without even the implied warranty of
25    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26    GNU General Public License for more details.
27
28    You should have received a copy of the GNU General Public License
29    along with this program; if not, write to the Free Software
30    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
31  */
32
33 #ifndef WXBTABLEPARSER_H
34 #define WXBTABLEPARSER_H
35
36 #include "wx/wxprec.h"
37
38 #ifdef __BORLANDC__
39    #pragma hdrstop
40 #endif
41
42 // for all others, include the necessary headers (this file is usually all you
43 // need because it includes almost all "standard" wxWindows headers)
44 #ifndef WX_PRECOMP
45    #include "wx/wx.h"
46 #endif
47
48 #include <wx/hashmap.h>
49
50 /* int-indexed array of wxString, used for one line */
51 WX_DECLARE_HASH_MAP( int, wxString, wxIntegerHash, wxIntegerEqual, wxbTableRow );
52 /* int-indexed array of wxbTableRow, contains the whole table */
53 WX_DECLARE_HASH_MAP( int, wxbTableRow, wxIntegerHash, wxIntegerEqual, wxbTable );
54
55 /*
56  * Class used to parse tables received from director. Data can be accessed with
57  * the operator [].
58  *
59  * Example : wxString elem = parser[3][2]; fetches column 2 of element 3.
60  */
61 class wxbTableParser: public wxbTable
62 {
63    public:
64       wxbTableParser();
65       ~wxbTableParser();
66
67       /*
68        *   Receives director information, forwarded by the wxbPanel which
69        *  uses this parser.
70        */
71       void Print(wxString str, int status);
72
73       /*
74        *   Return true table parsing has finished.
75        */
76       bool hasFinished();
77
78       /*
79        *   Returns table header as an array of wxStrings.
80        */
81       wxbTableRow* GetHeader();
82    private:
83       wxbTableRow tableHeader;
84
85       /*
86        * 0 - Table has not begun
87        * 1 - first +--+ line obtained, header will follow
88        * 2 - second +--+ line obtained, data will follow
89        * 3 - last +--+ line obtained, table parsing has finished
90        */
91       int separatorNum;
92 };
93
94 #endif // WXBTABLEPARSER_H
95