Skip to content

Latest commit

 

History

History
65 lines (41 loc) · 3.87 KB

readme.md

File metadata and controls

65 lines (41 loc) · 3.87 KB

Библиотеката предоставя прост начин за работа с конфигурационни файлове в програми на C++. Самите файлове се описват в заглавен файл, който осигурява лесен начин за достъп до настройките от програмата.

Заглавният файл на C++ с конфигурацията (напр. config.h) може да изглежда примерно така:


#ifndef __CONFIG_H__
#define __CONFIG_H__

#include <rueconflib.hpp>

CONFIGURATION ( Config, "test.cfg" )
  SECTION ( MainSection )
    PROPERTY ( bool, TestBool, true )
    SECTION ( AA )
      SECTION ( AAA )
        PROPERTY ( int, TestInt, 5 )
        PROPERTY ( double, TestDouble, 3.1415926 )
      END_SECTION
      SECTION ( AAB )
        PROPERTY ( string, TestString, "Test string" )
      END_SECTION
    END_SECTION
    SECTION ( AB )
    END_SECTION
  END_SECTION
END_CONFIGURATION

#endif

За всяка конфигурация се създава основна секция чрез CONFIGURATION(). Там се посочва името на конфигурацията, което по-късно се ползва за достъп до нея от програмата, както и името на файла, в който ще се съхранява и от който ще се чете тази конфигурация.

В тази основна секция се създават всички секции (SECTION) и свойства (PROPERTY), които са необходими. Всяка секция може да има свои подсекции и свойства и т.н.

Тъй като това са макроси и може да влязат в конфликт с други, вече налични в системата макроси, при наличие на такъв конфликт може да се ползват алтернативните, които имат RUECONFLIB_ като представка, напр. RUECONFLIB_CONFIGURATION. Библиотеката автоматично открива конфликтите и ги избягва, като не създава макроси от основния тип, ако те са в конфликт с вече съществуващи такива. Това, от своя страна позволява промяна и разширяване на възможностите на макросите, ако това е необходимо.

Реализацията на този заглавен файл става посредством следния код:


#define RUECONFLIB_IMPLEMENT_CONFIGURATION
#include "config.h"

Този код трябва да присъства само веднъж в кода, напр. в отделен файл config.cpp. Както се вижда изпълнимата част се реализира от същия код, който се ползва и за създаване на заглавния файл.

Достъпът до параметрите е изключително бърз и лесен и може да бъде реализиран по следните начини:


string s = Config::MainSection::AA::AAB::TestString;

using namespace Config::MainSection::AA::AAA;
int i = TestInt;
double d = TestDouble;

Както се вижда, всички секции и самата конфигурация са реализирани чрез именни пространства, което дава възможност за опростен достъп до избрана секция чрез using namespace, както е показано във втория пример.