From b91bc4f037b5c3ce69fef2d6187690ce05ffea62 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 8 Jul 2012 06:00:27 +0000 Subject: use gcc attrubutes to warn on unused return values and arguments which shouldnt be NULL. also remove IDP_AppendArray's return value which wasnt the new item in the array (which is odd/misleading), but wasnt used anywhere either. --- source/blender/blenkernel/BKE_idprop.h | 152 +++++++++++++++++++++++++----- source/blender/blenkernel/BKE_lamp.h | 6 +- source/blender/blenkernel/BKE_library.h | 21 ++++- source/blender/blenkernel/intern/idprop.c | 9 +- source/blender/blenkernel/intern/lamp.c | 2 +- 5 files changed, 155 insertions(+), 35 deletions(-) (limited to 'source/blender/blenkernel') diff --git a/source/blender/blenkernel/BKE_idprop.h b/source/blender/blenkernel/BKE_idprop.h index 2436ada9eaf..88eb4dc6f97 100644 --- a/source/blender/blenkernel/BKE_idprop.h +++ b/source/blender/blenkernel/BKE_idprop.h @@ -60,15 +60,30 @@ typedef union IDPropertyTemplate { /* note: as a start to move away from the stupid IDP_New function, this type * has it's own allocation function.*/ -IDProperty *IDP_NewIDPArray(const char *name); -IDProperty *IDP_CopyIDPArray(IDProperty *array); +IDProperty *IDP_NewIDPArray(const char *name) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; +IDProperty *IDP_CopyIDPArray(IDProperty *array) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; void IDP_FreeIDPArray(IDProperty *prop); /* shallow copies item */ void IDP_SetIndexArray(struct IDProperty *prop, int index, struct IDProperty *item); -struct IDProperty *IDP_GetIndexArray(struct IDProperty *prop, int index); -struct IDProperty *IDP_AppendArray(struct IDProperty *prop, struct IDProperty *item); +struct IDProperty *IDP_GetIndexArray(struct IDProperty *prop, int index) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; +void IDP_AppendArray(struct IDProperty *prop, struct IDProperty *item); void IDP_ResizeIDPArray(struct IDProperty *prop, int len); /* ----------- Numeric Array Type ----------- */ @@ -77,11 +92,33 @@ void IDP_ResizeArray(struct IDProperty *prop, int newlen); void IDP_FreeArray(struct IDProperty *prop); /* ---------- String Type ------------ */ -IDProperty *IDP_NewString(const char *st, const char *name, int maxlen); /* maxlen excludes '\0' */ -void IDP_AssignString(struct IDProperty *prop, const char *st, int maxlen); /* maxlen excludes '\0' */ -void IDP_ConcatStringC(struct IDProperty *prop, const char *st); -void IDP_ConcatString(struct IDProperty *str1, struct IDProperty *append); -void IDP_FreeString(struct IDProperty *prop); +IDProperty *IDP_NewString(const char *st, const char *name, int maxlen) /* maxlen excludes '\0' */ +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; + +void IDP_AssignString(struct IDProperty *prop, const char *st, int maxlen) /* maxlen excludes '\0' */ +#ifdef __GNUC__ +__attribute__((nonnull)) +#endif +; +void IDP_ConcatStringC(struct IDProperty *prop, const char *st) +#ifdef __GNUC__ +__attribute__((nonnull)) +#endif +; +void IDP_ConcatString(struct IDProperty *str1, struct IDProperty *append) +#ifdef __GNUC__ +__attribute__((nonnull)) +#endif +; +void IDP_FreeString(struct IDProperty *prop) +#ifdef __GNUC__ +__attribute__((nonnull)) +#endif +; /*-------- ID Type -------*/ void IDP_LinkID(struct IDProperty *prop, ID *id); @@ -90,17 +127,29 @@ void IDP_UnlinkID(struct IDProperty *prop); /*-------- Group Functions -------*/ /** Sync values from one group to another, only where they match */ -void IDP_SyncGroupValues(struct IDProperty *dest, struct IDProperty *src); +void IDP_SyncGroupValues(struct IDProperty *dest, struct IDProperty *src) +#ifdef __GNUC__ +__attribute__((nonnull)) +#endif +; /** * replaces all properties with the same name in a destination group from a source group. */ -void IDP_ReplaceGroupInGroup(struct IDProperty *dest, struct IDProperty *src); +void IDP_ReplaceGroupInGroup(struct IDProperty *dest, struct IDProperty *src) +#ifdef __GNUC__ +__attribute__((nonnull)) +#endif +; /** * Checks if a property with the same name as prop exists, and if so replaces it. * Use this to preserve order!*/ -void IDP_ReplaceInGroup(struct IDProperty *group, struct IDProperty *prop); +void IDP_ReplaceInGroup(struct IDProperty *group, struct IDProperty *prop) +#ifdef __GNUC__ +__attribute__((nonnull)) +#endif +; /** * This function has a sanity check to make sure ID properties with the same name don't @@ -117,12 +166,20 @@ void IDP_ReplaceInGroup(struct IDProperty *group, struct IDProperty *prop); * struct. In the future this will just be IDP_FreeProperty and the code will * be reorganized to work properly. */ -int IDP_AddToGroup(struct IDProperty *group, struct IDProperty *prop); +int IDP_AddToGroup(struct IDProperty *group, struct IDProperty *prop) +#ifdef __GNUC__ +__attribute__((nonnull)) +#endif +; /** this is the same as IDP_AddToGroup, only you pass an item * in the group list to be inserted after. */ int IDP_InsertToGroup(struct IDProperty *group, struct IDProperty *previous, - struct IDProperty *pnew); + struct IDProperty *pnew) +#ifdef __GNUC__ +__attribute__((nonnull)) +#endif +; /** \note this does not free the property!! * @@ -130,18 +187,36 @@ int IDP_InsertToGroup(struct IDProperty *group, struct IDProperty *previous, * IDP_FreeProperty(prop); //free all subdata * MEM_freeN(prop); //free property struct itself */ -void IDP_RemFromGroup(struct IDProperty *group, struct IDProperty *prop); +void IDP_RemFromGroup(struct IDProperty *group, struct IDProperty *prop) +#ifdef __GNUC__ +__attribute__((nonnull)) +#endif +; -IDProperty *IDP_GetPropertyFromGroup(struct IDProperty *prop, const char *name); +IDProperty *IDP_GetPropertyFromGroup(struct IDProperty *prop, const char *name) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; /** same as above but ensure type match */ -IDProperty *IDP_GetPropertyTypeFromGroup(struct IDProperty *prop, const char *name, const char type); +IDProperty *IDP_GetPropertyTypeFromGroup(struct IDProperty *prop, const char *name, const char type) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; /** * Get an iterator to iterate over the members of an id property group. * Note that this will automatically free the iterator once iteration is complete; * if you stop the iteration before hitting the end, make sure to call * IDP_FreeIterBeforeEnd(). */ -void *IDP_GetGroupIterator(struct IDProperty *prop); +void *IDP_GetGroupIterator(struct IDProperty *prop) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +#endif +; /** * Returns the next item in the iteration. To use, simple for a loop like the following: @@ -149,21 +224,45 @@ void *IDP_GetGroupIterator(struct IDProperty *prop); * ... * } */ -IDProperty *IDP_GroupIterNext(void *vself); +IDProperty *IDP_GroupIterNext(void *vself) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; /** * Frees the iterator pointed to at vself, only use this if iteration is stopped early; * when the iterator hits the end of the list it'll automatically free itself.*/ -void IDP_FreeIterBeforeEnd(void *vself); +void IDP_FreeIterBeforeEnd(void *vself) +#ifdef __GNUC__ +__attribute__((nonnull)) +#endif +; /*-------- Main Functions --------*/ /** Get the Group property that contains the id properties for ID id. Set create_if_needed * to create the Group property and attach it to id if it doesn't exist; otherwise * the function will return NULL if there's no Group property attached to the ID.*/ -struct IDProperty *IDP_GetProperties(struct ID *id, int create_if_needed); -struct IDProperty *IDP_CopyProperty(struct IDProperty *prop); +struct IDProperty *IDP_GetProperties(struct ID *id, int create_if_needed) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; +struct IDProperty *IDP_CopyProperty(struct IDProperty *prop) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; -int IDP_EqualsProperties(struct IDProperty *prop1, struct IDProperty *prop2); +int IDP_EqualsProperties(struct IDProperty *prop1, struct IDProperty *prop2) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; /** * Allocate a new ID. @@ -190,7 +289,12 @@ int IDP_EqualsProperties(struct IDProperty *prop1, struct IDProperty *prop2); * IDP_AddToGroup or MEM_freeN the property, doing anything else might result in * a memory leak. */ -struct IDProperty *IDP_New(const int type, const IDPropertyTemplate *val, const char *name); +struct IDProperty *IDP_New(const int type, const IDPropertyTemplate *val, const char *name) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; /** \note this will free all child properties of list arrays and groups! * Also, note that this does NOT unlink anything! Plus it doesn't free diff --git a/source/blender/blenkernel/BKE_lamp.h b/source/blender/blenkernel/BKE_lamp.h index f9137e50d74..3acd4d1986e 100644 --- a/source/blender/blenkernel/BKE_lamp.h +++ b/source/blender/blenkernel/BKE_lamp.h @@ -38,9 +38,9 @@ extern "C" { struct Lamp; -void *BKE_lamp_add(const char *name); -struct Lamp *BKE_lamp_copy(struct Lamp *la); -struct Lamp *localize_lamp(struct Lamp *la); +struct Lamp *BKE_lamp_add(const char *name) WARN_UNUSED; +struct Lamp *BKE_lamp_copy(struct Lamp *la) WARN_UNUSED; +struct Lamp *localize_lamp(struct Lamp *la) WARN_UNUSED; void BKE_lamp_make_local(struct Lamp *la); void BKE_lamp_free(struct Lamp *la); diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h index 3248944dae8..91756448297 100644 --- a/source/blender/blenkernel/BKE_library.h +++ b/source/blender/blenkernel/BKE_library.h @@ -45,8 +45,18 @@ struct bContext; struct PointerRNA; struct PropertyRNA; -void *BKE_libblock_alloc(struct ListBase *lb, short type, const char *name); -void *BKE_libblock_copy(struct ID *id); +void *BKE_libblock_alloc(struct ListBase *lb, short type, const char *name) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; +void *BKE_libblock_copy(struct ID *id) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; void BKE_libblock_copy_data(struct ID *id, const struct ID *id_from, const short do_action); void BKE_id_lib_local_paths(struct Main *bmain, struct Library *lib, struct ID *id); @@ -82,7 +92,12 @@ void name_uiprefix_id(char *name, struct ID *id); void test_idbutton(char *name); void text_idbutton(struct ID *id, char *text); void BKE_library_make_local(struct Main *bmain, struct Library *lib, int untagged_only); -struct ID *BKE_libblock_find_name(const short type, const char *name); +struct ID *BKE_libblock_find_name(const short type, const char *name) +#ifdef __GNUC__ +__attribute__((warn_unused_result)) +__attribute__((nonnull)) +#endif +; void clear_id_newpoins(void); void IDnames_to_pupstring(const char **str, const char *title, const char *extraops, diff --git a/source/blender/blenkernel/intern/idprop.c b/source/blender/blenkernel/intern/idprop.c index 42c7869a365..cff6ab2f125 100644 --- a/source/blender/blenkernel/intern/idprop.c +++ b/source/blender/blenkernel/intern/idprop.c @@ -33,11 +33,13 @@ #include #include +#include "BLI_utildefines.h" +#include "BLI_string.h" +#include "BLI_listbase.h" + #include "BKE_idprop.h" #include "BKE_library.h" -#include "BLI_blenlib.h" - #include "MEM_guardedalloc.h" /* IDPropertyTemplate is a union in DNA_ID.h */ @@ -122,11 +124,10 @@ IDProperty *IDP_GetIndexArray(IDProperty *prop, int index) return GETPROP(prop, index); } -IDProperty *IDP_AppendArray(IDProperty *prop, IDProperty *item) +void IDP_AppendArray(IDProperty *prop, IDProperty *item) { IDP_ResizeIDPArray(prop, prop->len + 1); IDP_SetIndexArray(prop, prop->len - 1, item); - return item; } void IDP_ResizeIDPArray(IDProperty *prop, int newlen) diff --git a/source/blender/blenkernel/intern/lamp.c b/source/blender/blenkernel/intern/lamp.c index 20e3edc7044..4782d09a7c8 100644 --- a/source/blender/blenkernel/intern/lamp.c +++ b/source/blender/blenkernel/intern/lamp.c @@ -51,7 +51,7 @@ #include "BKE_main.h" #include "BKE_node.h" -void *BKE_lamp_add(const char *name) +Lamp *BKE_lamp_add(const char *name) { Lamp *la; -- cgit v1.2.3