OpenJPH
Open-source implementation of JPEG2000 Part-15
ojph_mem.cpp
Go to the documentation of this file.
1 //***************************************************************************/
2 // This software is released under the 2-Clause BSD license, included
3 // below.
4 //
5 // Copyright (c) 2019, Aous Naman
6 // Copyright (c) 2019, Kakadu Software Pty Ltd, Australia
7 // Copyright (c) 2019, The University of New South Wales, Australia
8 //
9 // Redistribution and use in source and binary forms, with or without
10 // modification, are permitted provided that the following conditions are
11 // met:
12 //
13 // 1. Redistributions of source code must retain the above copyright
14 // notice, this list of conditions and the following disclaimer.
15 //
16 // 2. Redistributions in binary form must reproduce the above copyright
17 // notice, this list of conditions and the following disclaimer in the
18 // documentation and/or other materials provided with the distribution.
19 //
20 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
21 // IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
23 // PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 // HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
26 // TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 //***************************************************************************/
32 // This file is part of the OpenJPH software implementation.
33 // File: ojph_mem.cpp
34 // Author: Aous Naman
35 // Date: 28 August 2019
36 //***************************************************************************/
37 
38 
39 #include <new>
40 #include "ojph_mem.h"
41 
42 namespace ojph {
43 
45  //
46  //
47  //
48  //
49  //
51 
53  template<>
54  void line_buf::finalize_alloc<si32>(mem_fixed_allocator *p)
55  {
56  assert(p != 0 && size != 0);
58  }
59 
61  template<>
62  void line_buf::finalize_alloc<float>(mem_fixed_allocator *p)
63  {
64  assert(p != 0 && size != 0);
65  f32 = p->post_alloc_data<float>(size, pre_size);
66  }
67 
69  template<>
70  void line_buf::wrap(si32 *buffer, size_t num_ele, ui32 pre_size)
71  {
72  i32 = buffer;
73  this->size = num_ele;
74  this->pre_size = pre_size;
75  }
76 
78  template<>
79  void line_buf::wrap(float *buffer, size_t num_ele, ui32 pre_size)
80  {
81  f32 = buffer;
82  this->size = num_ele;
83  this->pre_size = pre_size;
84  }
85 
87  //
88  //
89  //
90  //
91  //
93 
96  {
97  ui32 extended_bytes = needed_bytes + (ui32)sizeof(coded_lists);
98 
99  if (store == NULL)
100  {
101  ui32 bytes = ojph_max(extended_bytes, chunk_size);
102  store = (stores_list*)malloc(bytes);
103  cur_store = store = new (store) stores_list(bytes);
104  total_allocated += bytes;
105  }
106 
107  if (cur_store->available < extended_bytes)
108  {
109  ui32 bytes = ojph_max(extended_bytes, chunk_size);
110  cur_store->next_store = (stores_list*)malloc(bytes);
111  cur_store = new (cur_store->next_store) stores_list(bytes);
112  total_allocated += bytes;
113  }
114 
115  p = new (cur_store->data) coded_lists(needed_bytes);
116 
117  cur_store->available -= extended_bytes;
118  cur_store->data += extended_bytes;
119  }
120 
121 }
void get_buffer(ui32 needed_bytes, coded_lists *&p)
Definition: ojph_mem.cpp:95
stores_list * cur_store
Definition: ojph_mem.h:213
T * post_alloc_data(size_t num_ele, ui32 pre_size)
Definition: ojph_mem.h:89
int32_t si32
Definition: ojph_defs.h:55
uint32_t ui32
Definition: ojph_defs.h:54
#define ojph_max(a, b)
Definition: ojph_defs.h:73
size_t size
Definition: ojph_mem.h:152
float * f32
Definition: ojph_mem.h:156
void wrap(T *buffer, size_t num_ele, ui32 pre_size)
si32 * i32
Definition: ojph_mem.h:155