//////////////////////////////////////////////////////////////////
//
// name.h
//
// Template for a named object
// We don't use PObject since it is too large
//
// Copyright (c) Citron Network Inc. 2003
//
// This work is published under the GNU Public License (GPL)
// see file COPYING for details.
// We also explicitely grant the right to link this code
// with the OpenH323 library.
//
// initial author: Chin-Wei Huang <cwhuang@linux.org.tw>
// initial version: 07/15/2003
//
//////////////////////////////////////////////////////////////////
#ifndef NAME_H
#define NAME_H "@(#) $Id: name.h,v 1.6 2006/04/14 13:56:19 willamowius Exp $"
#if PTRACING
class NamedObject
{
public:
/// build a named with the given name (or with an empty name)
NamedObject(
/// name to set for the object
const char* name = NULL
) : m_name(name) {}
/// copy constructor for proper PString copying
NamedObject(
const NamedObject& obj
) : m_name((const char*)(obj.m_name)) {}
/// assignment operator for proper PString assignment
NamedObject& operator=(
const NamedObject& obj
)
{
m_name = (const char*)(obj.m_name);
return *this;
}
/** Set new name for the object.
Not really thread safe (another thread may call GetName in the same time),
so it should be used with care.
*/
void SetName(
/// name to set for the object
const char* name
)
{
m_name = name;
}
/** @return
Name for this object.
*/
const PString& GetName() const { return m_name; }
private:
/// object name
PString m_name;
};
#else
struct NamedObject {
NamedObject(
/// name to set for the object
const char* name = NULL
) {}
void SetName(const char*) {}
};
#endif
#endif // NAME_H
syntax highlighted by Code2HTML, v. 0.9.1