13
13
#pragma once
14
14
15
15
#include " ur_api.h"
16
+
16
17
#include < atomic>
17
18
#include < cstddef>
18
19
#include < string>
19
20
#include < unordered_map>
21
+ #include < vector>
20
22
21
23
namespace mock {
22
24
23
25
struct dummy_handle_t_ {
24
- dummy_handle_t_ () {}
25
- std::atomic<size_t > refCounter = 1 ;
26
+ dummy_handle_t_ (size_t DataSize = 0 )
27
+ : MStorage(DataSize), MData(MStorage.data()) {}
28
+ dummy_handle_t_ (unsigned char *Data) : MData(Data) {}
29
+ std::atomic<size_t > MRefCounter = 1 ;
30
+ std::vector<unsigned char > MStorage;
31
+ unsigned char *MData = nullptr ;
26
32
};
27
33
28
34
using dummy_handle_t = dummy_handle_t_ *;
29
35
30
- // Allocates a dummy handle of type T with support for reference counting.
31
- // The handle has to be deallocated using 'releaseDummyHandle'.
32
- template <class T > inline T createDummyHandle () {
33
- dummy_handle_t DummyHandlePtr = new dummy_handle_t_ ();
36
+ // Allocates a dummy handle of type T with support of reference counting.
37
+ // Takes optional 'Size' parameter which can be used to allocate additional
38
+ // memory. The handle has to be deallocated using 'releaseDummyHandle'.
39
+ template <class T > inline T createDummyHandle (size_t Size = 0 ) {
40
+ dummy_handle_t DummyHandlePtr = new dummy_handle_t_ (Size );
34
41
return reinterpret_cast <T>(DummyHandlePtr);
35
42
}
36
43
37
44
// Decrement reference counter for the handle and deallocates it if the
38
45
// reference counter becomes zero
39
46
template <class T > inline void releaseDummyHandle (T Handle ) {
40
47
auto DummyHandlePtr = reinterpret_cast <dummy_handle_t >(Handle );
41
- const size_t NewValue = --DummyHandlePtr->refCounter ;
48
+ const size_t NewValue = --DummyHandlePtr->MRefCounter ;
42
49
if (NewValue == 0 ) {
43
50
delete DummyHandlePtr;
44
51
}
@@ -47,7 +54,7 @@ template <class T> inline void releaseDummyHandle(T Handle) {
47
54
// Increment reference counter for the handle
48
55
template <class T > inline void retainDummyHandle (T Handle ) {
49
56
auto DummyHandlePtr = reinterpret_cast <dummy_handle_t >(Handle );
50
- ++DummyHandlePtr->refCounter ;
57
+ ++DummyHandlePtr->MRefCounter ;
51
58
}
52
59
53
60
struct callbacks_t {
0 commit comments