goat3dgfx
annotate src/dataset.inl @ 15:7d6b667821cf
wrapped everything in the goatgfx namespace
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 30 Nov 2013 20:52:21 +0200 |
parents | 18879c956eb1 |
children | dc5918c62a64 |
rev | line source |
---|---|
nuclear@0 | 1 #include <stdio.h> |
nuclear@0 | 2 #include <string.h> |
nuclear@0 | 3 #include "datapath.h" |
nuclear@0 | 4 |
nuclear@15 | 5 namespace goatgfx { |
nuclear@15 | 6 |
nuclear@0 | 7 template <typename T> |
nuclear@0 | 8 DataSet<T>::DataSet(T (*load_func)(const char*), void (*destr_func)(T)) |
nuclear@0 | 9 { |
nuclear@0 | 10 load = load_func; |
nuclear@0 | 11 destroy = destr_func; |
nuclear@0 | 12 } |
nuclear@0 | 13 |
nuclear@0 | 14 template <typename T> |
nuclear@0 | 15 DataSet<T>::~DataSet() |
nuclear@0 | 16 { |
nuclear@0 | 17 clear(); |
nuclear@0 | 18 } |
nuclear@0 | 19 |
nuclear@0 | 20 template <typename T> |
nuclear@0 | 21 void DataSet<T>::clear() |
nuclear@0 | 22 { |
nuclear@0 | 23 if(destroy) { |
nuclear@0 | 24 typename std::map<std::string, T>::iterator it = data.begin(); |
nuclear@0 | 25 while(it != data.end()) { |
nuclear@0 | 26 destroy(it++->second); |
nuclear@0 | 27 } |
nuclear@0 | 28 } |
nuclear@0 | 29 data.clear(); |
nuclear@0 | 30 } |
nuclear@0 | 31 |
nuclear@0 | 32 template <typename T> |
nuclear@0 | 33 T DataSet<T>::get(const char *name) const |
nuclear@0 | 34 { |
nuclear@0 | 35 typename std::map<std::string, T>::const_iterator iter = data.find(name); |
nuclear@0 | 36 if(iter != data.end()) { |
nuclear@0 | 37 return iter->second; |
nuclear@0 | 38 } |
nuclear@0 | 39 |
nuclear@15 | 40 std::string path = goatgfx::datafile_path(name); |
nuclear@0 | 41 if(path.empty()) { |
nuclear@0 | 42 fprintf(stderr, "can't find data file: %s\n", name); |
nuclear@0 | 43 return 0; |
nuclear@0 | 44 } |
nuclear@0 | 45 |
nuclear@0 | 46 T res = load(path.c_str()); |
nuclear@0 | 47 if(res) { |
nuclear@0 | 48 data[name] = res; |
nuclear@0 | 49 } |
nuclear@0 | 50 return res; |
nuclear@0 | 51 } |
nuclear@15 | 52 |
nuclear@15 | 53 } // namespace goatgfx |