Enlightenment CVS committal Author : mej Project : eterm Module : libast
Dir : eterm/libast/src Modified Files: array.c avl_tree.c dlinked_list.c linked_list.c obj.c regexp.c socket.c tok.c url.c Log Message: Tue Nov 18 23:15:59 2003 Michael Jennings (mej) Added D_*_IF macros for doing debugging conditionals more cleanly. Removed the bogus "next" member function from the array and vector interface classes. Fleshed out the iterator interface and implemented it for arrays. Fixed stupid mistake that made property functions overly type-strict. Cleaned up the "show" member functions. Added a routine for testing a regexp vs. a C string. Property-ized the URL class objects. =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/array.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- array.c 30 Oct 2003 23:13:53 -0000 1.8 +++ array.c 19 Nov 2003 04:21:15 -0000 1.9 @@ -29,6 +29,14 @@ #include <libast_internal.h> +/* *INDENT-OFF* */ +SPIF_DECL_OBJ(array_iterator) { + SPIF_DECL_PARENT_TYPE(obj); + spif_array_t subject; + size_t current_index; +}; +/* *INDENT-ON* */ + static spif_array_t spif_array_list_new(void); static spif_array_t spif_array_vector_new(void); static spif_bool_t spif_array_list_init(spif_array_t); @@ -50,13 +58,22 @@ static size_t spif_array_index(spif_array_t, spif_obj_t); static spif_bool_t spif_array_insert(spif_array_t, spif_obj_t); static spif_bool_t spif_array_insert_at(spif_array_t, spif_obj_t, size_t); -static spif_bool_t spif_array_iterator(spif_array_t); -static spif_obj_t spif_array_next(spif_array_t); +static spif_iterator_t spif_array_iterator(spif_array_t); static spif_bool_t spif_array_prepend(spif_array_t, spif_obj_t); static spif_obj_t spif_array_remove(spif_array_t, spif_obj_t); static spif_obj_t spif_array_remove_at(spif_array_t, size_t); static spif_bool_t spif_array_reverse(spif_array_t); static spif_obj_t *spif_array_to_array(spif_array_t); +static spif_array_iterator_t spif_array_iterator_new(spif_array_t subject); +static spif_bool_t spif_array_iterator_init(spif_array_iterator_t self, spif_array_t subject); +static spif_bool_t spif_array_iterator_done(spif_array_iterator_t self); +static spif_bool_t spif_array_iterator_del(spif_array_iterator_t self); +static spif_str_t spif_array_iterator_show(spif_array_iterator_t self, spif_charptr_t name, spif_str_t buff, size_t indent); +static spif_cmp_t spif_array_iterator_comp(spif_array_iterator_t self, spif_array_iterator_t other); +static spif_array_iterator_t spif_array_iterator_dup(spif_array_iterator_t self); +static spif_classname_t spif_array_iterator_type(spif_array_iterator_t self); +static spif_bool_t spif_array_iterator_has_next(spif_array_iterator_t self); +static spif_obj_t spif_array_iterator_next(spif_array_iterator_t self); /* *INDENT-OFF* */ static spif_const_listclass_t a_class = { @@ -80,7 +97,6 @@ (spif_func_t) spif_array_insert, (spif_func_t) spif_array_insert_at, (spif_func_t) spif_array_iterator, - (spif_func_t) spif_array_next, (spif_func_t) spif_array_prepend, (spif_func_t) spif_array_remove, (spif_func_t) spif_array_remove_at, @@ -106,11 +122,27 @@ (spif_func_t) spif_array_vector_find, (spif_func_t) spif_array_insert, (spif_func_t) spif_array_iterator, - (spif_func_t) spif_array_next, (spif_func_t) spif_array_remove, (spif_func_t) spif_array_to_array }; spif_vectorclass_t SPIF_VECTORCLASS_VAR(array) = &av_class; + +static spif_const_iteratorclass_t ai_class = { + { + SPIF_DECL_CLASSNAME(array), + (spif_func_t) spif_array_iterator_new, + (spif_func_t) spif_array_iterator_init, + (spif_func_t) spif_array_iterator_done, + (spif_func_t) spif_array_iterator_del, + (spif_func_t) spif_array_iterator_show, + (spif_func_t) spif_array_iterator_comp, + (spif_func_t) spif_array_iterator_dup, + (spif_func_t) spif_array_iterator_type + }, + (spif_func_t) spif_array_iterator_has_next, + (spif_func_t) spif_array_iterator_next +}; +spif_iteratorclass_t SPIF_ITERATORCLASS_VAR(array) = &ai_class; /* *INDENT-ON* */ static spif_array_t @@ -182,8 +214,13 @@ char tmp[4096]; size_t i; + if (SPIF_LIST_ISNULL(self)) { + SPIF_OBJ_SHOW_NULL(array, name, buff, indent, tmp); + return buff; + } + memset(tmp, ' ', indent); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_array_t) %s: {\n", name); + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_array_t) %s: %010p {\n", name, self); if (SPIF_STR_ISNULL(buff)) { buff = spif_str_new_from_ptr(tmp); } else { @@ -385,18 +422,10 @@ return TRUE; } -static spif_bool_t +static spif_iterator_t spif_array_iterator(spif_array_t self) { - USE_VAR(self); - return FALSE; -} - -static spif_obj_t -spif_array_next(spif_array_t self) -{ - USE_VAR(self); - return FALSE; + return SPIF_CAST(iterator) spif_array_iterator_new(self); } static spif_bool_t @@ -472,5 +501,120 @@ for (i = 0; i < self->len; i++) { tmp[i] = SPIF_CAST(obj) SPIF_OBJ(self->items[i]); } + return tmp; +} + +static spif_array_iterator_t +spif_array_iterator_new(spif_array_t subject) +{ + spif_array_iterator_t self; + + self = SPIF_ALLOC(array_iterator); + spif_array_iterator_init(self, subject); + return self; +} + +static spif_bool_t +spif_array_iterator_init(spif_array_iterator_t self, spif_array_t subject) +{ + spif_obj_init(SPIF_OBJ(self)); + spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS(SPIF_ITERATORCLASS_VAR(array))); + self->subject = subject; + self->current_index = 0; + return TRUE; +} + +static spif_bool_t +spif_array_iterator_done(spif_array_iterator_t self) +{ + self->subject = SPIF_NULL_TYPE(array); + self->current_index = 0; + return TRUE; +} + +static spif_bool_t +spif_array_iterator_del(spif_array_iterator_t self) +{ + spif_array_iterator_done(self); + SPIF_DEALLOC(self); + return TRUE; +} + +static spif_str_t +spif_array_iterator_show(spif_array_iterator_t self, spif_charptr_t name, spif_str_t buff, size_t indent) +{ + char tmp[4096]; + + if (SPIF_ITERATOR_ISNULL(self)) { + SPIF_OBJ_SHOW_NULL(iterator, name, buff, indent, tmp); + return buff; + } + + memset(tmp, ' ', indent); + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_array_iterator_t) %s: %010p {\n", name, self); + if (SPIF_STR_ISNULL(buff)) { + buff = spif_str_new_from_ptr(tmp); + } else { + spif_str_append_from_ptr(buff, tmp); + } + + buff = spif_array_show(self->subject, "subject", buff, indent + 2); + + memset(tmp, ' ', indent + 2); + snprintf(tmp + indent, sizeof(tmp) - indent, " (size_t) current_index: %lu\n", + SPIF_CAST_C(unsigned long) self->current_index); + spif_str_append_from_ptr(buff, tmp); + + snprintf(tmp + indent, sizeof(tmp) - indent, "}\n"); + spif_str_append_from_ptr(buff, tmp); + return buff; +} + +static spif_cmp_t +spif_array_iterator_comp(spif_array_iterator_t self, spif_array_iterator_t other) +{ + return SPIF_CMP_FROM_INT((int) (self->current_index - other->current_index)); +} + +static spif_array_iterator_t +spif_array_iterator_dup(spif_array_iterator_t self) +{ + spif_array_iterator_t tmp; + + tmp = spif_array_iterator_new(self->subject); + tmp->current_index = self->current_index; + return tmp; +} + +static spif_classname_t +spif_array_iterator_type(spif_array_iterator_t self) +{ + return SPIF_OBJ_CLASSNAME(self); +} + +static spif_bool_t +spif_array_iterator_has_next(spif_array_iterator_t self) +{ + spif_array_t subject; + + ASSERT_RVAL(!SPIF_ITERATOR_ISNULL(self), FALSE); + subject = self->subject; + REQUIRE_RVAL(!SPIF_LIST_ISNULL(subject), FALSE); + if (self->current_index >= subject->len) { + return FALSE; + } else { + return TRUE; + } +} + +static spif_obj_t +spif_array_iterator_next(spif_array_iterator_t self) +{ + spif_obj_t tmp; + + ASSERT_RVAL(!SPIF_ITERATOR_ISNULL(self), SPIF_NULL_TYPE(obj)); + REQUIRE_RVAL(!SPIF_LIST_ISNULL(self->subject), SPIF_NULL_TYPE(obj)); + tmp = spif_array_get(self->subject, self->current_index); + self->current_index++; return tmp; } =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/avl_tree.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- avl_tree.c 19 Feb 2003 21:10:31 -0000 1.2 +++ avl_tree.c 19 Nov 2003 04:21:15 -0000 1.3 @@ -157,7 +157,7 @@ char tmp[4096]; memset(tmp, ' ', indent); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_avl_tree_node_t) %s (%9p): ", + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_avl_tree_node_t) %s: %010p {\n", name, self); if (SPIF_STR_ISNULL(buff)) { buff = spif_str_new_from_ptr(tmp); @@ -186,6 +186,9 @@ if (!SPIF_AVL_TREE_NODE_ISNULL(self->right)) { buff = spif_avl_tree_node_show(self->right, "right", buff, indent + 2); } + memset(tmp, ' ', indent); + snprintf(tmp + indent, sizeof(tmp) - indent, "}\n"); + spif_str_append_from_ptr(buff, tmp); return buff; } =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/dlinked_list.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- dlinked_list.c 19 Feb 2003 21:10:33 -0000 1.9 +++ dlinked_list.c 19 Nov 2003 04:21:15 -0000 1.10 @@ -56,8 +56,7 @@ static size_t spif_dlinked_list_index(spif_dlinked_list_t, spif_obj_t); static spif_bool_t spif_dlinked_list_insert(spif_dlinked_list_t, spif_obj_t); static spif_bool_t spif_dlinked_list_insert_at(spif_dlinked_list_t, spif_obj_t, size_t); -static spif_bool_t spif_dlinked_list_iterator(spif_dlinked_list_t); -static spif_obj_t spif_dlinked_list_next(spif_dlinked_list_t); +static spif_iterator_t spif_dlinked_list_iterator(spif_dlinked_list_t); static spif_bool_t spif_dlinked_list_prepend(spif_dlinked_list_t, spif_obj_t); static spif_obj_t spif_dlinked_list_remove(spif_dlinked_list_t, spif_obj_t); static spif_obj_t spif_dlinked_list_remove_at(spif_dlinked_list_t, size_t); @@ -99,7 +98,6 @@ (spif_func_t) spif_dlinked_list_insert, (spif_func_t) spif_dlinked_list_insert_at, (spif_func_t) spif_dlinked_list_iterator, - (spif_func_t) spif_dlinked_list_next, (spif_func_t) spif_dlinked_list_prepend, (spif_func_t) spif_dlinked_list_remove, (spif_func_t) spif_dlinked_list_remove_at, @@ -262,7 +260,7 @@ size_t i; memset(tmp, ' ', indent); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_dlinked_list_t) %s: {\n", name); + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_dlinked_list_t) %s: %010p {\n", name, self); if (SPIF_STR_ISNULL(buff)) { buff = spif_str_new_from_ptr(tmp); } else { @@ -454,18 +452,11 @@ return TRUE; } -static spif_bool_t +static spif_iterator_t spif_dlinked_list_iterator(spif_dlinked_list_t self) { USE_VAR(self); - return FALSE; -} - -static spif_obj_t -spif_dlinked_list_next(spif_dlinked_list_t self) -{ - USE_VAR(self); - return FALSE; + return SPIF_NULL_TYPE(iterator); } static spif_bool_t =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/linked_list.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- linked_list.c 19 Feb 2003 21:10:34 -0000 1.12 +++ linked_list.c 19 Nov 2003 04:21:15 -0000 1.13 @@ -21,7 +21,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -static const char cvs_ident[] = "$Id: linked_list.c,v 1.12 2003/02/19 21:10:34 mej Exp $"; +static const char cvs_ident[] = "$Id: linked_list.c,v 1.13 2003/11/19 04:21:15 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -56,8 +56,7 @@ static size_t spif_linked_list_index(spif_linked_list_t, spif_obj_t); static spif_bool_t spif_linked_list_insert(spif_linked_list_t, spif_obj_t); static spif_bool_t spif_linked_list_insert_at(spif_linked_list_t, spif_obj_t, size_t); -static spif_bool_t spif_linked_list_iterator(spif_linked_list_t); -static spif_obj_t spif_linked_list_next(spif_linked_list_t); +static spif_iterator_t spif_linked_list_iterator(spif_linked_list_t); static spif_bool_t spif_linked_list_prepend(spif_linked_list_t, spif_obj_t); static spif_obj_t spif_linked_list_remove(spif_linked_list_t, spif_obj_t); static spif_obj_t spif_linked_list_remove_at(spif_linked_list_t, size_t); @@ -99,7 +98,6 @@ (spif_func_t) spif_linked_list_insert, (spif_func_t) spif_linked_list_insert_at, (spif_func_t) spif_linked_list_iterator, - (spif_func_t) spif_linked_list_next, (spif_func_t) spif_linked_list_prepend, (spif_func_t) spif_linked_list_remove, (spif_func_t) spif_linked_list_remove_at, @@ -258,7 +256,7 @@ size_t i; memset(tmp, ' ', indent); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_linked_list_t) %s: {\n", name); + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_linked_list_t) %s: %010p {\n", name, self); if (SPIF_STR_ISNULL(buff)) { buff = spif_str_new_from_ptr(tmp); } else { @@ -424,18 +422,11 @@ } } -static spif_bool_t +static spif_iterator_t spif_linked_list_iterator(spif_linked_list_t self) { USE_VAR(self); - return FALSE; -} - -static spif_obj_t -spif_linked_list_next(spif_linked_list_t self) -{ - USE_VAR(self); - return FALSE; + return SPIF_NULL_TYPE(iterator); } static spif_bool_t =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/obj.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- obj.c 10 Nov 2003 19:29:19 -0000 1.16 +++ obj.c 19 Nov 2003 04:21:15 -0000 1.17 @@ -28,11 +28,11 @@ * This file contains the basic object class. * * @author Michael Jennings <[EMAIL PROTECTED]> - * $Revision: 1.16 $ - * $Date: 2003/11/10 19:29:19 $ + * $Revision: 1.17 $ + * $Date: 2003/11/19 04:21:15 $ */ -static const char cvs_ident[] = "$Id: obj.c,v 1.16 2003/11/10 19:29:19 mej Exp $"; +static const char cvs_ident[] = "$Id: obj.c,v 1.17 2003/11/19 04:21:15 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -189,7 +189,7 @@ } memset(tmp, ' ', indent); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_obj_t) %s: (spif_obj_t) { \"%s\" }\n", name, SPIF_OBJ_CLASSNAME(self)); + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_obj_t) %s: %010p \"%s\"\n", name, self, SPIF_OBJ_CLASSNAME(self)); if (SPIF_STR_ISNULL(buff)) { buff = spif_str_new_from_ptr(tmp); } else { =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/regexp.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- regexp.c 10 Nov 2003 19:29:20 -0000 1.6 +++ regexp.c 19 Nov 2003 04:21:16 -0000 1.7 @@ -21,7 +21,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -static const char cvs_ident[] = "$Id: regexp.c,v 1.6 2003/11/10 19:29:20 mej Exp $"; +static const char cvs_ident[] = "$Id: regexp.c,v 1.7 2003/11/19 04:21:16 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -254,6 +254,55 @@ return FALSE; } return ((re_exec(SPIF_STR_STR(subject)) == 0) ? (FALSE) : (TRUE)); + } +#endif +} + +spif_bool_t +spif_regexp_matches_ptr(spif_regexp_t self, spif_charptr_t subject) +{ +#ifdef LIBAST_REGEXP_SUPPORT_PCRE + { + int rc; + + rc = pcre_exec(SPIF_CAST_C(pcre *) self->data, NULL, subject, + strlen(subject), 0, 0, NULL, 0); + if (rc == 0) { + return TRUE; + } else if (rc == PCRE_ERROR_NOMATCH) { + return FALSE; + } else { + print_error("PCRE matching error %d on \"%s\"\n", rc, subject); + return FALSE; + } + } +#elif defined(LIBAST_REGEXP_SUPPORT_POSIX) + { + int rc; + char errbuf[256]; + + rc = regexec(SPIF_CAST_C(regex_t *) self->data, subject, (size_t) 0, (regmatch_t *) NULL, + ((self->flags >> 8) & 0xffff)); + if (rc == 0) { + return TRUE; + } else if (rc == REG_NOMATCH) { + return FALSE; + } else { + regerror(rc, SPIF_CAST_C(regex_t *) self->data, errbuf, sizeof(errbuf)); + print_error("POSIX regexp matching error on \"%s\" -- %s\n", subject, errbuf); + return FALSE; + } + } +#elif defined(LIBAST_REGEXP_SUPPORT_BSD) + { + spif_charptr_t err; + + err = SPIF_CAST(charptr) re_comp(SPIF_STR_STR(SPIF_STR(self))); + if (err != SPIF_NULL_TYPE(charptr)) { + print_error("BSD regexp compilation of \"%s\" failed -- %s\n", SPIF_STR_STR(SPIF_STR(self)), err); + return FALSE; + } + return ((re_exec(subject) == 0) ? (FALSE) : (TRUE)); } #endif } =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/socket.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- socket.c 10 Nov 2003 19:29:20 -0000 1.11 +++ socket.c 19 Nov 2003 04:21:16 -0000 1.12 @@ -21,7 +21,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -static const char cvs_ident[] = "$Id: socket.c,v 1.11 2003/11/10 19:29:20 mej Exp $"; +static const char cvs_ident[] = "$Id: socket.c,v 1.12 2003/11/19 04:21:16 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -160,7 +160,7 @@ } memset(tmp, ' ', indent); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_socket_t) %s: {\n", name); + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_socket_t) %s: %010p {\n", name, self); if (SPIF_STR_ISNULL(buff)) { buff = spif_str_new_from_ptr(tmp); } else { =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/tok.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- tok.c 4 Jul 2003 03:38:26 -0000 1.14 +++ tok.c 19 Nov 2003 04:21:16 -0000 1.15 @@ -21,7 +21,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -static const char cvs_ident[] = "$Id: tok.c,v 1.14 2003/07/04 03:38:26 mej Exp $"; +static const char cvs_ident[] = "$Id: tok.c,v 1.15 2003/11/19 04:21:16 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -254,7 +254,7 @@ } memset(tmp, ' ', indent); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_tok_t) %s: {\n", name); + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_tok_t) %s: %010p {\n", name, self); if (SPIF_STR_ISNULL(buff)) { buff = spif_str_new_from_ptr(tmp); } else { =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/url.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- url.c 4 Jul 2003 03:38:26 -0000 1.10 +++ url.c 19 Nov 2003 04:21:16 -0000 1.11 @@ -21,7 +21,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -static const char cvs_ident[] = "$Id: url.c,v 1.10 2003/07/04 03:38:26 mej Exp $"; +static const char cvs_ident[] = "$Id: url.c,v 1.11 2003/11/19 04:21:16 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -177,7 +177,7 @@ } memset(tmp, ' ', indent); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_url_t) %s: {\n", name); + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_url_t) %s: %010p {\n", name, self); if (SPIF_STR_ISNULL(buff)) { buff = spif_str_new_from_ptr(tmp); } else { @@ -225,131 +225,13 @@ return SPIF_OBJ_CLASSNAME(self); } -spif_str_t -spif_url_get_proto(spif_url_t self) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), SPIF_NULL_TYPE(str)); - return self->proto; -} - -spif_bool_t -spif_url_set_proto(spif_url_t self, spif_str_t newproto) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), FALSE); - if (!SPIF_STR_ISNULL(self->proto)) { - spif_str_done(self->proto); - } - self->proto = spif_str_dup(newproto); - return TRUE; -} - -spif_str_t -spif_url_get_user(spif_url_t self) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), SPIF_NULL_TYPE(str)); - return self->user; -} - -spif_bool_t -spif_url_set_user(spif_url_t self, spif_str_t newuser) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), FALSE); - if (!SPIF_STR_ISNULL(self->user)) { - spif_str_done(self->user); - } - self->user = spif_str_dup(newuser); - return TRUE; -} - -spif_str_t -spif_url_get_passwd(spif_url_t self) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), SPIF_NULL_TYPE(str)); - return self->passwd; -} - -spif_bool_t -spif_url_set_passwd(spif_url_t self, spif_str_t newpasswd) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), FALSE); - if (!SPIF_STR_ISNULL(self->passwd)) { - spif_str_done(self->passwd); - } - self->passwd = spif_str_dup(newpasswd); - return TRUE; -} - -spif_str_t -spif_url_get_host(spif_url_t self) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), SPIF_NULL_TYPE(str)); - return self->host; -} - -spif_bool_t -spif_url_set_host(spif_url_t self, spif_str_t newhost) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), FALSE); - if (!SPIF_STR_ISNULL(self->host)) { - spif_str_done(self->host); - } - self->host = spif_str_dup(newhost); - return TRUE; -} - -spif_str_t -spif_url_get_port(spif_url_t self) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), SPIF_NULL_TYPE(str)); - return self->port; -} - -spif_bool_t -spif_url_set_port(spif_url_t self, spif_str_t newport) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), FALSE); - if (!SPIF_STR_ISNULL(self->port)) { - spif_str_done(self->port); - } - self->port = spif_str_dup(newport); - return TRUE; -} - -spif_str_t -spif_url_get_path(spif_url_t self) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), SPIF_NULL_TYPE(str)); - return self->path; -} - -spif_bool_t -spif_url_set_path(spif_url_t self, spif_str_t newpath) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), FALSE); - if (!SPIF_STR_ISNULL(self->path)) { - spif_str_done(self->path); - } - self->path = spif_str_dup(newpath); - return TRUE; -} - -spif_str_t -spif_url_get_query(spif_url_t self) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), SPIF_NULL_TYPE(str)); - return self->query; -} - -spif_bool_t -spif_url_set_query(spif_url_t self, spif_str_t newquery) -{ - REQUIRE_RVAL(SPIF_OBJ_IS_URL(self), FALSE); - if (!SPIF_STR_ISNULL(self->query)) { - spif_str_done(self->query); - } - self->query = spif_str_dup(newquery); - return TRUE; -} +SPIF_DEFINE_PROPERTY_FUNC(url, str, proto); +SPIF_DEFINE_PROPERTY_FUNC(url, str, user); +SPIF_DEFINE_PROPERTY_FUNC(url, str, passwd); +SPIF_DEFINE_PROPERTY_FUNC(url, str, host); +SPIF_DEFINE_PROPERTY_FUNC(url, str, port); +SPIF_DEFINE_PROPERTY_FUNC(url, str, path); +SPIF_DEFINE_PROPERTY_FUNC(url, str, query); static spif_bool_t spif_url_parse(spif_url_t self) ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs