20 #ifndef GAIA_POINTLAYOUT_H 21 #define GAIA_POINTLAYOUT_H 23 #include <QSharedData> 24 #include <QDataStream> 26 #include "descriptortree.h" 27 #include "descriptor.h" 32 typedef QMap<Enum, QString> EnumMap;
33 typedef QMap<QString, Enum> ReverseEnumMap;
48 QMap<QString, EnumMap> enum2str;
49 QMap<QString, ReverseEnumMap> str2enum;
78 Region descriptorLocation(
const QString& name)
const;
84 Region descriptorLocation(
const QStringList& names)
const;
94 QStringList descriptorNames()
const;
99 QStringList descriptorNames(
const Region& region)
const;
105 QStringList descriptorNames(
const QStringList& patterns)
const;
113 QStringList descriptorNames(
DescriptorType type,
const QString& pattern)
const;
125 const QStringList& patterns = QStringList(
"*"),
126 bool failOnUnmatched =
true)
const;
136 QString enumToString(
const QString& name,
const Enum& value)
const;
148 Enum stringToEnum(
const QString& name,
const QString& str)
const;
154 bool isEmpty()
const {
return _d->tree->isLeaf(); }
166 void add(
const QString& nodeName,
DescriptorType type = UndefinedType,
174 void add(
const QString& parentName,
const QString& childName,
182 void remove(
const QString& name);
188 void remove(
const QStringList& names);
196 void fixLength(
const QString& name,
int size);
202 void fixLength(
const QList<QPair<QString, int> >& descs);
209 void enumerate(
const QString& name);
222 QStringList symmetricDifferenceWith(
const PointLayout& layout)
const;
229 QStringList differenceWith(
const PointLayout& layout)
const;
242 bool canMorphInto(
const PointLayout& targetLayout)
const;
258 void filter(
const QStringList& select,
const QStringList& exclude);
267 QString toYaml()
const;
272 QString fullName(
const QString& name)
const;
280 Region correspondingRegion()
const;
294 bool sameObjectAs(
const PointLayout& layout)
const;
296 bool sameEnumMap(
const PointLayout& layout,
const QString& enumName)
const;
301 int ref()
const {
return _d->ref; }
303 friend QDataStream& operator<<(QDataStream& out,
const PointLayout& layout);
304 friend QDataStream& operator>>(QDataStream& in,
PointLayout& layout);
308 QExplicitlySharedDataPointer<PointLayoutData> _d;
313 void addNoUpdate(
const QString& parentName,
const QString& childName,
317 void addNoUpdateFromRoot(
const QString& parentName,
const QString& childName,
321 void removeNoUpdate(
const QString& name);
323 void update() { _d->tree->updateLayout(); }
329 #endif // GAIA_POINTLAYOUT_H
A region is a physical location in the point layout which consists in a list of segments.
Definition: region.h:125
PointLayout mergeLayouts(const PointLayout &layout1, const PointLayout &layout2)
Merges two PointLayouts together, provided that they don't overlap.
Definition: utils.cpp:351
This class describes the layout of a point.
Definition: pointlayout.h:60
Definition: descriptortree.h:37
DescriptorLengthType
Either fixed-length or variable-length.
Definition: region.h:46
Main Gaia namespace, which contains all the library functions.
Definition: addfield.cpp:22
Definition: pointlayout.h:35
bool isEmpty() const
Returns true when this layout is the empty layout (eg: just contains a root node without children)...
Definition: pointlayout.h:154
DescriptorType
The possible types of descriptors accepted.
Definition: region.h:36
int ref() const
Reserved for internal testing.
Definition: pointlayout.h:301