Enlightenment CVS committal Author : mej Project : eterm Module : libast
Dir : eterm/libast/include/libast Modified Files: linked_list.h obj.h str.h Log Message: Mon Feb 2 17:22:42 2004 Michael Jennings (mej) More cleanups. And yes, I know "make test" doesn't work. =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/include/libast/linked_list.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- linked_list.h 24 Jan 2004 19:52:26 -0000 1.11 +++ linked_list.h 2 Feb 2004 22:21:21 -0000 1.12 @@ -36,14 +36,14 @@ #define SPIF_OBJ_IS_LINKED_LIST_ITEM(o) (SPIF_OBJ_IS_TYPE((o), linked_list_item)) SPIF_DECL_OBJ(linked_list_item) { - spif_obj_t data; - spif_linked_list_item_t next; + SPIF_DECL_PROPERTY(obj, data); + SPIF_DECL_PROPERTY(linked_list_item, next); }; SPIF_DECL_OBJ(linked_list) { SPIF_DECL_PARENT_TYPE(obj); - spif_listidx_t len; - spif_linked_list_item_t head; + SPIF_DECL_PROPERTY(listidx, len); + SPIF_DECL_PROPERTY(linked_list_item, head); }; extern spif_listclass_t SPIF_LISTCLASS_VAR(linked_list); =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/include/libast/obj.h,v retrieving revision 1.26 retrieving revision 1.27 diff -u -3 -r1.26 -r1.27 --- obj.h 10 Jan 2004 21:15:16 -0000 1.26 +++ obj.h 2 Feb 2004 22:21:21 -0000 1.27 @@ -33,8 +33,8 @@ * manipulating basic generic objects. * * @author Michael Jennings <[EMAIL PROTECTED]> - * $Revision: 1.26 $ - * $Date: 2004/01/10 21:15:16 $ + * $Revision: 1.27 $ + * $Date: 2004/02/02 22:21:21 $ */ /[EMAIL PROTECTED]/ @@ -160,8 +160,8 @@ * @see @link DOXGRP_OBJ LibAST Object Infrastructure @endlink */ #define SPIF_DECL_PROPERTY_FUNC(otype, vtype, name) \ - extern SPIF_TYPE(vtype) spif_ ## otype ## _get_ ## name (SPIF_TYPE(otype)); \ - extern SPIF_TYPE(bool) spif_ ## otype ## _set_ ## name (SPIF_TYPE(otype), SPIF_TYPE(vtype)) + SPIF_TYPE(vtype) spif_ ## otype ## _get_ ## name (SPIF_TYPE(otype)); \ + SPIF_TYPE(bool) spif_ ## otype ## _set_ ## name (SPIF_TYPE(otype), SPIF_TYPE(vtype)) /** * Declare the get/set methods of a "property" of an object. @@ -176,8 +176,8 @@ * @see @link DOXGRP_OBJ LibAST Object Infrastructure @endlink, SPIF_DECL_PROPERTY_FUNC() */ #define SPIF_DECL_PROPERTY_FUNC_C(otype, vtype, name) \ - extern vtype spif_ ## otype ## _get_ ## name (SPIF_TYPE(otype)); \ - extern SPIF_TYPE(bool) spif_ ## otype ## _set_ ## name (SPIF_TYPE(otype), vtype) + vtype spif_ ## otype ## _get_ ## name (SPIF_TYPE(otype)); \ + SPIF_TYPE(bool) spif_ ## otype ## _set_ ## name (SPIF_TYPE(otype), vtype) /** * Define the get/set methods of a "property" of an object. @@ -650,6 +650,29 @@ spif_str_append_from_ptr((b), tmp); \ } \ } while (0) + +/** + * Convenience macro for handling NULL objects in a comparison. + * + * This macro exists because I got tired of typing the same thing over + * and over again to handle comparisons where either object may be + * NULL. You should have this at the start of all of your *_comp() + * functions. + * + * @param s The "self" (first) object. + * @param o The "other" (second) object. + * + * @see @link DOXGRP_OBJ LibAST Object Infrastructure @endlink, spif_obj_comp() + */ +#define SPIF_OBJ_COMP_CHECK_NULL(s, o) do { \ + if (SPIF_OBJ_ISNULL((s)) && SPIF_OBJ_ISNULL((o))) { \ + return SPIF_CMP_EQUAL; \ + } else if (SPIF_OBJ_ISNULL((s))) { \ + return SPIF_CMP_LESS; \ + } else if (SPIF_OBJ_ISNULL((o))) { \ + return SPIF_CMP_GREATER; \ + } \ + } while (0) /[EMAIL PROTECTED]/ =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/include/libast/str.h,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- str.h 10 Jan 2004 21:15:16 -0000 1.16 +++ str.h 2 Feb 2004 22:21:21 -0000 1.17 @@ -40,57 +40,59 @@ #define SPIF_STR_STR(obj) (SPIF_CONST_CAST(charptr) ((SPIF_STR_ISNULL(obj)) \ ? (SPIF_CAST(charptr) "") \ : (SPIF_STR(obj)->s))) +typedef size_t spif_stridx_t; SPIF_DECL_OBJ(str) { SPIF_DECL_PARENT_TYPE(obj); spif_charptr_t s; - SPIF_DECL_PROPERTY_C(size_t, size); - SPIF_DECL_PROPERTY_C(size_t, len); + SPIF_DECL_PROPERTY_C(spif_stridx_t, size); + SPIF_DECL_PROPERTY_C(spif_stridx_t, len); }; extern spif_class_t SPIF_CLASS_VAR(str); extern spif_str_t spif_str_new(void); extern spif_str_t spif_str_new_from_ptr(spif_charptr_t); -extern spif_str_t spif_str_new_from_buff(spif_charptr_t, size_t); +extern spif_str_t spif_str_new_from_buff(spif_charptr_t, spif_stridx_t); extern spif_str_t spif_str_new_from_fp(FILE *); extern spif_str_t spif_str_new_from_fd(int); extern spif_str_t spif_str_new_from_num(long); extern spif_bool_t spif_str_del(spif_str_t); extern spif_bool_t spif_str_init(spif_str_t); extern spif_bool_t spif_str_init_from_ptr(spif_str_t, spif_charptr_t); -extern spif_bool_t spif_str_init_from_buff(spif_str_t, spif_charptr_t, size_t); +extern spif_bool_t spif_str_init_from_buff(spif_str_t, spif_charptr_t, spif_stridx_t); extern spif_bool_t spif_str_init_from_fp(spif_str_t, FILE *); extern spif_bool_t spif_str_init_from_fd(spif_str_t, int); extern spif_bool_t spif_str_init_from_num(spif_str_t, long); extern spif_bool_t spif_str_done(spif_str_t); +extern spif_str_t spif_str_show(spif_str_t, spif_charptr_t, spif_str_t, size_t); +extern spif_cmp_t spif_str_comp(spif_str_t, spif_str_t); extern spif_str_t spif_str_dup(spif_str_t); -extern spif_cmp_t spif_str_cmp(spif_str_t, spif_str_t); -extern spif_cmp_t spif_str_cmp_with_ptr(spif_str_t, spif_charptr_t); +extern spif_classname_t spif_str_type(spif_str_t); +extern spif_bool_t spif_str_append(spif_str_t, spif_str_t); +extern spif_bool_t spif_str_append_char(spif_str_t, spif_char_t); +extern spif_bool_t spif_str_append_from_ptr(spif_str_t, spif_charptr_t); extern spif_cmp_t spif_str_casecmp(spif_str_t, spif_str_t); extern spif_cmp_t spif_str_casecmp_with_ptr(spif_str_t, spif_charptr_t); -extern spif_cmp_t spif_str_ncmp(spif_str_t, spif_str_t, size_t); -extern spif_cmp_t spif_str_ncmp_with_ptr(spif_str_t, spif_charptr_t, size_t); -extern spif_cmp_t spif_str_ncasecmp(spif_str_t, spif_str_t, size_t); -extern spif_cmp_t spif_str_ncasecmp_with_ptr(spif_str_t, spif_charptr_t, size_t); -extern size_t spif_str_index(spif_str_t, spif_char_t); -extern size_t spif_str_rindex(spif_str_t, spif_char_t); -extern size_t spif_str_find(spif_str_t, spif_str_t); -extern size_t spif_str_find_from_ptr(spif_str_t, spif_charptr_t); +extern spif_bool_t spif_str_clear(spif_str_t, spif_char_t); +extern spif_cmp_t spif_str_cmp(spif_str_t, spif_str_t); +extern spif_cmp_t spif_str_cmp_with_ptr(spif_str_t, spif_charptr_t); +extern spif_stridx_t spif_str_find(spif_str_t, spif_str_t); +extern spif_stridx_t spif_str_find_from_ptr(spif_str_t, spif_charptr_t); +extern spif_stridx_t spif_str_index(spif_str_t, spif_char_t); +extern spif_cmp_t spif_str_ncasecmp(spif_str_t, spif_str_t, spif_stridx_t); +extern spif_cmp_t spif_str_ncasecmp_with_ptr(spif_str_t, spif_charptr_t, spif_stridx_t); +extern spif_cmp_t spif_str_ncmp(spif_str_t, spif_str_t, spif_stridx_t); +extern spif_cmp_t spif_str_ncmp_with_ptr(spif_str_t, spif_charptr_t, spif_stridx_t); +extern spif_bool_t spif_str_reverse(spif_str_t); +extern spif_stridx_t spif_str_rindex(spif_str_t, spif_char_t); +extern spif_bool_t spif_str_splice(spif_str_t, spif_stridx_t, spif_stridx_t, spif_str_t); +extern spif_bool_t spif_str_splice_from_ptr(spif_str_t, spif_stridx_t, spif_stridx_t, spif_charptr_t); extern spif_str_t spif_str_substr(spif_str_t, spif_int32_t, spif_int32_t); extern spif_charptr_t spif_str_substr_to_ptr(spif_str_t, spif_int32_t, spif_int32_t); -extern size_t spif_str_to_num(spif_str_t, int); extern double spif_str_to_float(spif_str_t); -extern spif_bool_t spif_str_append(spif_str_t, spif_str_t); -extern spif_bool_t spif_str_append_char(spif_str_t, spif_char_t); -extern spif_bool_t spif_str_append_from_ptr(spif_str_t, spif_charptr_t); -extern spif_bool_t spif_str_clear(spif_str_t, spif_char_t); +extern size_t spif_str_to_num(spif_str_t, int); extern spif_bool_t spif_str_trim(spif_str_t); -extern spif_bool_t spif_str_splice(spif_str_t, size_t, size_t, spif_str_t); -extern spif_bool_t spif_str_splice_from_ptr(spif_str_t, size_t, size_t, spif_charptr_t); -extern spif_bool_t spif_str_reverse(spif_str_t); -SPIF_DECL_PROPERTY_FUNC_C(str, size_t, size); -SPIF_DECL_PROPERTY_FUNC_C(str, size_t, len); -extern spif_str_t spif_str_show(spif_str_t, spif_charptr_t, spif_str_t, size_t); -extern spif_classname_t spif_str_type(spif_str_t); +SPIF_DECL_PROPERTY_FUNC_C(str, spif_stridx_t, size); +SPIF_DECL_PROPERTY_FUNC_C(str, spif_stridx_t, len); #endif /* _LIBAST_STR_H_ */ ------------------------------------------------------- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs