1 | /* |
---|
2 | Copyright (C) 2014 |
---|
3 | Alejandro Mujica (amujica@cenditel.gob.ve) |
---|
4 | José Ruiz (jruiz@cenditel.gob.ve) |
---|
5 | Julie Vera (jvera@cenditel.gob.ve) |
---|
6 | |
---|
7 | CENDITEL Fundación Centro Nacional de Desarrollo e Investigación en |
---|
8 | Tecnologías Libres |
---|
9 | |
---|
10 | Este programa es software libre; Usted puede usarlo bajo los términos de la |
---|
11 | licencia de software GPL versión 2.0 de la Free Software Foundation. |
---|
12 | |
---|
13 | Este programa se distribuye con la esperanza de que sea útil, pero SIN |
---|
14 | NINGUNA GARANTÍA; tampoco las implícitas garantías de MERCANTILIDAD o |
---|
15 | ADECUACIÓN A UN PROPÓSITO PARTICULAR. |
---|
16 | Consulte la licencia GPL para más detalles. Usted debe recibir una copia |
---|
17 | de la GPL junto con este programa; si no, escriba a la Free Software |
---|
18 | Foundation Inc. 51 Franklin Street,5 Piso, Boston, MA 02110-1301, USA. |
---|
19 | */ |
---|
20 | |
---|
21 | /* |
---|
22 | Autor: Alejandro J. Mujica |
---|
23 | Fecha de creación: 30/09/2014 |
---|
24 | Este archivo contiene contiene un conjunto de macros para definir la |
---|
25 | declaración de una lista de atributos de simulación, inicializaciones, y |
---|
26 | métodos. |
---|
27 | */ |
---|
28 | |
---|
29 | # ifndef SIMULATION_ATTRIBUTES_MACROS_H |
---|
30 | # define SIMULATION_ATTRIBUTES_MACROS_H |
---|
31 | |
---|
32 | # define DECLARE_SIMULATION_ATTRIBUTES(Simulation_Attributes) \ |
---|
33 | List<Simulation_Attributes> simulation_attributes_list; |
---|
34 | |
---|
35 | # define DEFINE_SIMULATION_ATTRIBUTES_METHODS(Simulation_Attributes) \ |
---|
36 | Simulation_Attributes & \ |
---|
37 | add_simulation_attributes(const Simulation_Attributes & simulation_attributes) \ |
---|
38 | { \ |
---|
39 | return simulation_attributes_list.append(simulation_attributes); \ |
---|
40 | } \ |
---|
41 | \ |
---|
42 | Simulation_Attributes & get_simulation_attributes_at(const size_t & i) \ |
---|
43 | { \ |
---|
44 | return simulation_attributes_list[i]; \ |
---|
45 | } \ |
---|
46 | \ |
---|
47 | template <class Op> \ |
---|
48 | void for_each_simulation_attributes(Op & op) \ |
---|
49 | { \ |
---|
50 | List<Simulation_Attributes>::Iterator it(simulation_attributes_list); \ |
---|
51 | \ |
---|
52 | for ( ; it.has_current(); it.next()) \ |
---|
53 | { \ |
---|
54 | Simulation_Attributes & simulation_attributes = it.get_current(); \ |
---|
55 | op(simulation_attributes); \ |
---|
56 | } \ |
---|
57 | } \ |
---|
58 | \ |
---|
59 | template <class Op> \ |
---|
60 | void for_each_simulation_attributes(Op && op) \ |
---|
61 | { \ |
---|
62 | for_each_simulation_attributes<Op>(op); \ |
---|
63 | } |
---|
64 | |
---|
65 | # define INIT_SIMULATION_ATTRIBUTES \ |
---|
66 | simulation_attributes_list() |
---|
67 | |
---|
68 | # define INIT_COPY_SIMULATION_ATTRIBUTES(src) \ |
---|
69 | simulation_attributes_list(src.simulation_attributes_list) |
---|
70 | |
---|
71 | # define COPY_SIMULATION_ATTRIBUTES(src) \ |
---|
72 | simulation_attributes_list = src.simulation_attributes_list; |
---|
73 | |
---|
74 | # define SWAP_SIMULATION_ATTRIBUTES(src) \ |
---|
75 | simulation_attributes_list.swap(src.simulation_attributes_list); |
---|
76 | |
---|
77 | # endif |
---|
78 | |
---|