Di_parser

## Data Structures

struct | di_parser_info
| Parse info. More...
struct | di_parser_fieldinfo
| Info about a parser field. More...

## Macros

#define | DI_PARSER_FIELDINFO(name, read, write, integer) { { name, sizeof (name) - 1 }, read, write, integer }

## Typedefs

typedef void | di_parser_fields_function_read(void **data, const di_parser_fieldinfo *fip, di_rstring *field_modifier, di_rstring *value, void *user_data)
typedef void | di_parser_fields_function_write_callback(const di_rstring *field, const di_rstring *value, void *data)
typedef void | di_parser_fields_function_write(void **data, const di_parser_fieldinfo *fip, di_parser_fields_function_write_callback callback, void *callback_data, void *user_data)
typedef void * | di_parser_read_entry_new(void *user_data)
typedef int | di_parser_read_entry_finish(void *data, void *user_data)
typedef void * | di_parser_write_entry_next(void **state_data, void *user_data)

## Functions

di_parser_info * | di_parser_info_alloc (void)
void | di_parser_info_free (di_parser_info *info)
void | di_parser_info_add (di_parser_info *info, const di_parser_fieldinfo *fieldinfo[])

## Variables

di_parser_fields_function_read | di_parser_read_boolean
di_parser_fields_function_read | di_parser_read_int
di_parser_fields_function_read | di_parser_read_rstring
di_parser_fields_function_read | di_parser_read_string
di_parser_fields_function_write | di_parser_write_boolean
di_parser_fields_function_write | di_parser_write_int
di_parser_fields_function_write | di_parser_write_rstring
di_parser_fields_function_write | di_parser_write_string

## Detailed Description

## Macro Definition Documentation

## DI_PARSER_FIELDINFO

#define DI_PARSER_FIELDINFO | ( |  | name,
|  |  | read,
|  |  | write,
|  |  | integer
| ) |  | { { name, sizeof (name) - 1 }, read, write, integer }

generates a di_parser_fieldinfo

{ { name, sizeof (name) - 1 }, read, write, integer }

## Typedef Documentation

## di_parser_fields_function_read

typedef void di_parser_fields_function_read(void **data, const di_parser_fieldinfo *fip, di_rstring *field_modifier, di_rstring *value, void *user_data)

Read a single field

Parameters

  data | the actual data
  fip | info of the actual field
  value | the actual value
  value_size | size of the actual value
  user_data | data supplied to the parser

## di_parser_fields_function_write

typedef void di_parser_fields_function_write(void **data, const di_parser_fieldinfo *fip, di_parser_fields_function_write_callback callback, void *callback_data, void *user_data)

Write a single field

Parameters

  data | the actual data
  fip | info of the actual field
  output | static buffer for output
  user_data | data supplied to the parser

Returns
  written bytes

## di_parser_fields_function_write_callback

typedef void di_parser_fields_function_write_callback(const di_rstring *field, const di_rstring *value, void *data)

Write a single field - callback

Parameters

  field | the field
  value | the value of the field
  data | the callback_data

## di_parser_read_entry_finish

typedef int di_parser_read_entry_finish(void *data, void *user_data)

Parameters

  data | the actual data
  user_data | data supplied to di_parse

## di_parser_read_entry_new

typedef void * di_parser_read_entry_new(void *user_data)

Parameters

  user_data | data supplied to di_parse

Returns
  new data

## di_parser_write_entry_next

typedef void * di_parser_write_entry_next(void **state_data, void *user_data)

Parameters

  data | the actual data
  user_data | data supplied to di_parse

## Function Documentation

## di_parser_info_add()

void di_parser_info_add | ( | di_parser_info * | info,
|  | const di_parser_fieldinfo * | fieldinfo[]
| ) |  |

{
di_parser_fieldinfo **fip;
for (fip = (di_parser_fieldinfo **) fieldinfo; *fip; fip++)
{
di_hash_table_insert (info->table, &(*fip)->key, *fip);
di_slist_append (&info->list, *fip);
}
}
di_hash_table_insert
void di_hash_table_insert(di_hash_table *hash_table, void *key, void *value)
Definition hash.c:178
di_slist_append
void di_slist_append(di_slist *slist, void *data) __attribute__((nonnull(1)))
Definition slist.c:68
di_parser_fieldinfo
Info about a parser field.
Definition parser.h:105
di_parser_info::list
di_slist list
Definition parser.h:96
di_parser_info::table
di_hash_table * table
Definition parser.h:95

## di_parser_info_alloc()

di_parser_info * di_parser_info_alloc | ( | void |  | ) |

{
di_parser_info *info;
info = di_new0 (di_parser_info, 1);
info->table = di_hash_table_new (di_rstring_hash, di_rstring_equal);
return info;
}
di_hash_table_new
di_hash_table * di_hash_table_new(di_hash_func hash_func, di_equal_func key_equal_func)
Definition hash.c:108
di_new0
#define di_new0(struct_type, n_structs)
Definition mem.h:79
di_parser_info
Parse info.
Definition parser.h:94

## di_parser_info_free()

void di_parser_info_free | ( | di_parser_info * | info | ) |

{
di_hash_table_destroy (info->table);
di_slist_destroy (&info->list, NULL);
di_free (info);
}
di_hash_table_destroy
void di_hash_table_destroy(di_hash_table *hash_table)
Definition hash.c:134
di_free
void di_free(void *mem)
Definition mem.c:60
di_slist_destroy
void di_slist_destroy(di_slist *slist, di_destroy_notify destroy_func) __attribute__((nonnull(1)))
Definition slist.c:35

## Variable Documentation

## di_parser_read_boolean

di_parser_fields_function_read di_parser_read_boolean

Read function for a boolean (true == "Yes")

## di_parser_read_int

di_parser_fields_function_read di_parser_read_int

Read function for an int

## di_parser_read_rstring

di_parser_fields_function_read di_parser_read_rstring

Read function for a di_rstring

## di_parser_read_string

di_parser_fields_function_read di_parser_read_string

Read function for a string

## di_parser_write_boolean

di_parser_fields_function_write di_parser_write_boolean

Write function for a boolean ("Yes" == true)

## di_parser_write_int

di_parser_fields_function_write di_parser_write_int

Write function for an int

## di_parser_write_rstring

di_parser_fields_function_write di_parser_write_rstring

Write function for a di_string

## di_parser_write_string

di_parser_fields_function_write di_parser_write_string

Write function for a string