]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/wx-console/wxbtableparser.h
- wxbMainFrame : the user is now prompted when an
[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 "wxbutils.h"
49
50 #include <wx/hashmap.h>
51
52 /* int-indexed array of wxString, used for one line */
53 WX_DECLARE_HASH_MAP( int, wxString, wxIntegerHash, wxIntegerEqual, wxbTableRow );
54 /* int-indexed array of wxbTableRow, contains the whole table */
55 WX_DECLARE_HASH_MAP( int, wxbTableRow, wxIntegerHash, wxIntegerEqual, wxbTable );
56
57 /*
58  * Class used to parse tables received from director. Data can be accessed with
59  * the operator [].
60  *
61  * Example : wxString elem = parser[3][2]; fetches column 2 of element 3.
62  */
63 class wxbTableParser: public wxbTable, public wxbDataParser
64 {
65    public:
66       wxbTableParser();
67       virtual ~wxbTableParser();
68
69       /*
70        *   Receives data to analyse.
71        */
72       virtual bool Analyse(wxString str, int status);
73
74       /*
75        *   Return true table parsing has finished.
76        */
77       bool hasFinished();
78
79       /*
80        *   Returns table header as an array of wxStrings.
81        */
82       wxbTableRow* GetHeader();
83    private:
84       wxbTableRow tableHeader;
85
86       /*
87        * 0 - Table has not begun
88        * 1 - first +--+ line obtained, header will follow
89        * 2 - second +--+ line obtained, data will follow
90        * 3 - last +--+ line obtained, table parsing has finished
91        */
92       int separatorNum;
93 };
94
95 #endif // WXBTABLEPARSER_H
96