IMP
2.1.0
The Integrative Modeling Platform
IMP Mainpage
All IMP Modules
Related Pages
Modules
Namespaces
Classes
Files
Examples
Indexes
File List
File Members
IMP
All IMP Modules
All IMP Modules and Applications
Argument Index
Class Examples
Factory Index
Function Examples
Design example
Developer Guide
Installation
Introduction
Mailing lists
ChangeLog
Tools
Dependencies
EMageFit protocol
EMageFit scripts and tools
Integrative docking utility programs
Deprecated List
Modules
Namespaces
Classes
Files
File List
File Members
Examples
Indexes
Class Usage
Class Examples
Class Factories
Function Examples
kernel/input_output_macros.h
Go to the documentation of this file.
1
/**
2
* \file IMP/kernel/input_output_macros.h
3
* \brief macros for inputs and outputs.
4
*
5
* Copyright 2007-2013 IMP Inventors. All rights reserved.
6
*
7
*/
8
9
#ifndef IMPKERNEL_INPUT_OUTPUT_MACROS_H
10
#define IMPKERNEL_INPUT_OUTPUT_MACROS_H
11
#include <IMP/kernel/kernel_config.h>
12
#include <
IMP/base/deprecation_macros.h
>
13
#include "
particle_index.h
"
14
#include "
input_output.h
"
15
16
#define IMP_BACKWARDS_MACRO_INPUTS \
17
public: \
18
/** \deprecated_at{2.1} Use get_inputs() instead. */
\
19
ParticlesTemp get_input_particles(Particle *) const; \
20
/** \deprecated_at{2.1} Use get_inputs() instead. */
\
21
ContainersTemp get_input_containers(Particle *) const; \
22
ModelObjectsTemp do_get_inputs(kernel::Model *m, \
23
const ParticleIndexes &pis) const { \
24
ModelObjectsTemp ret; \
25
for (unsigned int i = 0; i < pis.size(); ++i) { \
26
ret += get_input_particles(m->get_particle(pis[i])); \
27
ret += get_input_containers(m->get_particle(pis[i])); \
28
} \
29
return ret; \
30
}
31
32
#define IMP_BACKWARDS_MACRO_OUTPUTS \
33
public: \
34
/** \deprecated_at{2.1} Use get_inputs() instead. */
\
35
ParticlesTemp get_output_particles(Particle *) const; \
36
/** \deprecated_at{2.1} Use get_inputs() instead. */
\
37
ContainersTemp get_output_containers(Particle *) const; \
38
ModelObjectsTemp do_get_outputs(kernel::Model *m, \
39
const ParticleIndexes &pis) const { \
40
ModelObjectsTemp ret; \
41
for (unsigned int i = 0; i < pis.size(); ++i) { \
42
ret += get_output_particles(m->get_particle(pis[i])); \
43
ret += get_output_containers(m->get_particle(pis[i])); \
44
} \
45
return ret; \
46
}
47
48
#define IMP_MODEL_OBJECT_BACKWARDS_MACRO_INPUTS \
49
public: \
50
ParticlesTemp get_input_particles() const; \
51
ContainersTemp get_input_containers() const; \
52
ModelObjectsTemp do_get_inputs() const { \
53
ModelObjectsTemp ret; \
54
ret += get_input_containers(); \
55
ret += get_input_particles(); \
56
return ret; \
57
}
58
59
#define IMP_MODEL_OBJECT_BACKWARDS_MACRO_OUTPUTS \
60
public: \
61
/** \deprecated_at{2.1} Use get_outputs() instead. */
\
62
IMPKERNEL_DEPRECATED_METHOD_DECL( \
63
2.1) ParticlesTemp get_output_particles() const; \
64
/** \deprecated_at{2.1} Use get_outputs() instead. */
\
65
IMPKERNEL_DEPRECATED_METHOD_DECL( \
66
2.1) ContainersTemp get_output_containers() const; \
67
IMP_COMPILER_DISABLE_WARNINGS \
68
ModelObjectsTemp do_get_outputs() const { \
69
ModelObjectsTemp ret; \
70
ret += get_output_containers(); \
71
ret += get_output_particles(); \
72
return ret; \
73
} \
74
IMP_COMPILER_ENABLE_WARNINGS
75
76
#define IMP_INPUTS_DECL_BACKWARDS(Name) \
77
public: \
78
/** Get the set of particles read when applied to \
79
the \
80
arguments. \
81
\deprecated_at{2.1} use \
82
get_inputs() \
83
instead.*/
IMPKERNEL_DEPRECATED_METHOD_DECL( \
84
2.1) ParticlesTemp get_input_particles(Particle *p) const; \
85
/** Get the set of input containers when this modifier is \
86
applied \
87
to \
88
the arguments. \
89
\deprecated_at{2.1} use \
90
get_outputs() \
91
instead.*/
IMPKERNEL_DEPRECATED_METHOD_DECL( \
92
2.0) ContainersTemp get_input_containers(Particle *p) const
93
94
#define IMP_INPUTS_DEF_BACKWARDS(Name) \
95
ParticlesTemp Name::get_input_particles(Particle *p) const { \
96
IMPKERNEL_DEPRECATED_METHOD_DEF(2.1, "Use get_inputs() instead."); \
97
return IMP::kernel::get_input_particles( \
98
get_inputs(p->get_model(), ParticleIndexes(1, p->get_index()))); \
99
} \
100
ContainersTemp Name::get_input_containers(Particle *p) const { \
101
IMPKERNEL_DEPRECATED_METHOD_DEF(2.1, "Use get_inputs() instead."); \
102
return IMP::kernel::get_input_containers( \
103
get_inputs(p->get_model(), ParticleIndexes(1, p->get_index()))); \
104
}
105
106
#define IMP_OUTPUTS_DECL_BACKWARDS(Name) \
107
public: \
108
/** Get the set of particles read when applied to \
109
the \
110
arguments. \
111
\deprecated_at{2.1} use \
112
get_outputs() \
113
instead.*/
IMPKERNEL_DEPRECATED_METHOD_DECL( \
114
2.0) ParticlesTemp get_output_particles(Particle *p) \
115
const;
/** Get the set of output containers when this modifier is
116
applied to the arguments. \deprecated_at{2.1} use
117
get_outputs() instead.*/
\
118
IMPKERNEL_DEPRECATED_METHOD_DECL(2.0) ContainersTemp get_output_containers( \
119
Particle *p) const
120
121
#define IMP_OUTPUTS_DEF_BACKWARDS(Name) \
122
ParticlesTemp Name::get_output_particles(Particle *p) const { \
123
IMPKERNEL_DEPRECATED_METHOD_DEF(2.1, "Use get_outputs() instead."); \
124
return IMP::kernel::get_output_particles( \
125
get_outputs(p->get_model(), ParticleIndexes(1, p->get_index()))); \
126
} \
127
IMPKERNEL_DEPRECATED_METHOD_DECL( \
128
2.1) ContainersTemp Name::get_output_containers(Particle *p) const { \
129
IMPKERNEL_DEPRECATED_METHOD_DEF(2.1, "Use get_outputs() instead."); \
130
return IMP::kernel::get_output_containers( \
131
get_outputs(p->get_model(), ParticleIndexes(1, p->get_index()))); \
132
}
133
134
/** \deprecated_at{2.1} Just declare the methods yourself.*/
135
#define IMP_INPUTS_DECL(Name) \
136
IMPKERNEL_DEPRECATED_MACRO(2.1, \
137
"Inherit from IMP::kernel::ParticleInputs."); \
138
IMP_INPUTS_DECL_BACKWARDS(Name); \
139
\
140
public:
/** Get all the ModelObject objects that are read when the \
141
referenced \
142
particles are passed in.*/
\
143
ModelObjectsTemp get_inputs(kernel::Model *m, \
144
const ParticleIndexes &pis) const; \
145
\
146
protected:
/** Override if this reads other objects during evaluate.*/
\
147
virtual ModelObjectsTemp do_get_inputs(kernel::Model *m, \
148
const ParticleIndexes &pis) const = 0
149
150
/** Define standard input methods for things that take particles as arguments
151
such as IMP::SingletonModifier and IMP::PairScore.*/
152
#define IMP_INPUTS_DEF(Name) \
153
IMP_INPUTS_DEF_BACKWARDS(Name) IMPKERNEL_DEPRECATED_MACRO( \
154
2.1, "Inherit from IMP::kernel::ParticleInputs."); \
155
ModelObjectsTemp Name::get_inputs(kernel::Model *m, \
156
const ParticleIndexes &pis) const { \
157
return do_get_inputs(m, pis); \
158
}
159
160
/** \deprecated_at{2.1} Declare the methods yourself. */
161
#define IMP_OUTPUTS_DECL(Name) \
162
IMPKERNEL_DEPRECATED_MACRO(2.1, \
163
"Inherit from IMP::kernel::ParticleOutputs."); \
164
IMP_OUTPUTS_DECL_BACKWARDS(Name); \
165
\
166
public:
/** Get all the ModelObject objects that are read when the referenced \
167
particles are passed in.*/
\
168
ModelObjectsTemp get_outputs(kernel::Model *m, \
169
const ParticleIndexes &pis) const; \
170
\
171
protected:
/** Override if this reads other objects during evaluate.*/
\
172
virtual ModelObjectsTemp do_get_outputs( \
173
Model *m, const ParticleIndexes &pis) const = 0
174
175
/** \deprecated_at{2.1} Declare the methods yourself*/
176
#define IMP_OUTPUTS_DEF(Name) \
177
IMPKERNEL_DEPRECATED_MACRO(2.1, \
178
"Inherit from IMP::kernel::ParticleOutputs."); \
179
IMP_OUTPUTS_DEF_BACKWARDS(Name) ModelObjectsTemp Name::get_outputs( \
180
Model *m, const ParticleIndexes &pis) const { \
181
return do_get_outputs(m, pis); \
182
}
183
184
#endif
/* IMPKERNEL_INPUT_OUTPUT_MACROS_H */
particle_index.h
Various general useful functions for IMP.
deprecation_macros.h
Control display of deprecation information.
input_output.h
Single variable function.