X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fdataset.inl;h=954081e58125e459ca515a072e626f5c9954117a;hp=bf6140c597e0680748424f413b4c39082286cfd4;hb=8512530474f0e0827447b6c81302120592f0e297;hpb=017ce4cb4c27802eb620227fd822f5e4e03efa3b diff --git a/src/dataset.inl b/src/dataset.inl index bf6140c..954081e 100644 --- a/src/dataset.inl +++ b/src/dataset.inl @@ -51,6 +51,28 @@ T DataSet::get(const char *name) const return res; } +template +void DataSet::add_loaded_callback(LoadedCallbackFunc func, void *cls) +{ + std::pair cb; + cb.first = func; + cb.second = cls; + loaded_cb.push_back(cb); +} + +template +bool DataSet::remove_loaded_callback(LoadedCallbackFunc func) +{ + int numcb = (int)loaded_cb.size(); + for(int i=0; i::dataset_load_func(const char *fname, int id, void *cls) { DataSet *dset = (DataSet*)cls; T data = (T)resman_get_res_data(dset->rman, id); + if(!data) return -1; if(!dset->load(data, fname)) { return -1; @@ -83,6 +106,11 @@ int DataSet::dataset_done_func(int id, void *cls) if(dset->done) { dset->done(data); } + + int numcb = (int)dset->loaded_cb.size(); + for(int i=0; iloaded_cb[i].first(data, dset->loaded_cb[i].second); + } return 0; }