IMP logo
IMP Reference Guide  develop.97bab1d8fd,2021/09/17
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-2021 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 float vector attributes in the Particles
62 
63 //! The type used to identify a particle attribute in the Particles
66 
67 #ifndef IMP_DOXYGEN
68 // for backwards compat, no way to provide a warning on this
69 typedef ParticleIndexesKey ParticlesKey;
70 typedef ParticleIndexKey ParticleKey;
71 #endif
72 
73 //! The type used to identify a particle attribute in the Particles
76 
77 //! The type used to identify data stored directly in the model.
78 typedef Key<8> ModelKey;
80 
81 //! The type used to identify changed model properties
84 /** @} */
85 
86 class Restraint;
91 
92 class Model;
96 class ScoreState;
100 class Container;
102 class Particle;
116 
119 class PairScore;
123 class QuadScore;
125 
134 
143 
144 /** An ordered pair of particles.*/
147 /** An ordered triplet of particles.*/
150 /** An ordered quad of particles.*/
153 
154 class ParticleIndexTag {};
155 /** A unique identifier for a particle within a Model. Use it to identify
156  particles when getting and setting attributes and constructing decorators.
157 
158  See for example, \ref model_attributes "Model attributes", Decorator, and
159  Model::get_particle().
160 */
163 
167 
171 
172 IMPKERNEL_END_NAMESPACE
173 
174 #endif /* IMPKERNEL_BASE_TYPES_H */
A base class for modifiers of ParticlesTemp.
Abstract class for scoring object(s) of type ParticleIndexPair.
Definition: PairScore.h:42
A shared container for Pairs.
Definition: PairContainer.h:37
Helper macros for implementing IMP Objects.
Basic types used by IMP.
Key< 11 > TriggerKey
The type used to identify changed model properties.
Definition: base_types.h:82
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
Utility types to refer to various types of indices.
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:151
Index< ParticleIndexTag > ParticleIndex
Definition: base_types.h:161
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:64
Array< 3, WeakPointer< Particle >, Particle * > ParticleTriplet
Definition: base_types.h:148
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:37
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:73
Key< 2 > StringKey
The type used to identify string attributes in the Particles.
Definition: base_types.h:40
Key< 10 > FloatsKey
The type used to identify float vector attributes in the Particles.
Definition: base_types.h:60
Abstract class for scoring object(s) of type ParticleIndexQuad.
Definition: QuadScore.h:42
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values.
Definition: value_macros.h:23
Base class for objects in a Model that depend on other objects.
Definition: ModelObject.h:26
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:54
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 weak pointer to an Object or RefCountedObject.
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:74
#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:142
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.
Macros to help in implementing Value objects.
Key< 8 > ModelKey
The type used to identify data stored directly in the model.
Definition: base_types.h:78
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:42
Abstract class for containers of particles.
A restraint is a term in an IMP ScoringFunction.
Definition: Restraint.h:54