avahi 0.6.30

avahi-common/strlst.h

Go to the documentation of this file.
00001 #ifndef footxtlisthfoo
00002 #define footxtlisthfoo
00003 
00004 /***
00005   This file is part of avahi.
00006 
00007   avahi is free software; you can redistribute it and/or modify it
00008   under the terms of the GNU Lesser General Public License as
00009   published by the Free Software Foundation; either version 2.1 of the
00010   License, or (at your option) any later version.
00011 
00012   avahi is distributed in the hope that it will be useful, but WITHOUT
00013   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
00014   or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
00015   Public License for more details.
00016 
00017   You should have received a copy of the GNU Lesser General Public
00018   License along with avahi; if not, write to the Free Software
00019   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00020   USA.
00021 ***/
00022 
00025 #include <sys/types.h>
00026 #include <inttypes.h>
00027 #include <stdarg.h>
00028 
00029 #include <avahi-common/cdecl.h>
00030 #include <avahi-common/gccmacro.h>
00031 
00032 AVAHI_C_DECL_BEGIN
00033 
00040 typedef struct AvahiStringList {
00041     struct AvahiStringList *next; 
00042     size_t size;  
00043     uint8_t text[1]; 
00044 } AvahiStringList;
00045 
00051 AvahiStringList *avahi_string_list_new(const char *txt, ...) AVAHI_GCC_SENTINEL;
00052 
00055 AvahiStringList *avahi_string_list_new_va(va_list va);
00061 AvahiStringList *avahi_string_list_new_from_array(const char **array, int length);
00062 
00064 void avahi_string_list_free(AvahiStringList *l);
00065 
00073 AvahiStringList *avahi_string_list_add(AvahiStringList *l, const char *text);
00074 
00076 AvahiStringList *avahi_string_list_add_printf(AvahiStringList *l, const char *format, ...) AVAHI_GCC_PRINTF_ATTR23;
00077 
00080 AvahiStringList *avahi_string_list_add_vprintf(AvahiStringList *l, const char *format, va_list va);
00085 AvahiStringList *avahi_string_list_add_arbitrary(AvahiStringList *l, const uint8_t *text, size_t size);
00086 
00092 AvahiStringList*avahi_string_list_add_anonymous(AvahiStringList *l, size_t size);
00093 
00097 AvahiStringList *avahi_string_list_add_many(AvahiStringList *r, ...) AVAHI_GCC_SENTINEL;
00098 
00102 AvahiStringList *avahi_string_list_add_many_va(AvahiStringList *r, va_list va);
00112 char* avahi_string_list_to_string(AvahiStringList *l);
00113 
00117 size_t avahi_string_list_serialize(AvahiStringList *l, void * data, size_t size);
00118 
00120 int avahi_string_list_parse(const void *data, size_t size, AvahiStringList **ret);
00124 int avahi_string_list_equal(const AvahiStringList *a, const AvahiStringList *b);
00125 
00127 AvahiStringList *avahi_string_list_copy(const AvahiStringList *l);
00128 
00130 AvahiStringList* avahi_string_list_reverse(AvahiStringList *l);
00131 
00133 unsigned avahi_string_list_length(const AvahiStringList *l);
00134 
00140 AvahiStringList *avahi_string_list_get_next(AvahiStringList *l);
00141 
00143 uint8_t *avahi_string_list_get_text(AvahiStringList *l);
00144 
00146 size_t avahi_string_list_get_size(AvahiStringList *l);
00147 
00153 AvahiStringList *avahi_string_list_find(AvahiStringList *l, const char *key);
00154 
00160 int avahi_string_list_get_pair(AvahiStringList *l, char **key, char **value, size_t *size);
00161 
00164 AvahiStringList *avahi_string_list_add_pair(AvahiStringList *l, const char *key, const char *value);
00165 
00167 AvahiStringList *avahi_string_list_add_pair_arbitrary(AvahiStringList *l, const char *key, const uint8_t *value, size_t size);
00168 
00174 uint32_t avahi_string_list_get_service_cookie(AvahiStringList *l);
00177 AVAHI_C_DECL_END
00178 
00179 #endif
00180