Main Page   Data Structures   File List   Data Fields   Globals   Related Pages  

cfg+.h File Reference

main implementation header file. More...

#include <stdio.h>

Go to the source code of this file.

Data Structures

struct  cfg_context
 Main structure for defining context. More...

struct  cfg_option
 Structure for defining one config option. More...


Functions for setting and clearing context flags

#define cfg_is_context_flag(con, flag)   cfg_get_context_flag(con, flag)
void cfg_set_context_flag (const CFG_CONTEXT con, int flag)
void cfg_clear_context_flag (const CFG_CONTEXT con, int flag)
int cfg_get_context_flag (const CFG_CONTEXT con, int flag)
void cfg_set_context_flags (const CFG_CONTEXT con, int flags)
int cfg_get_context_flags (const CFG_CONTEXT con)

Error codes

enum  cfg_error {
  CFG_ERR_OK = 0,
  CFG_ERROR_OK = 0,
  CFG_OK = 0,
  CFG_ERR_NOARG = -1,
  CFG_ERROR_NOARG = -1,
  CFG_ERR_NOTALLOWEDARG = -2,
  CFG_ERROR_NOTALLOWEDARG = -2,
  CFG_ERR_BADOPT = -3,
  CFG_ERROR_BADOPT = -3,
  CFG_ERR_BADQUOTE = -4,
  CFG_ERROR_BADQUOTE = -4,
  CFG_ERR_BADNUMBER = -5,
  CFG_ERROR_BADNUMBER = -5,
  CFG_ERR_OVERFLOW = -6,
  CFG_ERROR_OVERFLOW = -6,
  CFG_ERR_MULTI = -7,
  CFG_ERROR_MULTI = -7,
  CFG_ERR_NOMEM = -8,
  CFG_ERROR_NOMEM = -8,
  CFG_ERR_STOP_STR = -9,
  CFG_ERR_STOP_STR_FOUND = -9,
  CFG_ERROR_STOP_STR = -9,
  CFG_ERROR_STOP_STR_FOUND = -9,
  CFG_ERR_NOEQUAL = -10,
  CFG_ERROR_NOEQUAL = -10,
  CFG_ERR_UNKNOWN = -11,
  CFG_ERROR_UNKNOWN = -11,
  CFG_ERR_FILE_NOT_FOUND = -12,
  CFG_ERROR_FILE_NOT_FOUND = -12,
  CFG_ERR_SEEK_ERROR = -13,
  CFG_ERROR_SEEK_ERROR = -13,
  CFG_ERR_INTERNAL = -20,
  CFG_ERROR_INTERNAL = -20
}

Context flags

enum  cfg_flag {
  CFG_IGNORE_MULTI = 1,
  CFG_IGNORE_UNKNOWN = 2,
  CFG_SKIP_FIRST = 0,
  CFG_PROCESS_FIRST = 4,
  CFG_POSIXLY_LEFTOVERS = 0,
  CFG_ADVANCED_LEFTOVERS = 8,
  CFG_NORMAL_LEFTOVERS = 0,
  CFG_STRICT_LEFTOVERS = 16,
  CFG_FILE_BYTE_POS_USAGE = 0,
  CFG_FILE_LINE_POS_USAGE = 32
}

Option types

enum  cfg_option_type {
  CFG_BOOL = 1,
  CFG_BOOLEAN = 1,
  CFG_INT = 2,
  CFG_INTEGER = 2,
  CFG_UINT = 3,
  CFG_UNSIGNED = 3,
  CFG_UNSIGNED_INT = 3,
  CFG_LONG = 4,
  CFG_ULONG = 5,
  CFG_UNSIGNED_LONG = 5,
  CFG_FLOAT = 6,
  CFG_DOUBLE = 7,
  CFG_STR = 8,
  CFG_STRING = 8,
  CFG_END = 0,
  CFG_DATA_TYPE_MASK = 31,
  CFG_SINGLE = 0,
  CFG_MULTI = 32,
  CFG_MULTI_ARRAY = 32,
  CFG_MULTI_SEPARATED = 32 + 64,
  CFG_LAST_ARGS = 128,
  CFG_LAST_ARGUMENTS = 128,
  CFG_LEFTOVER_ARGS = 128,
  CFG_LEFTOVER_ARGUMENTS = 128
}

Special properties types

