gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

configFile.cpp (1084B)


      1 #include "configFile.h"
      2 
      3 #include <fstream>
      4 
      5 namespace baseLib
      6 {
      7 	namespace
      8 	{
      9 		bool needsTrim(const char _c)
     10 		{
     11 			switch (_c)
     12 			{
     13 			case ' ':
     14 			case '\r':
     15 			case '\n':
     16 			case '\t':
     17 				return true;
     18 			default:
     19 				return false;
     20 			}
     21 		}
     22 
     23 		std::string trim(std::string _s)
     24 		{
     25 			while (!_s.empty() && needsTrim(_s.front()))
     26 				_s = _s.substr(1);
     27 			while (!_s.empty() && needsTrim(_s.back()))
     28 				_s = _s.substr(0, _s.size() - 1);
     29 			return _s;
     30 		}
     31 	}
     32 
     33 	ConfigFile::ConfigFile(const char* _filename)
     34 	{
     35 		std::ifstream file(_filename, std::ios::in);
     36 
     37 		if (!file.is_open())
     38 			return;
     39 
     40 		std::string line;
     41 
     42 		while(std::getline(file, line))
     43 		{
     44 			if(line.empty())
     45 				continue;
     46 
     47 			// // comment?
     48 			if (line.front() == '#' || line.front() == ';')
     49 				continue;
     50 
     51 			const auto posEq = line.find('=');
     52 
     53 			if (posEq == std::string::npos)
     54 				continue;
     55 
     56 			const auto key = trim(line.substr(0, posEq));
     57 			const auto val = trim(line.substr(posEq + 1));
     58 
     59 			add(key, val);
     60 		}
     61 	}
     62 
     63 	ConfigFile::ConfigFile(const std::string& _filename) : ConfigFile(_filename.c_str())
     64 	{
     65 	}
     66 }