IMP  2.4.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-2015 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 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 */
Various general useful macros for IMP.
A shared container for Triplets.
base::Array< 3, base::WeakPointer< Particle >, Particle * > ParticleTriplet
Basic types used by IMP.
Key< 6, true > ParticleIndexesKey
The type used to identify a particle attribute in the Particles.
Abstract class for scoring object(s) of type ParticleQuad.
A base class for modifiers of kernel::ParticleTripletsTemp.
A shared container for Quads.
Basic types used by IMP.
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.
Shared optimizer state that is invoked upon commitment of new coordinates.
Object used to hold a set of restraints.
base::Array< 4, base::WeakPointer< Particle >, Particle * > ParticleQuad
Abstract predicate function.
A shared container for Pairs.
base::Array< 2, base::WeakPointer< Particle >, Particle * > ParticlePair
Represents a scoring function on the model.
ScoreStates maintain invariants in the Model.
Classes to handle static sized arrays of things.
A base class for modifiers of kernel::ParticlesTemp.
Abstract predicate function.
A class to store an fixed array of same-typed values.
Definition: Array.h:33
Abstract class for scoring object(s) of type ParticlePair.
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values.
Definition: value_macros.h:23
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 nullptr-initialized pointer to an Object.
Key< 7, true > ObjectsKey
The type used to identify a particle attribute in the Particles.
Abstract predicate function.
Class to handle individual model particles.
A class for storing lists of IMP items.
Abstract predicate function.
#define IMP_OBJECTS(Name, PluralName)
Define the types for storing sets of objects.
Definition: object_macros.h:52
A nullptr-initialized pointer to an IMP Object.
base::Index< ParticleIndexTag > ParticleIndex
Key< 4, true > ObjectKey
The type used to identify an Object attribute.
Abstract class for scoring object(s) of type Particle.
Various general useful macros for IMP.
Keys to cache lookup of attribute strings.
A base class for modifiers of kernel::ParticleQuadsTemp.
Abstract class for scoring object(s) of type ParticleTriplet.
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:73