enum  cfg_property_type {
  CFG_LINE_STOP_STRING = 0,
  CFG_LINE_SHORT_OPTION_PREFIX = 1,
  CFG_LINE_LONG_OPTION_PREFIX = 2,
  CFG_LINE_OPTION_ARG_SEPARATOR = 3,
  CFG_LINE_MULTI_VALS_SEPARATOR = 4,
  CFG_QUOTE_PREFIX = 5,
  CFG_QUOTE_POSTFIX = 6,
  CFG_FILE_STOP_PREFIX = 7,
  CFG_FILE_COMMENT_PREFIX = 8,
  CFG_FILE_MULTI_LINE_POSTFIX = 9,
  CFG_FILE_OPTION_ARG_SEPARATOR = 10,
  CFG_FILE_MULTI_VALS_SEPARATOR = 11,
  CFG_N_PROPS = 12,
  CFG_VIRTUAL_SPECIAL_PROPERTY = 13
}

Internal enumerations

enum  cfg_context_type {
  CFG_NO_CONTEXT = 0,
  CFG_CMDLINE = 1,
  CFG_LINE = 1,
  CFG_CFGFILE = 2,
  CFG_FILE = 2
}
enum  cfg_line_option_type {
  CFG_NONE_OPTION = 0,
  CFG_SHORT_OPTION = 1,
  CFG_LONG_OPTION = 2,
  CFG_SHORT_OPTIONS = 4,
  CFG_LONG_SEPINIT = 8,
  CFG_LONG_NOSEPINIT = 0
}

Functions for creating and manipulating context

CFG_CONTEXT cfg_get_context (struct cfg_option *options)
CFG_CONTEXT cfg_get_cmdline_context (int argc, char **argv, struct cfg_option *options)
CFG_CONTEXT cfg_get_cfgfile_context (long begin_pos, long end_pos, char *filename, struct cfg_option *options)
void cfg_set_cmdline_context (const CFG_CONTEXT con, int argc, char **argv)
void cfg_set_cfgfile_context (const CFG_CONTEXT con, long begin_pos, long end_pos, char *filename)
void cfg_reset_context (const CFG_CONTEXT con)
void cfg_free_context (const CFG_CONTEXT con)

Functions and macros for properties manipulation

void cfg_clear_property (const CFG_CONTEXT con, enum cfg_property_type type)
int cfg_add_property (const CFG_CONTEXT con, enum cfg_property_type type, char *str)
int cfg_remove_property (const CFG_CONTEXT con, enum cfg_property_type type, char *str)

Functions for processing context options

int cfg_parse (const CFG_CONTEXT con)
int cfg_get_next_opt (const CFG_CONTEXT con)
char * cfg_get_cur_opt (const CFG_CONTEXT con)
char * cfg_get_cur_arg (const CFG_CONTEXT con)
int cfg_get_cur_idx (const CFG_CONTEXT con)

Error handling functions

void cfg_print_error (const CFG_CONTEXT con)
void cfg_fprint_error (const CFG_CONTEXT con, FILE *fh)
char * cfg_get_error_str (const CFG_CONTEXT con)
char * cfg_get_static_error_str (const int errorcode)

Defines

#define CFG_END_OPTION   { NULL, '\0', NULL, CFG_END, NULL, 0 }
#define CFG_END_OF_LIST   CFG_END_OPTION

Typedefs

typedef cfg_contextCFG_CONTEXT
 Context data type.


Detailed Description

main implementation header file.

Author:
Ondrej Jombik <nepto@pobox.sk>
Version:
$Id: cfg+.h,v 1.37 2002/05/30 22:29:45 jombik9 Exp $
Date:
2001-2002

Define Documentation

#define CFG_END_OF_LIST   CFG_END_OPTION
 

CFG_END_OPTION

#define CFG_END_OPTION   { NULL, '\0', NULL, CFG_END, NULL, 0 }
 

End of options list marker


Enumeration Type Documentation

enum cfg_context_type
 

Context type

Possible types of context (used internally)

Enumeration values:
CFG_NO_CONTEXT  No context
CFG_CMDLINE  Command line context type
CFG_CFGFILE  Config file context type

enum cfg_error
 

Possible return values returned by parsing functions.

