// This file is automatically generated by rmconfig - DO NOT EDIT!
//
// Profile:  shipping-gpus-openrm
// Template: templates/gt_odb.h
//

#ifndef _G_ODB_H_
#define _G_ODB_H_

#define OBJECT_BASE_DEFINITION(ENG) __##ENG##_OBJECT_BASE_DEFINITION

#ifndef __NVOC_CLASS_OBJRPC_TYPEDEF__
#define __NVOC_CLASS_OBJRPC_TYPEDEF__
typedef struct OBJRPC OBJRPC;
#endif /* __NVOC_CLASS_OBJRPC_TYPEDEF__ */
typedef struct OBJRPC *POBJRPC;

#ifndef __NVOC_CLASS_OBJRPCSTRUCTURECOPY_TYPEDEF__
#define __NVOC_CLASS_OBJRPCSTRUCTURECOPY_TYPEDEF__
typedef struct OBJRPCSTRUCTURECOPY OBJRPCSTRUCTURECOPY;
#endif /* __NVOC_CLASS_OBJRPCSTRUCTURECOPY_TYPEDEF__ */
typedef struct OBJRPCSTRUCTURECOPY *POBJRPCSTRUCTURECOPY;



#if NV_PRINTF_STRINGS_ALLOWED
#define odbGetClassName(p) (objGetClassInfo((p))->name)
#endif

// TODO : temporary hack, to delete
#ifndef __NVOC_CLASS_OBJGPU_TYPEDEF__
#define __NVOC_CLASS_OBJGPU_TYPEDEF__
typedef struct OBJGPU OBJGPU;
#endif /* __NVOC_CLASS_OBJGPU_TYPEDEF__ */
typedef struct OBJGPU *POBJGPU;

#ifndef __NVOC_CLASS_OBJDISP_TYPEDEF__
#define __NVOC_CLASS_OBJDISP_TYPEDEF__
typedef struct OBJDISP OBJDISP;
#endif /* __NVOC_CLASS_OBJDISP_TYPEDEF__ */
typedef struct OBJDISP *POBJDISP;

//
// #define staticCast(pObj, TYPE) ((pObj)? __staticCast_##TYPE((pObj)) : NULL)
//
#define __staticCast_OBJRPC(pObj) ((pObj)->__iom_pbase_OBJRPC)
#define __staticCast_OBJRPCSTRUCTURECOPY(pObj) ((pObj)->__iom_pbase_OBJRPCSTRUCTURECOPY)


//
// #define dynamicCast(pObj, TYPE) (__dynamicCast_##TYPE((pObj)))
//
#define __dynamicCast_OBJRPC(pObj) ((POBJRPC)__nvoc_dynamicCast(staticCast((pObj), Dynamic), classInfo(OBJRPC)))
#define __dynamicCast_OBJRPCSTRUCTURECOPY(pObj) ((POBJRPCSTRUCTURECOPY)__nvoc_dynamicCast(staticCast((pObj), Dynamic), classInfo(OBJRPCSTRUCTURECOPY)))





#endif  // _G_ODB_H_
