Just some thoughts regarding NULL pointers: When I write a function, I by default assume that pointers passed to it as arguments are not NULL. Only if the API documentation explicitly states that a NULL pointer is a valid input for that argument, then the function needs to handle it. Otherwise it is fine to crash (or assert) when receiving a NULL pointer. An assert is typically not needed, since the program will crash when dereferencing a NULL pointer anyway.
Sometimes it is useful to allow function arguments to be NULL pointers. One typical example is the C library functions free() and realloc(), where it can be very handy to be able to pass a NULL pointer in case no memory has been allocated (yet). The API documentation here clearly says what happens when you pass a NULL pointer. regards, Anders Widell 2014-04-04 15:04, Nagendra Kumar skrev: > Ack with comment the functions added are not NULL safe. It crashed if passed > NULL. Do we want to have some checks ? > > Thanks > -Nagu > >> -----Original Message----- >> From: Hans Nordeback [mailto:hans.nordeb...@ericsson.com] >> Sent: 26 March 2014 16:58 >> To: hans.fe...@ericsson.com; Nagendra Kumar; Praveen Malviya >> Cc: opensaf-devel@lists.sourceforge.net >> Subject: [PATCH 1 of 1] amfd: use template class db to replace patricia tree >> db >> V2 [#713] >> >> osaf/services/saf/amf/amfd/include/db_template.h | 63 >> ++++++++++++++++++++++++ >> 1 files changed, 63 insertions(+), 0 deletions(-) >> >> >> diff --git a/osaf/services/saf/amf/amfd/include/db_template.h >> b/osaf/services/saf/amf/amfd/include/db_template.h >> new file mode 100644 >> --- /dev/null >> +++ b/osaf/services/saf/amf/amfd/include/db_template.h >> @@ -0,0 +1,63 @@ >> +/* -*- OpenSAF -*- >> + * >> + * (C) Copyright 2014 The OpenSAF Foundation >> + * >> + * This program is distributed in the hope that it will be useful, but >> + * WITHOUT ANY WARRANTY; without even the implied warranty of >> MERCHANTABILITY >> + * or FITNESS FOR A PARTICULAR PURPOSE. This file and program are licensed >> + * under the GNU Lesser General Public License Version 2.1, February 1999. >> + * The complete license can be accessed from the following location: >> + * http://opensource.org/licenses/lgpl-license.php >> + * See the Copying file included with the OpenSAF distribution for full >> + * licensing terms. >> + * >> + * Author(s): Ericsson AB >> + * >> + */ >> +#ifndef DB_TEMPLATE_H >> +#define DB_TEMPLATE_H >> + >> +#include <map> >> +#include <string> >> + >> +template <typename T> >> +class AmfDb { >> + public: >> + void insert(T *obj); >> + void erase(T *obj); >> + T *find(const SaNameT *name); >> + >> + typedef std::map<std::string, T*> AmfDbMap; >> + typedef typename AmfDbMap::const_iterator const_iterator; >> + >> + const_iterator begin() const {return db.begin();} >> + const_iterator end() const {return db.end();} >> + >> + private: >> + AmfDbMap db; >> +}; >> + >> +template <typename T> >> +void AmfDb<T>::insert(T *obj) { >> + std::string name((const char*)obj->name.value, obj->name.length); >> + db[name] = obj; >> +} >> + >> +template <typename T> >> +void AmfDb<T>::erase(T *obj) { >> + std::string name((const char*)obj->name.value, obj->name.length); >> + typename AmfDbMap::iterator it = db.find(name); >> + db.erase(it); >> +} >> + >> +template <typename T> >> +T *AmfDb<T>::find(const SaNameT *dn) { >> + std::string name((const char*)dn->value, dn->length); >> + typename AmfDbMap::iterator it = db.find(name); >> + if (it == db.end()) >> + return NULL; >> + else >> + return it->second; >> +} >> + >> +#endif /* DB_TEMPLATE_H */ > ------------------------------------------------------------------------------ > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensaf-devel > > ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel