1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jungleliu0923-myconf

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

myconf — это библиотека на C/C++, которая позволяет удобно считывать конфигурации в формате «ключ-значение».

  1. Правила:

    • конфигурация должна быть представлена в формате «key : value»;
    • поддерживается считывание int (включая положительные и отрицательные числа), unsigned int, char *, а также возможность использования значений по умолчанию;
    • если строка содержит специальные символы (например, пробелы), её необходимо заключить в кавычки («ты 好»);
    • после использования необходимо закрыть файл журнала, иначе произойдёт утечка памяти;
    • для компиляции требуется использовать mylog, при этом нужно внести изменения в Makefile, установив WORKROOT в качестве верхнего рабочего каталога, и указать пути к MYLOG и MYCONF через makefile.env.
  2. API:

    1. Инициализация журнала:

      MY_CONF_INS* my_conf_init(const char* file_path, const char* file_name);
      • file_path — путь к каталогу конфигурации;
      • file_name — имя файла конфигурации.
    2. Получение int:

      MY_CONF_GET_INT32(key, confs, input_value)
      • key — ключ для получения;
      • confs — дескриптор файла конфигурации;
      • input_value — ссылка на результат конфигурации.

      Если операция успешна, возвращается true, в противном случае — false.

    3. Получение значения int по умолчанию:

      MY_CONF_GET_INT32_DEFAULT(key, confs, input_value, default_value)
      • key — ключ для получения;
      • confs — дескриптор файла конфигурации;
      • input_value — ссылка на результат конфигурации;
      • default_value — значение, которое будет возвращено, если не найдено результата.

      Если операция успешна, возвращается true, в противном случае — false.

    4. Получение unsigned int:

      MY_CONF_GET_UINT32(key, confs, input_value)
      • key — ключ для получения;
      • confs — дескриптор файла конфигурации;
      • input_value — ссылка на результат конфигурации.

      Если операция успешна, возвращается true, в противном случае — false.

    5. Получение значения unsigned int по умолчанию:

      MY_CONF_GET_UINT32_DEFAULT(key, confs, input_value, default_value)
      • key — ключ для получения;
      • confs — дескриптор файла конфигурации;
      • input_value — ссылка на результат конфигурации;
      • default_value — значение, которое будет возвращено, если не найдено результата.

      Если операция успешна, возвращается true, в противном случае — false.

    6. Получение строки:

      MY_CONF_GET_STR(key, confs, input_str)
      • key — ключ для получения;
      • confs — дескриптор файла конфигурации;
      • input_str — ссылка на строку результата конфигурации.

      Строка input_str должна быть предварительно инициализирована. Если операция успешна, возвращается true, в противном случае — false.

    7. Получение строки по умолчанию:

      MY_CONF_GET_STR_DEFAULT(key, confs, input_str, default_str)
      • key — ключ для получения;
      • confs — дескриптор файла конфигурации;
      • input_str — ссылка на строку результата конфигурации;
      • default_str — значение по умолчанию, которое будет возвращено, если не найдено результата.

      Строка input_str должна быть предварительно инициализирована. Если операция успешна, возвращается true, в противном случае — false.

  3. Пример: а) Код: ```c #include "mylog.h" #include "myconf.h" #include using namespace std;

     int main()
     {
         my_log_init("./log", "sample.log", "sample.log.wf", 16);
         MY_LOG_DEBUG("main begin");
    
         MY_CONF_INS* my_ins = my_conf_init("./conf", "sample.conf");
         if( my_ins == NULL)
         {
             MY_LOG_FATAL("file is not exist or not vaild");
             return -1;
         }
    
         bool ret;
         //get int
         int int_a1;
         ret = MY_CONF_GET_INT32("int_a", my_ins, int_a1);
         if(ret == true)
         {
             cout << "int_a1 is " << int_a1 << endl;
         }
         else
         {
             cout << "get int_a1 fail";
         }
    
         //get uint32
         uint32 uint32_b1;
         ret = MY_CONF_GET_UINT32("int_b", my_ins, uint32_b1);
         cout << "uint32_b1 is " << uint32_b1 << endl;
    
         //get int 缺省值
         uint32 int_a2;
         ret = MY_CONF_GET_UINT32_DEFAULT("int_a_default", my_ins, int_a2, 100);
         cout << "int_a_default " << int_a2 << endl;
    
         char string_noraml[1024];
         ret = MY_CONF_GET_STR("string_noraml", my_ins, string_noraml);
         cout << "string_noraml is " <<  string_noraml << endl;
    
         char string_quoto[1024];
         ret = MY_CONF_GET_STR("string_quoto", my_ins, string_quoto);
         cout << "string_quoto is " <<  string_quoto << endl;
    
         my_conf_close(my_ins);
         MY_LOG_DEBUG("main end");
         return 0;
     }
     ```

    б) Результат выполнения: На основе представленного кода можно предположить, что результатом его выполнения будет вывод значений переменных int_a1, uint32_b1, int_a2, string_noraml и string_quoto. Однако без запуска кода невозможно точно определить, какие именно значения будут выведены.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

myconf — это библиотека C/C++, которая позволяет удобно считывать конфигурации key-value. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/jungleliu0923-myconf.git
git@api.gitlife.ru:oschina-mirror/jungleliu0923-myconf.git
oschina-mirror
jungleliu0923-myconf
jungleliu0923-myconf
master