1212#include < cassert>
1313#include < cstdlib>
1414#include < cstring>
15- #include < iostream >
15+ #include < fstream >
1616#include < iterator>
1717#include " ConfigReader.h"
18- #include " yaml-cpp/yaml.h"
18+ #include " fkYAML.hpp"
19+
20+ fkyaml::node load_yaml (char const *configFilename)
21+ {
22+ std::ifstream ifs (configFilename);
23+ return fkyaml::node::deserialize (ifs);
24+ }
1925
2026void ConfigReader_Read (char const *configFilename, char const *participantName, AdapterConfig *adapterConfig)
2127{
22- YAML::Node config = YAML::LoadFile (configFilename);
28+ auto config = load_yaml (configFilename);
2329
24- adapterConfig->preciceConfigFilename = strdup (config[" precice-config-file" ].as <std::string>().c_str ());
30+ adapterConfig->preciceConfigFilename = strdup (config[" precice-config-file" ].get_value <std::string>().c_str ());
2531
2632 int numInterfaces = config[" participants" ][participantName][" interfaces" ].size ();
2733 adapterConfig->numInterfaces = numInterfaces;
@@ -33,61 +39,61 @@ void ConfigReader_Read(char const *configFilename, char const *participantName,
3339 new (currentInterfacePointer) InterfaceConfig ();
3440 InterfaceConfig &interface = *currentInterfacePointer;
3541
36- if (config[" participants" ][participantName][" interfaces" ][i][ " nodes-mesh" ] ) {
37- interface.nodesMeshName = strdup (config[" participants" ][participantName][" interfaces" ][i][" nodes-mesh" ].as <std::string>().c_str ());
42+ if (config[" participants" ][participantName][" interfaces" ][i]. contains ( " nodes-mesh" ) ) {
43+ interface.nodesMeshName = strdup (config[" participants" ][participantName][" interfaces" ][i][" nodes-mesh" ].get_value <std::string>().c_str ());
3844 interface.map = 0 ;
39- } else if (config[" participants" ][participantName][" interfaces" ][i][ " nodes-mesh-with-connectivity" ] ) {
40- interface.nodesMeshName = strdup (config[" participants" ][participantName][" interfaces" ][i][" nodes-mesh-with-connectivity" ].as <std::string>().c_str ());
45+ } else if (config[" participants" ][participantName][" interfaces" ][i]. contains ( " nodes-mesh-with-connectivity" ) ) {
46+ interface.nodesMeshName = strdup (config[" participants" ][participantName][" interfaces" ][i][" nodes-mesh-with-connectivity" ].get_value <std::string>().c_str ());
4147 interface.map = 1 ;
4248 } else {
4349 interface.nodesMeshName = NULL ;
4450 }
4551
46- if (config[" participants" ][participantName][" interfaces" ][i][ " faces-mesh" ] ) {
47- interface.facesMeshName = strdup (config[" participants" ][participantName][" interfaces" ][i][" faces-mesh" ].as <std::string>().c_str ());
52+ if (config[" participants" ][participantName][" interfaces" ][i]. contains ( " faces-mesh" ) ) {
53+ interface.facesMeshName = strdup (config[" participants" ][participantName][" interfaces" ][i][" faces-mesh" ].get_value <std::string>().c_str ());
4854 } else {
4955 interface.facesMeshName = NULL ;
5056 }
5157
52- if (config[" participants" ][participantName][" interfaces" ][i][ " mesh" ] ) {
53- interface.facesMeshName = strdup (config[" participants" ][participantName][" interfaces" ][i][" mesh" ].as <std::string>().c_str ());
58+ if (config[" participants" ][participantName][" interfaces" ][i]. contains ( " mesh" ) ) {
59+ interface.facesMeshName = strdup (config[" participants" ][participantName][" interfaces" ][i][" mesh" ].get_value <std::string>().c_str ());
5460 }
5561
56- std::string patchName = config[" participants" ][participantName][" interfaces" ][i][" patch" ].as <std::string>();
62+ std::string patchName = config[" participants" ][participantName][" interfaces" ][i][" patch" ].get_value <std::string>();
5763 std::transform (patchName.begin (), patchName.end (), patchName.begin (), toupper);
5864 interface.patchName = strdup (patchName.c_str ());
5965
6066 interface.numWriteData = config[" participants" ][participantName][" interfaces" ][i][" write-data" ].size ();
6167 interface.numReadData = config[" participants" ][participantName][" interfaces" ][i][" read-data" ].size ();
6268
63- if (config[" participants" ][participantName][" interfaces" ][i][ " write-data" ] ) {
69+ if (config[" participants" ][participantName][" interfaces" ][i]. contains ( " write-data" ) ) {
6470 if (interface.numWriteData == 0 ) {
6571 // write-data is a string
6672 interface.numWriteData = 1 ;
6773 interface.writeDataNames = (char **) malloc (sizeof (char *) * interface.numWriteData );
68- interface.writeDataNames [0 ] = strdup (config[" participants" ][participantName][" interfaces" ][i][" write-data" ].as <std::string>().c_str ());
74+ interface.writeDataNames [0 ] = strdup (config[" participants" ][participantName][" interfaces" ][i][" write-data" ].get_value <std::string>().c_str ());
6975 } else {
7076 // write-data is an array
7177 interface.writeDataNames = (char **) malloc (sizeof (char *) * interface.numWriteData );
7278
7379 for (int j = 0 ; j < interface.numWriteData ; j++) {
74- interface.writeDataNames [j] = strdup (config[" participants" ][participantName][" interfaces" ][i][" write-data" ][j].as <std::string>().c_str ());
80+ interface.writeDataNames [j] = strdup (config[" participants" ][participantName][" interfaces" ][i][" write-data" ][j].get_value <std::string>().c_str ());
7581 }
7682 }
7783 }
7884
79- if (config[" participants" ][participantName][" interfaces" ][i][ " read-data" ] ) {
85+ if (config[" participants" ][participantName][" interfaces" ][i]. contains ( " read-data" ) ) {
8086 if (interface.numReadData == 0 ) {
8187 // read-data is a string
8288 interface.numReadData = 1 ;
8389 interface.readDataNames = (char **) malloc (sizeof (char *) * interface.numReadData );
84- interface.readDataNames [0 ] = strdup (config[" participants" ][participantName][" interfaces" ][i][" read-data" ].as <std::string>().c_str ());
90+ interface.readDataNames [0 ] = strdup (config[" participants" ][participantName][" interfaces" ][i][" read-data" ].get_value <std::string>().c_str ());
8591 } else {
8692 // read-data is an array
8793 interface.readDataNames = (char **) malloc (sizeof (char *) * interface.numReadData );
8894
8995 for (int j = 0 ; j < interface.numReadData ; j++) {
90- interface.readDataNames [j] = strdup (config[" participants" ][participantName][" interfaces" ][i][" read-data" ][j].as <std::string>().c_str ());
96+ interface.readDataNames [j] = strdup (config[" participants" ][participantName][" interfaces" ][i][" read-data" ][j].get_value <std::string>().c_str ());
9197 }
9298 }
9399 }
0 commit comments