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>