src/stringpair.h
author Volker Birk <vb@pep-project.org>
Wed, 16 Mar 2016 11:20:52 +0100
changeset 507 288496838ffb
parent 281 9f7691853773
child 786 cd0c6d03e539
permissions -rw-r--r--
adding get_binary_path() to Message API
     1 #pragma once
     2 
     3 #include "dynamic_api.h"
     4 
     5 #ifdef __cplusplus
     6 extern "C" {
     7 #endif
     8 
     9 
    10 typedef struct _stringpair_t {
    11     char * key;
    12     char * value;
    13 } stringpair_t;
    14 
    15 
    16 // new_stringpair() - allocate new stringpair_t
    17 //
    18 //  parameters:
    19 //      key (in)        utf-8 string used as key
    20 //      value (in)      utf-8 string containing the value
    21 //
    22 //  return value:
    23 //      pointer to stringpair_t or NULL on failure
    24 //
    25 //  caveat:
    26 //      key and value are copied and remain in the ownership of the caller
    27 
    28 DYNAMIC_API stringpair_t * new_stringpair(const char *key, const char *value);
    29 
    30 
    31 // free_stringpair() - free memory allocated by stringpair_t
    32 //
    33 //  parameters:
    34 //      pair (in)       pointer to stringpair_t to free
    35 
    36 DYNAMIC_API void free_stringpair(stringpair_t * pair);
    37 
    38 
    39 // stringpair_dup() - duplicate stringpair_t (deep copy)
    40 //
    41 //  parameters:
    42 //      src (in)        pointer to stringpair_t to duplicate
    43 //
    44 //  return value:
    45 //      pointer to copy of src or NULL on failure
    46 
    47 DYNAMIC_API stringpair_t * stringpair_dup(const stringpair_t *src);
    48 
    49 
    50 typedef struct _stringpair_list_t {
    51     stringpair_t *value;
    52     struct _stringpair_list_t *next;
    53 } stringpair_list_t;
    54 
    55 
    56 // new_stringpair_list() - allocate a new stringpair_list
    57 //
    58 //  parameters:
    59 //      value (in)              initial value
    60 //
    61 //  return value:
    62 //      pointer to stringpair_list_t object or NULL if out of memory
    63 //
    64 //  caveat:
    65 //      the ownership of the value goes to the stringpair_list
    66 
    67 DYNAMIC_API stringpair_list_t *new_stringpair_list(stringpair_t *value);
    68 
    69 
    70 // stringpair_list_dup() - duplicate a stringpair_list
    71 //
    72 //  parameters:
    73 //      src (in)                stringpair_list to copy
    74 //
    75 //  return value:
    76 //      pointer to stringpair_list_t object or NULL if out of memory
    77 
    78 DYNAMIC_API stringpair_list_t *stringpair_list_dup(
    79         const stringpair_list_t *src
    80     );
    81 
    82 
    83 // stringpair_list_add() - add key to stringpair_list
    84 //
    85 //  parameters:
    86 //      stringpair_list (in)    stringpair_list struct or NULL to create a new
    87 //                              one
    88 //      value (in)              stringpair to add
    89 //
    90 //  return value:
    91 //      pointer to last element in stringpair_list or NULL if out of memory
    92 //
    93 //  caveat:
    94 //      the ownership of the value goes to the stringpair_list
    95 
    96 DYNAMIC_API stringpair_list_t *stringpair_list_add(
    97         stringpair_list_t *stringpair_list,
    98         stringpair_t *value
    99     );
   100 
   101 
   102 // stringpair_list_append() - append stringpair_list to stringpair_list
   103 //
   104 //  parameters:
   105 //      stringpair_list (in)    stringpair_list struct to append to
   106 //      second (in)             stringpair_list struct to append
   107 //
   108 //  return value:
   109 //      pointer to last element in stringpair_list or NULL if out of memory
   110 //
   111 //  caveat:
   112 //      all values are being copied before being added to the list
   113 //      the original values are still being owned by the caller
   114 
   115 DYNAMIC_API stringpair_list_t *stringpair_list_append(
   116         stringpair_list_t *stringpair_list,
   117         stringpair_list_t *second
   118     );
   119 
   120 
   121 // stringpair_list_length() - get length of stringpair_list
   122 //
   123 //  parameters:
   124 //      stringpair_list (in)    stringpair_list struct to determine length of
   125 //
   126 //  return value:
   127 //      length of stringpair_list in number of elements
   128 
   129 DYNAMIC_API int stringpair_list_length(
   130         const stringpair_list_t *stringpair_list
   131     );
   132 
   133 
   134 // free_stringpair_list() - free memory occupied by stringpair_list
   135 //
   136 //  parameters:
   137 //      stringpair_list (in)    stringpair_list to free
   138 
   139 DYNAMIC_API void free_stringpair_list(stringpair_list_t *stringpair_list);
   140 
   141 
   142 // stringpair_list_find() - find element in list using key
   143 //
   144 //  parameters:
   145 //      stringpair_list (in)    list to search
   146 //      key (in)                key to search for
   147 //
   148 //  return value:
   149 //      node with result if found or NULL if not
   150 
   151 DYNAMIC_API stringpair_list_t *stringpair_list_find(
   152         stringpair_list_t *stringpair_list,
   153         const char *key
   154     );
   155 
   156 
   157 #ifdef __cplusplus
   158 }
   159 #endif
   160