RMF
keys.h
Go to the documentation of this file.
1 /**
2  * \file RMF/keys.h
3  * \brief Declarations of the various key types.
4  *
5  * Copyright 2007-2022 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef RMF_KEYS_H
10 #define RMF_KEYS_H
11 
12 #include "RMF/config.h"
13 #include "ID.h"
14 #include "traits.h"
15 #include "infrastructure_macros.h"
16 
17 RMF_ENABLE_WARNINGS
18 
19 namespace RMF {
20 
21 #define RMF_DECLARE_KEY(TT, UCName) \
22  /** Identify a value stored for a node. */ \
23  typedef ID<UCName##Tag> UCName##Key; \
24  /** A list of identifiers. */ \
25  typedef std::vector<UCName##Key> UCName##Keys;
26 
27 /** \name Key types
28  RMF files support storing a variety of different types of data. These
29  include
30  - IntKey: store an arbitrary integer as a 64 bit integer
31  - FloatKey: store an arbitrary floating point number as a `float`
32  - StringKey: store an arbitrary length string
33  - IndexKey: store non-negative indexes as 64 bit integers
34  - NodeIDKey: store the ID of a node in the hierarchy
35  - NodeIDsKey: store a list of NodeIDs
36  - DataSetKey: store a reference to an HDF5 data set via the path to the
37  data set
38  - IntsKey: store a list of arbitrary integers
39  @{
40  */
41 RMF_FOREACH_TYPE(RMF_DECLARE_KEY);
42 /** @} */
43 
44 } /* namespace RMF */
45 
46 RMF_DISABLE_WARNINGS
47 
48 #endif /* RMF_KEYS_H */
Declaration of RMF::ID.
Handle read/write of Model data from/to files.
#define RMF_FOREACH_TYPE(macroname)
Various general useful macros for IMP.