Xfce Foundation Classes
Main Page  | IndexNamespace List  |  Alphabetical List  |  Class List  |  File List


Xfc::G::KeyFile Class Reference

A C++ wrapper interface for the GKeyFile configuration file parser. More...

#include <xfc/glib/keyfile.hh>

Inheritance diagram for Xfc::G::KeyFile:

Xfc::Object Xfc::Trackable List of all members.

Public Member Functions

Accessors
Methods

Detailed Description

A C++ wrapper interface for the GKeyFile configuration file parser.

KeyFile lets you parse, edit or create files containing groups of key-value pairs, which we call key files for lack of a better name. Several freedesktop.org specifications use key files now, e.g the Desktop Entry Specification and the Icon Theme Specification.

The syntax of key files is described in detail in the Desktop Entry Specification, here is a quick summary: Key files consists of groups of key-value pairs, interspersed with comments.

 # this is just an example
 # there can be comments before the first group
 
 [First Group]
 
 Name=Key File Example\tthis value shows\nescaping
 
 # localized strings are stored in multiple key-value pairs
 Welcome=Hello
 Welcome[de]=Hallo
 Welcome[fr]=Bonjour
 Welcome[it]=Ciao
 
 [Another Group]
 
 Numbers=2;20;-200;0
 
 Booleans=true;false;true;true

Lines beginning with a '#' and blank lines are considered comments.

Groups are started by a header line containing the group name enclosed in '[' and ']', and ended implicitly by the start of the next group or the end of the file. Each key-value pair must be contained in a group.

Key-value pairs generally have the form key=value, with the exception of localized strings, which have the form key[locale]=value. Space before and after the '=' character are ignored. Newline, tab, carriage return and backslash characters are escaped as \n, \t, \r, and \\, respectively. To preserve initial and final spaces, these can also be escaped as \s.

Key files can store strings (possibly with localized variants), integers, booleans and lists of these. Lists are separated by a separator character, typically ';' or ','. To use the list separator character in a value in a list, it has to be escaped by prefixing it with a backslash.

This syntax is obviously inspired by the ini files commonly met on Windows, but there are some important differences:

  1. ini files use the ';' character to begin comments, key files use the '#' character.
  2. Key files allow only comments before the first group.
  3. Key files are always encoded in UTF-8.


Member Function Documentation

String Xfc::G::KeyFile::get_start_group (  )  const

Gets the name of the start group of the file.

Returns:
The start group of the key file.

std::vector<String> Xfc::G::KeyFile::get_groups (  )  const

Gets all groups in the key file.

Returns:
A vector of String holding all the group names in the key file.
If there are no group names in the key file the returned vector will be empty.

std::vector<String> Xfc::G::KeyFile::get_keys ( const String group_name,
Error error 
) const

Gets all keys for the group name group_name.

Parameters:
group_name The group name to get the keys for.
error The return location for a G::Error, or null.
Returns:
A vector of String holding all the keys for group_name in the key file.
In the event that the group_name cannot be found, the returned vector will be empty and error is set to G::KEY_FILE_ERROR_GROUP_NOT_FOUND.

bool Xfc::G::KeyFile::has_group ( const String group_name  )  const

Determines whether the key file has the group group_name.

Parameters:
group_name A group name.
Returns:
true if group_name is a part of the key file, false otherwise.

bool Xfc::G::KeyFile::has_key ( const String group_name,
const String key,
Error error 
) const

Determines whether the key file has the key key in the group group_name.

Parameters:
group_name A group name.
key A key name.
error The return location for a G::Error, or null.
Returns:
true if key is a part of group_name, false otherwise.
If group_name is null, the start group is used.

String Xfc::G::KeyFile::get_value ( const String group_name,
const String key,
Error error 
) const

Gets the value associated with key under group_name.

