"Fossies" - the Fresh Open Source Software Archive

Member "mesa-20.1.8/src/amd/addrlib/src/core/addrobject.h" (16 Sep 2020, 3280 Bytes) of package /linux/misc/mesa-20.1.8.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "addrobject.h" see the Fossies "Dox" file reference documentation.

    1 /*
    2  * Copyright © 2007-2019 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 Object 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 namespace Addr
   41 {
   42 
   43 /**
   44 ****************************************************************************************************
   45 * @brief This structure contains client specific data
   46 ****************************************************************************************************
   47 */
   48 struct Client
   49 {
   50     ADDR_CLIENT_HANDLE  handle;
   51     ADDR_CALLBACKS      callbacks;
   52 };
   53 /**
   54 ****************************************************************************************************
   55 * @brief This class is the base class for all ADDR class objects.
   56 ****************************************************************************************************
   57 */
   58 class Object
   59 {
   60 public:
   61     Object();
   62     Object(const Client* pClient);
   63     virtual ~Object();
   64 
   65     VOID* operator new(size_t size, VOID* pMem);
   66     VOID  operator delete(VOID* pObj);
   67     /// Microsoft compiler requires a matching delete implementation, which seems to be called when
   68     /// bad_alloc is thrown. But currently C++ exception isn't allowed so a dummy implementation is
   69     /// added to eliminate the warning.
   70     VOID  operator delete(VOID* pObj, VOID* pMem) { ADDR_ASSERT_ALWAYS(); }
   71 
   72     VOID* Alloc(size_t size) const;
   73     VOID  Free(VOID* pObj) const;
   74 
   75     VOID DebugPrint(const CHAR* pDebugString, ...) const;
   76 
   77     const Client* GetClient() const {return &m_client;}
   78 
   79 protected:
   80     Client m_client;
   81 
   82     static VOID* ClientAlloc(size_t size, const Client* pClient);
   83     static VOID  ClientFree(VOID* pObj, const Client* pClient);
   84 
   85 private:
   86     // disallow the copy constructor
   87     Object(const Object& a);
   88 
   89     // disallow the assignment operator
   90     Object& operator=(const Object& a);
   91 };
   92 
   93 } // Addr
   94 #endif
   95