replace SPDX identifier GPL-2.0+ with GPL-2.0-or-later.
[metze/wireshark/wip.git] / ui / qt / utils / field_information.h
1 /* field_information.h
2  *
3  * Wireshark - Network traffic analyzer
4  * By Gerald Combs <gerald@wireshark.org>
5  * Copyright 1998 Gerald Combs
6  *
7  * SPDX-License-Identifier: GPL-2.0-or-later
8  */
9
10 #ifndef FIELD_INFORMATION_H_
11 #define FIELD_INFORMATION_H_
12
13 #include <config.h>
14
15 #include <epan/proto.h>
16
17 #include "data_printer.h"
18
19 #include <QObject>
20
21 class FieldInformation : public QObject, public IDataPrintable
22 {
23     Q_OBJECT
24     Q_INTERFACES(IDataPrintable)
25
26 public:
27
28     struct HeaderInfo
29     {
30         QString name;
31         QString description;
32         QString abbreviation;
33         bool isValid;
34         enum ftenum type;
35         int parent;
36         int id;
37     };
38
39     struct Position
40     {
41         int start;
42         int length;
43     };
44
45     explicit FieldInformation(field_info * fi, QObject * parent = Q_NULLPTR);
46     explicit FieldInformation(proto_node * node, QObject * parent = Q_NULLPTR);
47
48     bool isValid() const;
49     bool isLink() const ;
50
51     field_info * fieldInfo() const;
52
53     HeaderInfo headerInfo() const;
54     Position position() const;
55     Position appendix() const;
56
57     void setParentField(field_info * fi);
58     int treeType();
59     FieldInformation * parentField() const;
60     bool tvbContains(FieldInformation *);
61     unsigned flag(unsigned mask);
62     const QString moduleName();
63     QString url();
64
65     const QByteArray printableData();
66
67 private:
68
69     field_info * fi_;
70     field_info * parent_fi_;
71 };
72
73
74 #endif // FIELD_INFORMATION_H_
75
76 /*
77  * Editor modelines
78  *
79  * Local Variables:
80  * c-basic-offset: 4
81  * tab-width: 8
82  * indent-tabs-mode: nil
83  * End:
84  *
85  * ex: set shiftwidth=4 tabstop=8 expandtab:
86  * :indentSize=4:tabSize=8:noTabs=true:
87  */