29 #ifndef GUM_LAYER_GENERATOR_H 30 #define GUM_LAYER_GENERATOR_H 38 #include <agrum/BN/generator/simpleBayesNetGenerator.h> 40 #include <agrum/PRM/PRMFactory.h> 41 #include <agrum/PRM/generator/PRMGenerator.h> 42 #include <agrum/PRM/generator/nameGenerator.h> 54 template <
typename GUM_SCALAR >
55 class LayerGenerator:
public PRMGenerator< GUM_SCALAR > {
65 LayerGenerator(
const LayerGenerator& source);
67 LayerGenerator& operator=(
const LayerGenerator& source);
69 virtual ~LayerGenerator();
96 Size getDomainSize()
const;
99 void setDomainSize(Size s);
103 Size getMaxParents()
const;
107 void setMaxParents(Size s);
116 void setLayers(
const std::vector< LayerData >& v);
118 std::vector< LayerData >& getLayer();
119 const std::vector< LayerData >& getLayer()
const;
122 virtual PRM< GUM_SCALAR >* generate();
126 std::vector< LayerData > layers__;
133 std::vector< std::string > a;
134 std::vector< std::string > g;
136 std::vector< std::string > c;
139 std::string generateType__(PRMFactory< GUM_SCALAR >& f);
141 void generateInterfaces__(PRMFactory< GUM_SCALAR >& f,
142 const std::string& type,
143 std::vector< MyData >& l);
145 void generateClasses__(PRMFactory< GUM_SCALAR >& f,
146 const std::string& type,
147 std::vector<
typename LayerGenerator::MyData >& l);
149 void generateClassDag__(Size lvl,
151 Bijection< std::string, NodeId >& names,
152 std::vector<
typename LayerGenerator::MyData >& l);
154 void generateSystem__(PRMFactory< GUM_SCALAR >& factory,
155 std::vector<
typename LayerGenerator::MyData >& l);
161 #include <agrum/PRM/generator/layerGenerator_tpl.h>