702639647e8110e9a870c5c70a41157a29f3974e
[iec.git] / src / type3_AndroidCloud / anbox-master / android / opengl / shared / OpenglCodecCommon / FixedBuffer.h
1 /*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 #ifndef _FIXED_BUFFER_H
17 #define _FIXED_BUFFER_H
18
19 class FixedBuffer {
20 public:
21     FixedBuffer(size_t initialSize = 0) {
22         m_buffer = NULL;
23         m_bufferLen = initialSize;
24         alloc(m_bufferLen);
25     }
26
27     ~FixedBuffer() {
28         delete [] m_buffer;
29         m_bufferLen = 0;
30     }
31
32     void * alloc(size_t size) {
33         if (m_bufferLen >= size)
34             return (void *)(m_buffer);
35
36         if (m_buffer != NULL)
37             delete[] m_buffer;
38
39         m_bufferLen = size;
40         m_buffer = new unsigned char[m_bufferLen];
41         if (m_buffer == NULL)
42             m_bufferLen = 0;
43
44         return m_buffer;
45     }
46     void *ptr() { return m_buffer; }
47     size_t len() { return m_bufferLen; }
48 private:
49     unsigned char *m_buffer;
50     size_t m_bufferLen;
51 };
52
53 #endif