IMP logo
IMP Reference Guide  develop.e1fe35f,2019/09/16
The Integrative Modeling Platform
base_types.h
Go to the documentation of this file.
1 /**
2  * \file IMP/base_types.h \brief Basic types used by IMP.
3  *
4  * Copyright 2007-2019 IMP Inventors. All rights reserved.
5  *
6  */
7 
8 #ifndef IMPKERNEL_BASE_TYPES_H
9 #define IMPKERNEL_BASE_TYPES_H
10 
11 #include <IMP/kernel_config.h>
12 #include "Key.h"
13 #include <IMP/object_macros.h>
14 #include <IMP/value_macros.h>
15 #include <IMP/Vector.h>
16 #include <IMP/Pointer.h>
17 #include <IMP/WeakPointer.h>
18 #include <IMP/types.h>
19 #include <IMP/Array.h>
20 #include <IMP/Index.h>
21 
22 IMPKERNEL_BEGIN_NAMESPACE
23 
24 /** @name Attribute Keys
25  Each type of attribute has an associated type of key. The keys can
26  be constructed from a string. Such construction can be expensive
27  and so the resulting keys should be cached.
28  @{
29  */
30 
31 //! The type used to identify float attributes in the Particles
32 typedef Key<0> FloatKey;
34 
35 //! The type used to identify int attributes in the Particles
36 typedef Key<1> IntKey;
38 
39 //! The type used to identify string attributes in the Particles
40 typedef Key<2> StringKey;
42 
43 //! The type used to identify a particle attribute in the Particles
46 
47 //! The type used to identify an Object attribute
48 typedef Key<4> ObjectKey;
50 
51 //! The type used to identify a non-ref counted Object attribute
54 
55 //! The type used to identify int attributes in the Particles
56 typedef Key<5> IntsKey;
58 
59 //! The type used to identify a particle attribute in the Particles
62 
63 #ifndef IMP_DOXYGEN
64 // for backwards compat, no way to provide a warning on this
65 typedef ParticleIndexesKey ParticlesKey;
66 typedef ParticleIndexKey ParticleKey;
67 #endif
68 
69 //! The type used to identify a particle attribute in the Particles
72 
73 //! The type used to identify data stored directly in the model.
74 typedef Key<8> ModelKey;
76 
77 /** @} */
78 
79 class Restraint;
84 
85 class Model;
89 class ScoreState;
93 class Container;
95 class Particle;
109 
112 class PairScore;
116 class QuadScore;
118 
127 
136 
137 /** An ordered pair of particles.*/
140 /** An ordered triplet of particles.*/
143 /** An ordered quad of particles.*/
146 
147 class ParticleIndexTag {};
148 /** A unique identifier for a particle within a Model. Use it to identify
149  particles when getting and setting attributes and constructing decorators.
150 
151  See for example, \ref model_attributes "Model attributes", Decorator, and
152  Model::get_particle().
153 */
156 
160 
164 
165 IMPKERNEL_END_NAMESPACE
166 
167 #endif /* IMPKERNEL_BASE_TYPES_H */
A base class for modifiers of ParticlesTemp.
Abstract class for scoring object(s) of type ParticleIndexPair.
Definition: PairScore.h:37
A shared container for Pairs.
Definition: PairContainer.h:37
Various general useful macros for IMP.
Basic types used by IMP.
Abstract predicate function.
Definition: QuadPredicate.h:31
Key< 0 > FloatKey
The type used to identify float attributes in the Particles.
Definition: base_types.h:32
Basic types used by IMP.
A class to store an fixed array of same-typed values.
Definition: Array.h:33
Array< 4, WeakPointer< Particle >, Particle * > ParticleQuad
Definition: base_types.h:144
Index< ParticleIndexTag > ParticleIndex
Definition: base_types.h:154
Keys to cache lookup of attribute strings.
Key< 6 > ParticleIndexesKey
The type used to identify a particle attribute in the Particles.
Definition: base_types.h:60
Array< 3, WeakPointer< Particle >, Particle * > ParticleTriplet
Definition: base_types.h:141
Classes to handle static sized arrays of things.
A base class for modifiers of ParticlePairsTemp.
Definition: PairModifier.h:32
Object used to hold a set of restraints.
Definition: RestraintSet.h:36
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:72
Key< 2 > StringKey
The type used to identify string attributes in the Particles.
Definition: base_types.h:40
Abstract class for scoring object(s) of type ParticleIndexQuad.
Definition: QuadScore.h:37
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values.
Definition: value_macros.h:23
Abstract predicate function.
Key< 3 > ParticleIndexKey
The type used to identify a particle attribute in the Particles.
Definition: base_types.h:44
Abstract class for scoring object(s) of type ParticleIndex.
ScoreStates maintain invariants in the Model.
Definition: ScoreState.h:53
Key< 1 > IntKey
The type used to identify int attributes in the Particles.
Definition: base_types.h:36
A shared container for Quads.
Definition: QuadContainer.h:37
A nullptr-initialized pointer to an Object.
A shared container for Singletons.
A class for storing lists of IMP items.
Key< 9 > WeakObjectKey
The type used to identify a non-ref counted Object attribute.
Definition: base_types.h:52
Key< 4 > ObjectKey
The type used to identify an Object attribute.
Definition: base_types.h:48
Key< 7 > ObjectsKey
The type used to identify a particle attribute in the Particles.
Definition: base_types.h:70
#define IMP_OBJECTS(Name, PluralName)
Define the types for storing lists of object pointers.
Definition: object_macros.h:44
A nullptr-initialized pointer to an IMP Object.
Abstract predicate function.
Definition: PairPredicate.h:31
Represents a scoring function on the model.
Array< 2, WeakPointer< Particle >, Particle * > ParticlePair
Definition: base_types.h:135
Key< 5 > IntsKey
The type used to identify int attributes in the Particles.
Definition: base_types.h:56
Shared optimizer state that is invoked upon commitment of new coordinates.
Abstract predicate function.
Class to handle individual particles of a Model object.
Definition: Particle.h:41
A base class for modifiers of ParticleTripletsTemp.
Various general useful macros for IMP.
Key< 8 > ModelKey
The type used to identify data stored directly in the model.
Definition: base_types.h:74
A base class for modifiers of ParticleQuadsTemp.
Definition: QuadModifier.h:32
A shared container for Triplets.
Abstract class for scoring object(s) of type ParticleIndexTriplet.
Definition: TripletScore.h:37
Abstract class for containers of particles.
A restraint is a term in an IMP ScoringFunction.
Definition: Restraint.h:54