Parameters:
group_name A group name.
key A key name.
error The return location for a G::Error, or null.
Returns:
The string value for key.
In the event the key cannot be found, a null string is returned and error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. In the event that the group_name cannot be found, a null string is returned and error is set to G::KEY_FILE_ERROR_GROUP_NOT_FOUND.

String Xfc::G::KeyFile::get_string ( const String group_name,
const String key,
Error error 
) const

Gets the value associated with key under group_name.

Parameters:
group_name A group name.
key A key.
error The return location for a G::Error, or null.
Returns:
A String.
In the event the key cannot be found, a null string is returned and error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. In the event that the group_name cannot be found, a null string is returned and error is set to G::KEY_FILE_ERROR_GROUP_NOT_FOUND.

String Xfc::G::KeyFile::get_string ( const String group_name,
const String key,
const String locale,
Error error 
) const

Gets the value associated with key under group_name translated in the given locale if available.

Parameters:
group_name A group name.
key A key.
locale A locale, or null.
error The return location for a G::Error, or null.
Returns:
A String.
If locale is null then the current locale is assumed. If key cannot be found then a null string is returned and error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. If the value associated with key cannot be interpreted or no suitable translation can be found then the untranslated value is returned.

bool Xfc::G::KeyFile::get_boolean ( const String group_name,
const String key,
Error error 
) const

Gets the value associated with key under group_name as a bool value.

Parameters:
group_name A group name.
key A key.
error The return location for a G::Error.
Returns:
The value associated with the key as a bool.
If group_name is null, the start group is used. If key cannot be found then the return value is undefined and error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the value associated with key cannot be interpreted as a bool then the return value is also undefined and error is set to G::KEY_FILE_ERROR_INVALID_VALUE.

int Xfc::G::KeyFile::get_integer ( const String group_name,
const String key,
Error error 
) const

Gets the value associated with key under group_name as an integer.

Parameters:
group_name A group name.
key A key.
error The return location for a G::Error.
Returns:
The value associated with the key as an integer.
If group_name is null, the start_group is used. If key cannot be found then the return value is undefined and error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the value associated with key cannot be interpreted as an integer then the return value is also undefined and error is set to G::KEY_FILE_ERROR_INVALID_VALUE.

std::vector<String> Xfc::G::KeyFile::get_string_list ( const String group_name,
const String key,
Error error 
) const

Gets the string values associated with key under group_name.

Parameters:
group_name A group name.
key A key.
error The return location for a G::Error, or null.
Returns:
A vector of String holding the values associated with key.
In the event the key cannot be found, an empty vector is returned and error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. In the event that the group_name cannot be found, an empty vector is returned and error is set to G::KEY_FILE_ERROR_GROUP_NOT_FOUND.

std::vector<String> Xfc::G::KeyFile::get_string_list ( const String group_name,
const String key,
const String locale,
Error error 
) const

Gets the values associated with key under group_name translated in the given locale if available.

Parameters:
group_name A group name.
key A key.
locale A locale, such as "de", "fr", or "it".
error The return location for a G::Error, or null.
Returns:
A vector of String holding the values associated with key.
If locale is null then the current locale is assumed. If group_name is null, then the start group is used. If key cannot be found then an empty vector is returned and error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. If the values associated with key cannot be interpreted or no suitable translations can be found then the untranslated values are returned.

std::vector<bool> Xfc::G::KeyFile::get_boolean_list ( const String group_name,
const String key,
Error error 
) const

Gets the values associated with key under group_name as bools.

Parameters:
group_name A group name.
key A key.
error The return location for a G::Error, or null.
Returns:
A vector of bool holding the values associated with key as bools.
If group_name is null, the start_group is used. If key cannot be found then an empty vector is returned and error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the values associated with key cannot be interpreted as bools then an empty vector is returned and error is set to G::KEY_FILE_ERROR_INVALID_VALUE.

std::vector<int> Xfc::G::KeyFile::get_integer_list ( const String group_name,
const String key,
Error error 
) const

