Main Page Class List Class Members

- Main Page
- User's Guide
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

# sdk/toolkit/source/NvBlastTkCommon.h

Go to the documentation of this file.

    00001 // This code contains NVIDIA Confidential Information and is disclosed to you
    00002 // under a form of NVIDIA software license agreement provided separately to you.
    00003 //
    00004 // Notice
    00005 // NVIDIA Corporation and its licensors retain all intellectual property and
    00006 // proprietary rights in and to this software and related documentation and
    00007 // any modifications thereto. Any use, reproduction, disclosure, or
    00008 // distribution of this software and related documentation without an express
    00009 // license agreement from NVIDIA Corporation is strictly prohibited.
    00010 //
    00011 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
    00012 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
    00013 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
    00014 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
    00015 //
    00016 // Information and code furnished is believed to be accurate and reliable.
    00017 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
    00018 // information or for any infringement of patents or other rights of third parties that may
    00019 // result from its use. No license is granted by implication or otherwise under any patent
    00020 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
    00021 // This code supersedes and replaces all information previously supplied.
    00022 // NVIDIA Corporation products are not authorized for use as critical
    00023 // components in life support devices or systems without express written approval of
    00024 // NVIDIA Corporation.
    00025 //
    00026 // Copyright (c) 2016-2020 NVIDIA Corporation. All rights reserved.
    00027
    00028
    00029 #ifndef NVBLASTTKCOMMON_H
    00030 #define NVBLASTTKCOMMON_H
    00031
    00032
    00033 #include "NvBlastGlobals.h"
    00034 #include "NvBlastTkGUID.h"
    00035
    00036
    00037 // Macro to define standard object classes.  An intermediate class is defined which holds common implementations.
    00038 #define NVBLASTTK_IMPL_DECLARE(_name)                                               \
    00039 class Tk##_name##Type : public Tk##_name                                            \
    00040 {                                                                                   \
    00041 public:                                                                             \
    00042     /* Blank constructor generates a new NvBlastID and informs framework  */        \
    00043     Tk##_name##Type()                                                               \
    00044     {                                                                               \
    00045         memset(&m_ID, 0, sizeof(NvBlastID));                                        \
    00046         setID(TkGenerateGUID(this));                                                \
    00047         TkFrameworkImpl::get()->onCreate(*this);                                    \
    00048     }                                                                               \
    00049                                                                                     \
    00050     /* This constructor takes an existing NvBlastID and informs framework  */       \
    00051     Tk##_name##Type(const NvBlastID& id)                                            \
    00052     {                                                                               \
    00053         memset(&m_ID, 0, sizeof(NvBlastID));                                        \
    00054         setID(id);                                                                  \
    00055         TkFrameworkImpl::get()->onCreate(*this);                                    \
    00056     }                                                                               \
    00057                                                                                     \
    00058     /* Destructor informs framework  */                                             \
    00059     ~Tk##_name##Type()  { TkFrameworkImpl::get()->onDestroy(*this); }               \
    00060                                                                                     \
    00061     /* Begin TkIdentifiable */                                                      \
    00062     virtual void                setID(const NvBlastID& id) override                 \
    00063     {                                                                               \
    00064         /* Inform framework of ID change */                                         \
    00065         TkFrameworkImpl::get()->onIDChange(*this, m_ID, id);                        \
    00066         m_ID = id;                                                                  \
    00067     }                                                                               \
    00068     virtual const NvBlastID&    getID() const override { return getIDInternal(); }  \
    00069     virtual const TkType&       getType() const override { return s_type; }         \
    00070     /* End TkIdentifiable */                                                        \
    00071                                                                                     \
    00072     /* Begin public API */                                                          \
    00073                                                                                     \
    00074     /* Inline method for internal access to NvBlastID */                            \
    00075     const  NvBlastID&           getIDInternal() const { return m_ID; }              \
    00076                                                                                     \
    00077     /* End public API */                                                            \
    00078                                                                                     \
    00079     /* Static type information */                                                   \
    00080     static TkTypeImpl   s_type;                                                     \
    00081                                                                                     \
    00082 private:                                                                            \
    00083     NvBlastID           m_ID;   /* NvBlastID for a TkIdentifiable object */         \
    00084 };                                                                                  \
    00085                                                                                     \
    00086 /* Derive object implementation from common implementation class above */           \
    00087 class Tk##_name##Impl final : public Tk##_name##Type
    00088
    00089
    00090 // Macro to declare standard object interfaces, enums, etc.
    00091 #define NVBLASTTK_IMPL_DEFINE_IDENTIFIABLE(_id0, _id1, _id2, _id3)      \
    00092     /* Begin TkObject */                                                \
    00093     virtual void        release() override;                             \
    00094     /* End TkObject */                                                  \
    00095                                                                         \
    00096     /* Enums */                                                         \
    00097                                                                         \
    00098     /* Generate a ClassID enum used to identify this TkIdentifiable. */ \
    00099     enum { ClassID = NVBLAST_FOURCC(_id0, _id1, _id2, _id3) }
    00100
    00101
    00102 // Macro to define class type data
    00103 #define NVBLASTTK_DEFINE_TYPE_IDENTIFIABLE(_name) \
    00104     TkTypeImpl Tk##_name##Type::s_type("Tk" #_name, Tk##_name##Impl::ClassID, 0)
    00105
    00106
    00107 #endif // ifndef NVBLASTTKCOMMON_H

Copyright © 2015-2017 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com