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

Reply via email to