1 | #include "yamldepositsynthreader.h"
|
---|
2 |
|
---|
3 | #include "yamlext.h"
|
---|
4 |
|
---|
5 | namespace genesis
|
---|
6 | {
|
---|
7 | YAMLDepositSynthCfgReader::YAMLDepositSynthCfgReader(std::istream & input)
|
---|
8 | : _docs(YAML::LoadAll(input)), _i(_docs.begin()) {}
|
---|
9 |
|
---|
10 | YAMLDepositSynthCfgReader::~YAMLDepositSynthCfgReader() {}
|
---|
11 |
|
---|
12 | bool YAMLDepositSynthCfgReader::load( geoworld::DepositSynthesizerSettings & settings )
|
---|
13 | {
|
---|
14 | using namespace geoworld;
|
---|
15 |
|
---|
16 | if (_i == _docs.end())
|
---|
17 | return false;
|
---|
18 |
|
---|
19 | const YAML::Node ndDoc = *_i++;
|
---|
20 |
|
---|
21 | try
|
---|
22 | {
|
---|
23 | const YAML::Node
|
---|
24 | & ndLayers = ndDoc["strata"],
|
---|
25 | & ndDeposits = ndDoc["deposits"],
|
---|
26 | & ndVein = ndDoc["vein"],
|
---|
27 | & ndDike = ndDoc["dike"],
|
---|
28 | & ndLaccolith = ndDoc["laccolith"],
|
---|
29 | & ndSpherePack = ndDoc["chunking"];
|
---|
30 |
|
---|
31 | ndLayers["count"] >> settings.layers.count;
|
---|
32 | ndLayers["classes"] >> settings.layers.classes;
|
---|
33 | ndLayers["coarseness"] >> settings.layers.coarseness;
|
---|
34 | ndLayers["silica"] >> YAML::MappedRange< unsigned char > (settings.layers.silica,
|
---|
35 | YAML::StringMapSchema< unsigned char > (
|
---|
36 | "na", Silica_NA,
|
---|
37 | "felsic", Silica_Felsic,
|
---|
38 | "inter-felsic", Silica_InterFelsic,
|
---|
39 | "intermediate", Silica_Intermediate,
|
---|
40 | "mafic", Silica_Mafic,
|
---|
41 | "ultra-mafic", Silica_UltraMafic,
|
---|
42 | NULL
|
---|
43 | )
|
---|
44 | );
|
---|
45 | ndLayers["thickness"] >> settings.layers.thickness.base;
|
---|
46 | ndLayers["thickfactor"] >> settings.layers.thickness.curve;
|
---|
47 | ndLayers["thickscale"] >> settings.layers.thickness.scale;
|
---|
48 |
|
---|
49 | ndDeposits["frequency"] >> settings.minerals.frequency;
|
---|
50 | ndDeposits["neighborhood"] >> settings.minerals.neighborhood;
|
---|
51 | ndDeposits["abundancefactor"] >> settings.minerals.abundance.curve;
|
---|
52 | ndDeposits["sizefactor"] >> settings.minerals.deposit.curve;
|
---|
53 | ndDeposits["sizebase"] >> settings.minerals.deposit.base;
|
---|
54 | ndDeposits["nesting"] >> settings.minerals.deposit.nesting;
|
---|
55 |
|
---|
56 | ndVein["deviation"] >> settings.minerals.deposit.vein.deviation;
|
---|
57 | ndVein["detail"] >> settings.minerals.deposit.vein.detail;
|
---|
58 | ndVein["erraticness"] >> settings.minerals.deposit.vein.erratic;
|
---|
59 |
|
---|
60 | ndDike["orthogonality"] >> settings.minerals.deposit.dike.orthogonality;
|
---|
61 | ndDike["deviation"] >> settings.minerals.deposit.dike.deviation;
|
---|
62 |
|
---|
63 | ndLaccolith["tailsize"] >> settings.minerals.deposit.laccolith.tail;
|
---|
64 |
|
---|
65 | ndSpherePack["leafsize"] >> settings.minerals.spherepack.limit;
|
---|
66 | ndSpherePack["smallest"] >> settings.minerals.spherepack.minimum;
|
---|
67 | ndSpherePack["iterations"] >> settings.minerals.spherepack.maxtier;
|
---|
68 | ndSpherePack["initialsize"] >> settings.minerals.spherepack.sizeflux;
|
---|
69 | ndSpherePack["branches"] >> settings.minerals.spherepack.kidflux;
|
---|
70 |
|
---|
71 | return true;
|
---|
72 | }
|
---|
73 | catch (YAML::RepresentationException &)
|
---|
74 | {
|
---|
75 | return false;
|
---|
76 | }
|
---|
77 | }
|
---|
78 |
|
---|
79 | }
|
---|