Enumeration values:
CFG_ERR_OK  OK, all is right.
CFG_ERR_NOARG  An argument is missing for an option.
CFG_ERR_NOTALLOWEDARG  An argument is not allowed for an option.
CFG_ERR_BADOPT  An option's argument could not be parsed.
CFG_ERR_BADQUOTE  Error in quotations.
CFG_ERR_BADNUMBER  An option could not be converted to appropriate numeric type.
CFG_ERR_OVERFLOW  A given number was too big or too small.
CFG_ERR_MULTI  Multiple arguments used for single option.
CFG_ERR_NOMEM  Not enough memory.
CFG_ERR_STOP_STR  Stop string was found.
CFG_ERR_NOEQUAL  No equal sign on the line.
CFG_ERR_UNKNOWN  An unknown option.
CFG_ERR_FILE_NOT_FOUND  File not found error.
CFG_ERR_SEEK_ERROR  Seek error (fseek() failure).
CFG_ERR_INTERNAL  Internal error.

enum cfg_flag
 

By default are CFG_SKIP_FIRST, CFG_POSIXLY_LEFTOVERS and CFG_NORMAL_LEFTOVERS initialized.

Todo:
CFG_APPEND, CFG_OVERWRITE, CFG_APPEND_MULTI_ONLY
Enumeration values:
CFG_IGNORE_MULTI  Ignore multiple arguments for single option.
CFG_IGNORE_UNKNOWN  Ignore unknown options.
CFG_SKIP_FIRST  Skip processing of the first argument on command line.
CFG_PROCESS_FIRST  Process also the first argument on command line.
CFG_POSIXLY_LEFTOVERS  Posixly correct leftover arguments.
CFG_ADVANCED_LEFTOVERS  Advanced leftover arguments.
CFG_NORMAL_LEFTOVERS  Normal leftover arguments initialization in file.
CFG_STRICT_LEFTOVERS  Strict leftover arguments initialization in file.
CFG_FILE_BYTE_POS_USAGE  Byte type position usage in file.
CFG_FILE_LINE_POS_USAGE  Line type position usage in file.

enum cfg_line_option_type
 

Command line option type.

Possible types of command line option (used internally)

Enumeration values:
CFG_NONE_OPTION  Not long and not short option
CFG_SHORT_OPTION  Short command line option
CFG_LONG_OPTION  Long command line option
CFG_SHORT_OPTIONS  Short command line options
CFG_LONG_SEPINIT  Long command line option argument initialized with separator
CFG_LONG_NOSEPINIT  Long command line option argument initialized without separator (default)

enum cfg_option_type
 

Possible types of options

Todo:
Thinking about case insensitivy of option ("--input" is the same as "--INPUT")
Enumeration values:
CFG_BOOL  Boolean
CFG_INT  Integer
CFG_UINT  Unsigned int
CFG_LONG  Long
CFG_ULONG  Unsigned long
CFG_FLOAT  Float
CFG_DOUBLE  Double
CFG_STR  String
CFG_END  End (to mark last item in list)
CFG_DATA_TYPE_MASK  Data type mask (used internally)
CFG_SINGLE  Single, multi or multi separated. Single by default. Tells if option can be repeated. In multi case value is array of poiters to type ended with NULL.
CFG_LAST_ARGS  Leftover arguments specification. Mark option which will contain leftover arguments.

enum cfg_property_type
 

Enumeration values:
CFG_LINE_STOP_STRING  Array of strings which forces to stop command line parsing.
CFG_LINE_SHORT_OPTION_PREFIX  default: "-"
CFG_LINE_LONG_OPTION_PREFIX  default: "--"
CFG_LINE_OPTION_ARG_SEPARATOR  default: "="
CFG_LINE_MULTI_VALS_SEPARATOR  Multi values separator.
CFG_QUOTE_PREFIX  Quote prefix & postfix
CFG_FILE_STOP_PREFIX  Array of strings prefixes which forces to stop config file parsing. default: "["
CFG_FILE_COMMENT_PREFIX  Array of string prefixes which mark comment line. defaults: "#", ";"
CFG_FILE_MULTI_LINE_POSTFIX  Array of string postfixes to determine multi lines.
CFG_FILE_OPTION_ARG_SEPARATOR  Option argument separator. default: "="
CFG_FILE_MULTI_VALS_SEPARATOR  Multi values separator.
CFG_N_PROPS  Special properties count


Function Documentation

int cfg_add_property const CFG_CONTEXT    con,
enum cfg_property_type    type,
char *    str
 

Add string to property

Parameters:
con  initialized context
type  property type
str  string for addition
Returns:
1 on success, 0 on not enough memory error
See also:
cfg_property_type

void cfg_clear_context_flag const CFG_CONTEXT    con,
int    flag
 

Clear context flag

Parameters:
con  initialized context
flag  context flag
Returns:
void

