Ariles
ariles2.h
Go to the documentation of this file.
1 /**
2  @file
3  @author Alexander Sherikov
4 
5  @copyright 2014-2017 INRIA. Licensed under the Apache License, Version 2.0.
6  (see @ref LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
7 
8  @copyright 2017-2020 Alexander Sherikov, Licensed under the Apache License, Version 2.0.
9  (see @ref LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
10 
11  @brief
12 */
13 
14 #pragma once
15 
16 // must be first
17 #ifndef ARILES_API_VERSION
18 # define ARILES_API_VERSION 2
19 #endif
20 
21 #ifndef ARILES_DISABLE
22 # define ARILES_ENABLED
23 #endif
24 
25 
26 #include "internal/helpers.h"
27 
28 #include "visitors/process.h"
29 #include "visitors/defaults.h"
30 #include "visitors/preprocess.h"
31 #include "visitors/postprocess.h"
32 #include "visitors/compare.h"
33 #include "visitors/count.h"
34 #include "visitors/read.h"
35 #include "visitors/write.h"
36 #include "visitors/config.h"
37 
38 // These defines are always necessary
39 #define ARILES_TYPED_ENTRY_(entry, type) ARILES_TYPED_NAMED_ENTRY(type, entry##_, #entry)
40 #define ARILES_TYPED_ENTRY(entry, type) ARILES_TYPED_NAMED_ENTRY(type, entry, #entry)
41 
42 
43 #include "base.h"
44 
45 #ifdef ARILES_ENABLED
46 # define ARILES_INITIALIZE "ariles/members/all.h"
47 
48 # define ARILES_ENTRY_(entry) ARILES_NAMED_ENTRY(entry##_, # entry)
49 # define ARILES_ENTRY(entry) ARILES_NAMED_ENTRY(entry, # entry)
50 
51 
52 // ----------------------------
53 
54 # if 2 == ARILES_API_VERSION
55 # include "adapters/basic.h"
56 # define ARILES_DEFAULT_VISITORS \
57  ARILES_VISITOR(count) \
58  ARILES_VISITOR(postprocess) \
59  ARILES_VISITOR(preprocess) \
60  ARILES_VISITOR(defaults) \
61  ARILES_VISITOR(read) \
62  ARILES_VISITOR(write) \
63  ARILES_VISITOR(compare)
64 
65 namespace ariles
66 {
67  typedef Base<
75 }
76 # endif
77 
78 # if 1 == ARILES_API_VERSION
79 # include "adapters/basic.h"
80 # define ARILES_DEFAULT_VISITORS \
81  ARILES_VISITOR(count) \
82  ARILES_VISITOR(postprocess) \
83  ARILES_VISITOR(defaults) \
84  ARILES_VISITOR(read) \
85  ARILES_VISITOR(write) \
86  ARILES_VISITOR(compare)
87 
88 namespace ariles
89 {
90  typedef Base<
97 }
98 # endif
99 
100 #else
101 
102 # define ARILES_DISABLED
103 # define ARILES_INITIALIZE "ariles/members/variables.h"
104 
105 namespace ariles
106 {
107  // Some classes may inherit from this
109  {
110  protected:
111  /**
112  * @brief Protected destructor: prevent destruction of derived
113  * classes via base pointer.
114  */
115  ~DefaultBase()
116  {
117  }
118  DefaultBase()
119  {
120  }
121 
122  public:
123  };
124 } // namespace ariles
125 
126 #endif
#define ARILES_VISIBILITY_ATTRIBUTE
Definition: helpers.h:69
Base< ariles::defaults::Base, ariles::postprocess::Base, ariles::preprocess::Base, ariles::count::Base, ariles::read::Base, ariles::write::Base > DefaultBase
Definition: ariles2.h:74
Definition: basic.h:17