#include "c-config-parser.h"

#include "config-parser.h"
#include <string>

// *: static class
static scm::ConfigParser config;


#ifdef __cplusplus
extern "C" {  
#endif  

    int config_run(const char* filename) {
        return (int)config.run(filename);
    }

    int config_is_varname(const char* name) {
        return (int)config.is_varname(name);
    }

    int config_get_int(const char* name, int* value) {
        return (int)config.get_value(name, value);
    }
    int config_get_float(const char* name, float* value) {
        return (int)config.get_value(name, value);
    }
    int config_get_double(const char* name, double* value) {
        return (int)config.get_value(name, value);
    }

    int config_get_string_len(const char* name) 
    {
        std::string str;
        bool status = config.get_value(name, str);

        if (!status) return 0;
        return (int)str.size();
    }

    int config_get_string_unsafe(const char* name, char* c_str) 
    {
        std::string str;
        bool status = config.get_value(name, str);
        if (!status) return 0;

        memcpy(c_str, str.c_str(), (int)str.size() * sizeof(char));
        return 1;
    }

#ifdef __cplusplus
}
#endif