void cfg_clear_property const CFG_CONTEXT    con,
enum cfg_property_type    type
 

Clear all strings of property

Parameters:
con  initialized context
type  property type
Returns:
void
See also:
cfg_property_type

void cfg_fprint_error const CFG_CONTEXT    con,
FILE *    fh
 

Print error string to stream

Parameters:
con  initialized context
fh  stream opened for writting
Returns:
void

void cfg_free_context const CFG_CONTEXT    con
 

Destroy context

Parameters:
con  initialized context
Returns:
void

CFG_CONTEXT cfg_get_cfgfile_context long    begin_pos,
long    end_pos,
char *    filename,
struct cfg_option   options
 

Initialize config line context

Parameters:
begin_pos  starting position in file to parse
end_pos  ending position of file to parse
filename  parsed filename
options  pointer to options table
Returns:
initialized command line context

CFG_CONTEXT cfg_get_cmdline_context int    argc,
char **    argv,
struct cfg_option   options
 

Initialize command line context

Parameters:
argc  number of arguments
argv  arguments array
options  pointer to options table
Returns:
initialized command line context

CFG_CONTEXT cfg_get_context struct cfg_option   options
 

Initialize core context

Parameters:
options  pointer to options table
Returns:
initialized core context; further specification to command line or config file is required

int cfg_get_context_flag const CFG_CONTEXT    con,
int    flag
 

Get context flag

Parameters:
con  initialized context
flag  context flag
Returns:
0 on false, non-zero on true

int cfg_get_context_flags const CFG_CONTEXT    con
 

Get all context flags

Parameters:
con  initialized context
Returns:
all context flags

char* cfg_get_cur_arg const CFG_CONTEXT    con
 

Return currently processed option argument

Parameters:
con  initialized context
Returns:
pointer to current option argument

int cfg_get_cur_idx const CFG_CONTEXT    con
 

Return currently processed option index (argv index in command line context, file byte position or line position in config file context)

Parameters:
con  initialized context
Returns:
index of current option

char* cfg_get_cur_opt const CFG_CONTEXT    con
 

Return currently processed option name

Parameters:
con  initialized context
Returns:
pointer to current option name

char* cfg_get_error_str const CFG_CONTEXT    con
 

Get error string; error string is dynamically allocated, it needs to be freed after use.

Parameters:
con  initialized context
Returns:
dynamically allocated error string

int cfg_get_next_opt const CFG_CONTEXT    con
 

Parse next option(s) and return its value (if non-zero) or error code.

Parameters:
con  initialized context
Returns:
next option val, code of error (CFG_ERR_*) or CFG_OK on end
See also:
cfg_error , cfg_context

char* cfg_get_static_error_str const int    errorcode
 

Get static error string

Parameters:
errorcode  code of libcfg error
Returns:
static error string

int cfg_parse const CFG_CONTEXT    con
 

Parse context

Parameters:
con  initialized context
Returns:
code of error (CFG_ERR_*) or CFG_OK
See also:
cfg_error

void cfg_print_error const CFG_CONTEXT    con
 

Print error string to stderr

Parameters:
con  initialized context
Returns:
void

int cfg_remove_property const CFG_CONTEXT    con,
enum cfg_property_type    type,
char *    str
 

Remove string from property

Parameters:
con  initialized context
type  property type
str  string for removing
Returns:
1 on success, 0 on not enough memory error
See also:
cfg_property_type

void cfg_reset_context const CFG_CONTEXT    con
 

Reinitialize popt context

Parameters:
con  initialized context
Returns:
void

void cfg_set_cfgfile_context const CFG_CONTEXT    con,
long    begin_pos,
long    end_pos,
char *    filename
 

Set context to command line

Parameters:
con  initialized context
begin_pos  starting position in file to parse
end_pos  ending position of file to parse
filename  parsed filename
Returns:
void

void cfg_set_cmdline_context const CFG_CONTEXT    con,
int    argc,
char **    argv
 

Set context to command line

Parameters:
con  initialized context
argc  number of arguments
argv  arguments array
Returns:
void

void cfg_set_context_flag const CFG_CONTEXT    con,
int    flag
 

Set context flag

Parameters:
con  initialized context
flag  context flag
Returns:
void

void cfg_set_context_flags const CFG_CONTEXT    con,
int    flags
 

Overwrite context flags

Parameters:
con  initialized context
flags  context flags
Returns:
void


Generated on Wed Jun 12 00:51:17 2002 for libcfg+ by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001