Moduł Config

Nagłówek: Config.hpp
Elementy modułu: Moduł Config

Wstęp

Moduł do wczytywania, odczytywania, przechowywania, zapsywania i ogólnie do zarządzania konfiguracją. Obsługuje hierarchiczne pliki konfiguracyjne o składni wzorowanej na C/C++, np.:

Value1 = ValueData1
Value2 = "Value Data \"2\""
Value3 = -10.5 // Komentarz
TextValue = "Multiline
Text"

List = { item1, item2, "item3" }

// Komentarz...

SubConfig {
  SubConfigValue = SubConfigValueData
}

Konfiguracja

Konfiguracja to, w ogólnym znaczeniu, złożona struktura danych przechowująca różnego rodzaju zorganizowane dane przeznaczone do konfigurowania programu, czyli zawierające jakieś ustawienia. Jest zwykle wczytywana przez program z pliku podczas uruchamiania. Pliki konfiguracyjne mogą być:

Składnia

Format pliku konfiguracji oparty jest na module Tokenizer. Oznacza to, że występują w nim takie rodzaje tokenów, jak w C/C++, w szczególności:

Końce wiersza nie mają znaczenia. Wielkość liter ma znaczenie. Kolejność elementów nie ma znaczenia.

Konfiguracja to hierarchia elementów. Są 3 rodzaje elementów:

1. Wartość Posiada dane, czyli łańcuch znaków. Przeznaczona jest do przechowywania krótkiej, pojedynczej danej tekstowej, np. liczby. Zapisana może być jako identyfikator, znak, łańcuch lub liczba. Przykłady:

Klucz1 = false
Klucz2 = "Ala ma kota"
Klucz3 = -123
Klucz4 = '\0'
Klucz5 = 2.0e-3

2. Lista Sekwencja wartości. Trzeba je oddzielać przecinkami. Przykład:

Klucz = { Dana1, "Dana2", 123 }

3. Konfiguracja Mapa odwzorowująca klucze (też łańcuchy) na podelementy. Klucz musi być identyfikatorem. Główna konfiguracja, podobnie jak jej podkonfiguracje też jest tego typu. Przykład:

Klucz {
  PodKlucz1 = PodWartosc1
  podKlucz2 = "PodWartość 2"
  ...
}

Kod

Te 3 rodzaje elementów odwzorowane są bezpośrednio na klasy dostępne w module Config. Swoje pola mają upublicznione, dlatego umożliwiają bezpośrednią manipulację na swoich danych, jeśli zachodzi taka potrzeba. Kiedy chcemy używać listy lub pobierać nazwy wszystkich podelementów konfiguracji, musimy to robić ręcznie. W przeciwnym wypadku możemy używać wygodnych metod klasy common::Config, które umożliwiają typowe operacje zapisywania i odczytywania danych z elementu o podanej ścieżce. Ścieżka to łańcuch zawierający np.:

"Konfiguracja/PodKonfiguracja/PodPodKonfiguracja/Element"

Przykład typowego użycia modułu:

common::Config cfg;
cfg.LoadFromFile("Settings.cfg");

int Timeout;
cfg.MustGetDataEx("GeneralSettings/Timeout", &Timeout);

Istnieje zmienna globalna common::g_Config do dyspozycji użytkownika, która zapewnia miejsce do przechowywania głównej konfiguracji programu, aby każdy miał do niej dostęp.


Wygenerowano Sat Mar 29 18:17:00 2008 dla CommonLib programem  doxygen 1.5.5