[80a6a52] | 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 | }
|
---|