Gets the values associated with key under group_name as integers.

Parameters:
group_name A group name.
key A key.
error The return location for a G::Error, or null.
Returns:
A vector of int holding the values associated with key as integers.
If group_name is null, the start_group is used. If key cannot be found then an empty vector is returned and error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the values associated with key cannot be interpreted as integers then an empty vector is returned and error is set to G::KEY_FILE_ERROR_INVALID_VALUE.

String Xfc::G::KeyFile::get_comment ( const String group_name,
const String key,
Error error 
) const

Retreives a comment above key from group name group_name.

Parameters:
group_name A group name.
key A key.
error The return location for a G::Error, or null.
Returns:
The comment string.
If key is null then comment will be read from above group_name. If both key and group_name are null, then comment will be read from above the first group in the file.

String Xfc::G::KeyFile::get_comment ( const String group_name,
Error error 
) const

Retreives a comment from above group name group_name.

Parameters:
group_name A group name.
error The return location for a G::Error, or null.
Returns:
The group comment string.
If group_name is null, then comment will be read from above the first group in the file.

void Xfc::G::KeyFile::set_list_separator ( char  separator  ) 

Sets the character which is used to separate values in lists.

Parameters:
separator The separator.
Typically ';' or ',' are used as separators. The default list separator is ';'.

bool Xfc::G::KeyFile::load_from_file ( const std::string &  file,
KeyFileFlagsField  flags,
Error error 
)

Loads a key file into an empty KeyFile object.

Parameters:
file The path of the filename to load, in the GLib file name encoding.
flags One or more flags from G::KeyFileFlags enumeration.
error The return location for a G::Error, or null.
Returns:
true if the key file could be loaded, false otherwise.
To get the file name encoding call Xfc::String::to_filename(). If the file could not be loaded then error is set to either a G::FileError or G::KeyFileError.

bool Xfc::G::KeyFile::load_from_data ( const char *  data,
unsigned int  length,
KeyFileFlagsField  flags,
Error error 
)

Loads a key file from memory into an empty KeyFile object.

Parameters:
data A key file loaded in memory.
length The length of data in bytes.
flags One or more flags from G::KeyFileFlags enumeration.
error The return location for a G::Error, or null.
Returns:
true if the key file could be loaded, false otherwise.
If the object cannot be created then error is set to a G::KeyFileError.

bool Xfc::G::KeyFile::load_from_data_dirs ( const String file,
String full_path,
KeyFileFlagsField  flags,
Error error 
)

This method looks for a key file named file in the paths returned from g_get_user_data_dir() and g_get_system_data_dirs(), loads the file into the key_file and returns the file's full path in full_path.

Parameters:
file A relative path to a filename to open and parse.
full_path The return location for a string containing the full path of the file.
flags One or more flags from G::KeyFileFlags enumeration.
error The return location for a G::Error, or null.
Returns:
true if the key file could be loaded, false otherwise.
If the file could not be loaded error is set to either a G::FileError or G::KeyFileError.

String Xfc::G::KeyFile::to_data ( Error error  ) 

This method outputs the key file as a string.

Parameters:
error The return location for a G::Error, or null.
Returns:
A String holding the contents of the key file

void Xfc::G::KeyFile::set_value ( const String group_name,
const String key,
const String value 
)

Associates a new value with key under group_name.

Parameters:
group_name A group name.
key A key.
value A string value.
If key cannot be found then it is created. If group_name cannot be found then it is created.

void Xfc::G::KeyFile::set_string ( const String group_name,
const String key,
const String value 
)

Associates a new string value with key under group_name.

Parameters:
group_name A group name.
key A key.
value A String.
If key cannot be found then it is created. If group_name cannot be found then it is created.

void Xfc::G::KeyFile::set_string ( const String group_name,
const String key,
const String locale,
const String value 
)

Associates a string value for key and locale under group_name.

