NVIDIA DeepStream SDK API Reference

7.0 Release
abi_obj.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: LicenseRef-NvidiaProprietary
4  *
5  * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
6  * property and proprietary rights in and to this material, related
7  * documentation and any modifications thereto. Any use, reproduction,
8  * disclosure or distribution of this material and related documentation
9  * without an express license agreement from NVIDIA CORPORATION or
10  * its affiliates is strictly prohibited.
11  */
12 
13 
14 #ifndef _DS3D_COMMON_ABI_DATA_OBJ__H
15 #define _DS3D_COMMON_ABI_DATA_OBJ__H
16 
17 #include <ds3d/common/common.h>
18 #include <ds3d/common/idatatype.h>
19 #include <ds3d/common/type_trait.h>
20 
21 namespace ds3d {
22 
23 struct abiRefObj {
24  virtual void destroy() = 0;
25  virtual abiRefObj* refCopy_i() const = 0;
26  virtual ~abiRefObj() = default;
27 };
28 
29 enum class DataMapPolicy : int {
30  kCopyPolicyNone = 0,
36 };
37 
38 template <class T>
39 struct abiRefT : public abiRefObj {
40  virtual T* data() const = 0;
41  abiRefT* refCopy() const { return dynamic_cast<abiRefT*>(refCopy_i()); }
42 };
43 
45 
46 class abiDataMap {
47 public:
48  abiDataMap() = default;
49  virtual ~abiDataMap() = default;
50  virtual ErrCode setBuf_i(const char* key, TIdType tid, abiRefAny* data) = 0;
51  virtual ErrCode getBuf_i(const char* key, TIdType tid, const abiRefAny*& data) const = 0;
52  virtual ErrCode removeBuf_i(const char* key) = 0;
53  virtual bool has_i(const char* key) const = 0;
54  virtual ErrCode clear_i() = 0;
55  // clone input datamap into this datamap
56  // existing keys' values in this datamap will be updated with values from input
57  virtual ErrCode copy_i(abiDataMap* input, DataMapPolicy policy, char* policyData) = 0;
58  // key provided will be used to selectively copy just that entry from input
59  virtual ErrCode copy_i(abiDataMap* input, const char* key, DataMapPolicy policy, char* policyData) = 0;
60  //list all entries in a datamap
61  virtual int32_t getSize_i() = 0;
62  // print list of keys in the map
63  virtual void printDebug_i() const = 0;
65 };
66 
68 
69 // define Callback abi interfaces
70 template <typename... Args>
71 struct abiCallBackT : public abiRefObj {
72  using CppFunc = std::function<void(Args...)>;
73  virtual void notify(Args... args) = 0;
74  abiCallBackT* refCopy() const { return dynamic_cast<abiCallBackT*>(refCopy_i()); }
75 };
76 
80 
81 } // namespace ds3d
82 
83 #endif // _DS3D_COMMON_ABI_DATA_OBJ__H
ds3d::abiDataMap::DS3D_DISABLE_CLASS_COPY
DS3D_DISABLE_CLASS_COPY(abiDataMap)
ds3d::abiRefT::refCopy
abiRefT * refCopy() const
Definition: abi_obj.h:41
ds3d::abiErrorCB
abiCallBackT< ErrCode, const char * > abiErrorCB
Definition: abi_obj.h:77
ds3d::abiRefObj::refCopy_i
virtual abiRefObj * refCopy_i() const =0
type_trait.h
ds3d::abiDataMap::clear_i
virtual ErrCode clear_i()=0
ds3d::abiDataMap
Definition: abi_obj.h:46
ds3d::abiDataMap::printDebug_i
virtual void printDebug_i() const =0
ds3d::abiCallBackT::refCopy
abiCallBackT * refCopy() const
Definition: abi_obj.h:74
ds3d::abiDataMap::getSize_i
virtual int32_t getSize_i()=0
ds3d::abiCallBackT::notify
virtual void notify(Args... args)=0
ds3d::abiDataMap::copy_i
virtual ErrCode copy_i(abiDataMap *input, DataMapPolicy policy, char *policyData)=0
ds3d::abiRefT
Definition: abi_obj.h:39
ds3d::abiDataMap::has_i
virtual bool has_i(const char *key) const =0
ds3d::ErrCode
ErrCode
Definition: common.h:43
ds3d::DataMapPolicy
DataMapPolicy
Definition: abi_obj.h:29
ds3d::abiDataMap::removeBuf_i
virtual ErrCode removeBuf_i(const char *key)=0
ds3d::abiRefObj::~abiRefObj
virtual ~abiRefObj()=default
ds3d::abiRefObj::destroy
virtual void destroy()=0
ds3d::abiRefAny
abiRefT< void > abiRefAny
Definition: abi_obj.h:44
ds3d::abiDataMap::setBuf_i
virtual ErrCode setBuf_i(const char *key, TIdType tid, abiRefAny *data)=0
ds3d::abiRefDataMap
abiRefT< abiDataMap > abiRefDataMap
Definition: abi_obj.h:67
common.h
ds3d::abiDataMap::~abiDataMap
virtual ~abiDataMap()=default
ds3d::abiRefObj
Definition: abi_obj.h:23
ds3d::abiDataMap::getBuf_i
virtual ErrCode getBuf_i(const char *key, TIdType tid, const abiRefAny *&data) const =0
ds3d::abiDataMap::abiDataMap
abiDataMap()=default
idatatype.h
ds3d::abiOnDataCB
abiCallBackT< ErrCode, const abiRefDataMap * > abiOnDataCB
Definition: abi_obj.h:78
ds3d::TIdType
uint64_t TIdType
Definition: common.h:69
ds3d::abiRefT::data
virtual T * data() const =0
ds3d
Definition: lidar_3d_datatype.h:35
ds3d::abiCallBackT< Args... >::CppFunc
std::function< void(Args...)> CppFunc
Definition: abi_obj.h:72
ds3d::abiCallBackT
Definition: abi_obj.h:71
ds3d::DataMapPolicy::kCopyPolicyNone
@ kCopyPolicyNone
ds3d::abiOnBridgeDataCB
abiCallBackT< ErrCode, const struct VideoBridge2dInput * > abiOnBridgeDataCB
Definition: abi_obj.h:79
ds3d::DataMapPolicy::kCopyWithIntegerId
@ kCopyWithIntegerId
copy from one datamap to another with key_string manipulated with d+key_string+d where d is an intege...