1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-12-13 20:48:42 +01:00
LibrePilot/ground/openpilotgcs/src/libs/glc_lib/glc_object.h

122 lines
3.5 KiB
C
Raw Normal View History

/****************************************************************************
This file is part of the GLC-lib library.
Copyright (C) 2005-2008 Laurent Ribon (laumaya@users.sourceforge.net)
http://glc-lib.sourceforge.net
GLC-lib is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
GLC-lib 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. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with GLC-lib; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*****************************************************************************/
//! \file GLC_object.h Interface for the GLC_Object class.
#ifndef GLC_OBJECT_H_
#define GLC_OBJECT_H_
#include <QtOpenGL>
#include <QString>
#include <QUuid>
#include <QMutex>
#include "glc_global.h"
#include "glc_config.h"
//////////////////////////////////////////////////////////////////////
//! \class GLC_Object
/*! \brief GLC_Object is base class for some GLC class*/
/*! GLC_Object is a abstract class. \n \n
* Every GLC_Object have :
* - unique ID #m_Uid generated by #GLC_GenID
* - virtual OpenGL method GLC_Object::glExecute
*/
//////////////////////////////////////////////////////////////////////
class GLC_LIB_EXPORT GLC_Object
{
//////////////////////////////////////////////////////////////////////
/*! @name Constructor / Destructor */
//@{
//////////////////////////////////////////////////////////////////////
public:
//! Default constructor
/*! Construct a GLC_Object , Generate is UID GLC_Object::m_Uid
* and set GLC_Object::m_Name to specified name*/
GLC_Object(const QString& name= QString());
//! Construct a GLC_Object from the given GLC_Object
GLC_Object(const GLC_Object& sourceObject);
//! Virtual destructor
virtual ~GLC_Object();
//@}
//////////////////////////////////////////////////////////////////////
/*! \name Get Functions*/
//@{
//////////////////////////////////////////////////////////////////////
public:
//! Return this object id
inline GLC_uint id() const
{return m_Uid;}
//! Return this object name
inline const QString name() const
{return m_Name;}
//! Return true if this object is equal to the given object
inline bool operator == (const GLC_Object& obj)
{return (m_Uid == obj.m_Uid) && (m_Name == obj.m_Name);}
//@}
//////////////////////////////////////////////////////////////////////
/*! \name Set Functions*/
//@{
//////////////////////////////////////////////////////////////////////
public:
//! Set this object Id
/*! This method is thread safe*/
void setId(const GLC_uint id);
//! Set this object Name
/*! This method is thread safe*/
void setName(const QString& name);
//! Set this object from the given object
/*! This method is thread safe*/
GLC_Object &operator=(const GLC_Object&);
//@}
//////////////////////////////////////////////////////////////////////
// Protected member
//////////////////////////////////////////////////////////////////////
protected:
//! The Unique ID of an GLC_Object
/*! Generated on GLC_Object creation*/
GLC_uint m_Uid;
//! Name of an GLC_Object
QString m_Name;
//! GLC_Object Mutex
QMutex m_Mutex;
};
#endif //GLC_OBJECT_H_