Parameters:
group_name A group name.
key A key.
locale A locale, such as "de", "fr", or "it".
value A String.
If the translation for key cannot be found then it is created.

void Xfc::G::KeyFile::set_boolean ( const String group_name,
const String key,
bool  value 
)

Associates a new bool value with key under group_name.

Parameters:
group_name A group name.
key A key.
value A new bool value to associate with key.
If key cannot be found then it is created. If group_name is null, the start group is used.

void Xfc::G::KeyFile::set_integer ( const String group_name,
const String key,
int  value 
)

Associates a new integer value with key under group_name.

Parameters:
group_name A group name.
key A key.
value A new integer value to associate with key.
If key cannot be found then it is created. If group_name is null, the start group is used.

void Xfc::G::KeyFile::set_string_list ( const String group_name,
const String key,
const std::vector< String > &  strings 
)

Associates a list of string values for key under group_name.

Parameters:
group_name A group name.
key A key.
strings A vector of String holding the list of string values.
If key cannot be found then it is created. If group_name cannot be found then it is created.

void Xfc::G::KeyFile::set_string_list ( const String group_name,
const String key,
const String locale,
const std::vector< String > &  strings 
)

Associates a list of string values for key and locale under group_name.

Parameters:
group_name A group name.
key A key.
locale A locale, such as "de", "fr", or "it".
strings A vector of String holding the list of locale string values.
If the translation for key cannot be found then it is created. If group_name is null, the start group is used.

void Xfc::G::KeyFile::set_boolean_list ( const String group_name,
const String key,
std::vector< bool > &  values 
)

Associates a list of bool values with key under group_name.

Parameters:
group_name A group name.
key A key.
values A vector of bool holding the list of bool values.
If key cannot be found then it is created. If group_name is null, the start_group is used.

void Xfc::G::KeyFile::set_integer_list ( const String group_name,
const String key,
std::vector< int > &  values 
)

Associates a list of integer values with key under group_name.

Parameters:
group_name A group name.
key A key.
values A vector of int holding the list of integer values.
If key cannot be found then it is created. If group_name is null, the start_group is used.

void Xfc::G::KeyFile::set_comment ( const String group_name,
const String key,
const String comment,
Error error 
)

Places a comment above key from group name group_name.

Parameters:
group_name A group name.
key A key.
comment A comment string.
error The return location for a G::Error, or null.
If key is null then comment will be written above group_name. If both key and group_name are null, then comment will be written above the first group in the file.

void Xfc::G::KeyFile::set_comment ( const String group_name,
const String comment,
Error error 
)

Places a comment above group name group_name.

Parameters:
group_name A group name.
comment A comment string.
error The return location for a G::Error.
If group_name is null, then comment will be written above the first group in the file.

void Xfc::G::KeyFile::remove_comment ( const String group_name,
const String key,
Error error 
)

Removes a comment above key from group name group_name.

Parameters:
group_name A group name.
key A key.
error The return location for a G::Error.
If key is null then comment will be removed from above group_name. If both key and group_name are null, then comment will be removed from above the first group in the file.

void Xfc::G::KeyFile::remove_comment ( const String group_name,
Error error 
)

Removes a comment from above group name group_name.

Parameters:
group_name A group name.
error The return location for a G::Error.
If group_name is null, then comment will be removed from above the first group in the file.

void Xfc::G::KeyFile::remove_key ( const String group_name,
const String key,
Error error 
)

Removes key in group_name from the key file.

Parameters:
group_name A group name.
key A key.
error The return location for a G::Error.

void Xfc::G::KeyFile::remove_group ( const String group_name,
Error error 
)

Removes the specified group, group_name, from the key file.

Parameters:
group_name A group name.
error The return location for a G::Error.


The documentation for this class was generated from the following file: Xfce Foundation Classes
Copyright © 2004-2005 The XFC Development Team XFC 4.3