Grok 12.0.1
GrkObjectWrapper.h
Go to the documentation of this file.
1#pragma once
2
3#include "grok.h"
4#include <atomic>
5
6namespace grk
7{
9{
10 public:
11 explicit GrkObjectWrapper(void);
12 virtual ~GrkObjectWrapper(void);
13 int32_t ref(void);
14 int32_t unref(void);
15 virtual void release(void) = 0;
16
17 private:
18 std::atomic<int32_t> ref_count;
19};
20
21template<typename T>
23{
24 public:
25 explicit GrkObjectWrapperImpl(T* wrap) : wrappee(wrap) {}
26 virtual ~GrkObjectWrapperImpl(void) = default;
27 virtual void release(void)
28 {
30 delete wrappee;
31 wrappee = nullptr;
32 }
33 T* getWrappee(void)
34 {
36 return wrappee;
37 }
38
39 private:
41};
42
43} // namespace grk
Definition GrkObjectWrapper.h:9
virtual void release(void)=0
GrkObjectWrapper(void)
Definition GrkObjectWrapper.cpp:5
int32_t unref(void)
Definition GrkObjectWrapper.cpp:12
virtual ~GrkObjectWrapper(void)
Definition GrkObjectWrapper.cpp:7
std::atomic< int32_t > ref_count
Definition GrkObjectWrapper.h:18
int32_t ref(void)
Definition GrkObjectWrapper.cpp:8
Definition GrkObjectWrapper.h:23
GrkObjectWrapperImpl(T *wrap)
Definition GrkObjectWrapper.h:25
T * getWrappee(void)
Definition GrkObjectWrapper.h:33
virtual void release(void)
Definition GrkObjectWrapper.h:27
T * wrappee
Definition GrkObjectWrapper.h:40
virtual ~GrkObjectWrapperImpl(void)=default
Copyright (C) 2016-2024 Grok Image Compression Inc.
Definition ICacheable.h:20
void grk_read(const uint8_t *buffer, TYPE *value, uint32_t numBytes)
Definition BufferedStream.h:239