IMP  2.2.0
The Integrative Modeling Platform
kernel/base_types.h
Go to the documentation of this file.
1 /**
2  * \file IMP/kernel/base_types.h \brief Basic types used by IMP.
3  *
4  * Copyright 2007-2014 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/kernel_config.h>
12 #include "Key.h"
13 #include <IMP/base/object_macros.h>
14 #include <IMP/base/value_macros.h>
15 #include <IMP/base/Vector.h>
16 #include <IMP/base/Pointer.h>
17 #include <IMP/base/WeakPointer.h>
18 #include <IMP/base/types.h>
19 #include <IMP/base/Array.h>
20 #include <IMP/base/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
34 
35 //! The type used to identify int attributes in the Particles
38 
39 //! The type used to identify string attributes in the Particles
42 
43 //! The type used to identify a particle attribute in the Particles
46 
47 //! The type used to identify an Object attribute
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
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.
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 identifying
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 */
Basic types used by IMP.
A shared container for Triplets.
base::Array< 3, base::WeakPointer< Particle >, Particle * > ParticleTriplet
Key< 6, true > ParticleIndexesKey
The type used to identify a particle attribute in the Particles.
Abstract score function.
A base class for modifiers of kernel::ParticleTripletsTemp.
A shared container for Quads.
Key< 9, true > WeakObjectKey
The type used to identify a non-ref counted Object attribute.
Key< 1, true > IntKey
The type used to identify int attributes in the Particles.
A nullptr-initialized pointer to an IMP Object.
Classes to handle static sized arrays of things.
Shared optimizer state that is invoked upon commitment of new coordinates.
Object used to hold a set of restraints.
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values.
base::Array< 4, base::WeakPointer< Particle >, Particle * > ParticleQuad
Abstract predicate function.
A shared container for Pairs.
Basic types used by IMP.
base::Array< 2, base::WeakPointer< Particle >, Particle * > ParticlePair
ScoreStates maintian invariants in the Model.
A base class for modifiers of kernel::ParticlesTemp.
Abstract predicate function.
A class to store an fixed array of same-typed values.
Definition: base/Array.h:33
Abstract score function.
Abstract class for containers of particles.
Key< 3, true > ParticleIndexKey
The type used to identify a particle attribute in the Particles.
A restraint is a term in an IMP ScoringFunction.
Key< 5, true > IntsKey
The type used to identify int attributes in the Particles.
A class for storing lists of IMP items.
Key< 7, true > ObjectsKey
The type used to identify a particle attribute in the Particles.
Abstract predicate function.
Class to handle individual model particles.
Abstract predicate function.
A nullptr-initialized pointer to an Object.
#define IMP_OBJECTS(Name, PluralName)
Define the types for storing sets of objects.
base::Index< ParticleIndexTag > ParticleIndex
Key< 4, true > ObjectKey
The type used to identify an Object attribute.
Abstract score function.
Various general useful macros for IMP.
Various general useful macros for IMP.
Keys to cache lookup of attribute strings.
A base class for modifiers of kernel::ParticleQuadsTemp.
Abstract score function.
Key< 2, true > StringKey
The type used to identify string attributes in the Particles.
Key< 8, true > ModelKey
The type used to identify data stored directly in the model.
A shared container for Singletons.
A base class for modifiers of kernel::ParticlePairsTemp.
Key< 0, true > FloatKey
The type used to identify float attributes in the Particles.
Class for storing model, its restraints, constraints, and particles.
Definition: kernel/Model.h:72