OpenWareLaboratory
Resource.h
Go to the documentation of this file.
1 #ifndef __RESOURCE_STORAGE_H__
2 #define __RESOURCE_STORAGE_H__
3 
4 #include <cstddef>
5 #include <stdint.h>
6 #include "FloatArray.h"
7 
8 class Resource {
9 public:
13  bool hasData() const {
14  return data != NULL;
15  }
16 
20  void* getData() {
21  return data;
22  }
23 
27  size_t getSize() const {
28  return size;
29  }
30 
31  bool exists() const {
32  return size != 0;
33  }
34 
35  bool isMutable() const {
36  return allocated;
37  }
38 
42  const char* getName() const {
43  return name;
44  }
45 
52  template<typename Array, typename Element>
53  Array asArray(size_t offset = 0, size_t max_size = 0xFFFFFFFF);
54 
55  FloatArray asFloatArray(size_t offset = 0, size_t max_size = 0xFFFFFFFF){
56  return asArray<FloatArray, float>(offset, max_size);
57  }
58 
66  static Resource* open(const char* name);
67 
76  static Resource* load(const char* name);
77 
81  static void destroy(Resource* resource);
82 
91  size_t read(void* dest, size_t len, size_t offset=0);
92 
93  Resource(): name(NULL), size(0), data(NULL), allocated(false) {}
95 protected:
96  Resource(const char* name, size_t size, void* data)
97  : name(name), size(size), data((uint8_t*)data), allocated(false) {}
98  const char* name;
99  size_t size;
100  uint8_t* data;
101  bool allocated;
102 };
103 #endif
This class contains useful methods for manipulating arrays of floats.
Definition: FloatArray.h:12
const char * name
Definition: Resource.h:98
~Resource()
Definition: Resource.h:94
bool isMutable() const
Definition: Resource.h:35
size_t getSize() const
Get buffer size in bytes.
Definition: Resource.h:27
const char * getName() const
Get resource name.
Definition: Resource.h:42
bool exists() const
Definition: Resource.h:31
bool allocated
Definition: Resource.h:101
Resource(const char *name, size_t size, void *data)
Definition: Resource.h:96
size_t read(void *dest, size_t len, size_t offset=0)
Read data from resource into memory.
Definition: Resource.cpp:57
Resource()
Definition: Resource.h:93
uint8_t * data
Definition: Resource.h:100
Array asArray(size_t offset=0, size_t max_size=0xFFFFFFFF)
Array conversion.
Definition: Resource.cpp:9
FloatArray asFloatArray(size_t offset=0, size_t max_size=0xFFFFFFFF)
Definition: Resource.h:55
bool hasData() const
Check if data is available.
Definition: Resource.h:13
static void destroy(Resource *resource)
Clean up used memory resources.
Definition: Resource.cpp:18
size_t size
Definition: Resource.h:99
void * getData()
Get pointer to data.
Definition: Resource.h:20
static Resource * open(const char *name)
Get resource from storage.
Definition: Resource.cpp:24
static Resource * load(const char *name)
Open resource and load data.
Definition: Resource.cpp:36