1 /* 2 * Copyright © 2014 Advanced Micro Devices, Inc. 3 * All Rights Reserved. 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining 6 * a copy of this software and associated documentation files (the 7 * "Software"), to deal in the Software without restriction, including 8 * without limitation the rights to use, copy, modify, merge, publish, 9 * distribute, sub license, and/or sell copies of the Software, and to 10 * permit persons to whom the Software is furnished to do so, subject to 11 * the following conditions: 12 * 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 14 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 15 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 16 * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS 17 * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 20 * USE OR OTHER DEALINGS IN THE SOFTWARE. 21 * 22 * The above copyright notice and this permission notice (including the 23 * next paragraph) shall be included in all copies or substantial portions 24 * of the Software. 25 */ 26 27 /** 28 *************************************************************************************************** 29 * @file addrobject.h 30 * @brief Contains the AddrObject base class definition. 31 *************************************************************************************************** 32 */ 33 34 #ifndef __ADDR_OBJECT_H__ 35 #define __ADDR_OBJECT_H__ 36 37 #include "addrtypes.h" 38 #include "addrcommon.h" 39 40 /** 41 *************************************************************************************************** 42 * @brief This structure contains client specific data 43 *************************************************************************************************** 44 */ 45 struct AddrClient 46 { 47 ADDR_CLIENT_HANDLE handle; 48 ADDR_CALLBACKS callbacks; 49 }; 50 /** 51 *************************************************************************************************** 52 * @brief This class is the base class for all ADDR class objects. 53 *************************************************************************************************** 54 */ 55 class AddrObject 56 { 57 public: 58 AddrObject(); 59 AddrObject(const AddrClient* pClient); 60 virtual ~AddrObject(); 61 62 VOID* operator new(size_t size, const AddrClient* pClient); 63 VOID operator delete(VOID* pObj, const AddrClient* pClient); 64 VOID operator delete(VOID* pObj); 65 VOID* AddrMalloc(size_t size) const; 66 VOID AddrFree(VOID* pObj) const; 67 68 VOID DebugPrint( 69 const CHAR* pDebugString, 70 ...) const; 71 GetClient()72 const AddrClient* GetClient() const {return &m_client;} 73 74 protected: 75 AddrClient m_client; 76 77 private: 78 static VOID* ClientAlloc(size_t size, const AddrClient* pClient); 79 static VOID ClientFree(VOID* pObj, const AddrClient* pClient); 80 81 // disallow the copy constructor 82 AddrObject(const AddrObject& a); 83 84 // disallow the assignment operator 85 AddrObject& operator=(const AddrObject& a); 86 }; 87 88 #endif 89 90