U jednom dijelu programa želim provjeriti postoji li dataset u fileu. Dokumentacija za HDF5 C API kaže da se za to može koristiti funkcija [tt]H5Gget_objinfo()[/tt] čija je signatura:
[tt][i]herr_t[/i] H5Gget_objinfo( [i]hid_t[/i] loc_id, [i]const char[/i] *name, [i]hbool_t[/i] follow_link, [i]H5G_stat_t[/i] *statbuf )[/tt]
Naime, za [tt]statbuf[/tt] se proslijedi [tt]NULL[/tt] i gleda se povratna vrijednost: ako je negativna, objekt ne postoji, ako je nenegativna, objekt postoji.
E sad, u C++ API-ju se dotična funkcija nalazi u sučelju klase [tt]H5::H5File[/tt] (zapravo u njenoj baznoj klasi [tt]H5::CommonFG[/tt]) u sljedećem obliku (tj. jednom od oblika):
[tt][i]void[/i] H5::CommonFG::getObjinfo( [i]const char[/i] *name, [i]H5G_stat_t[/i] &statbuf ) const[/tt]
Poanta: više nema povratne vrijednosti i mora se nešto proslijediti za [tt]statbuf[/tt], ne može to biti [tt]0[/tt].
Moje ne baš elegantno rješenje:
[code:1]
inline bool objExists(const H5::CommonFG& fg, const char* obj) {
try {
H5G_stat_t dummy;
fg.getObjinfo(obj, dummy);
return true;
}
catch (H5::Exception&) {
return false;
}
}
[/code:1]
Ima li netko bolju ideju? Nekako ne mogu vjerovati da nisu predvidjeli funkciju koja provjerava postojanje objekta u fileu. Imam osjećaj da mi to čitavo vrijeme promiče. :)
U jednom dijelu programa želim provjeriti postoji li dataset u fileu. Dokumentacija za HDF5 C API kaže da se za to može koristiti funkcija H5Gget_objinfo() čija je signatura:
herr_t H5Gget_objinfo( hid_t loc_id, const char *name, hbool_t follow_link, H5G_stat_t *statbuf )
Naime, za statbuf se proslijedi NULL i gleda se povratna vrijednost: ako je negativna, objekt ne postoji, ako je nenegativna, objekt postoji.
E sad, u C++ API-ju se dotična funkcija nalazi u sučelju klase H5::H5File (zapravo u njenoj baznoj klasi H5::CommonFG) u sljedećem obliku (tj. jednom od oblika):
void H5::CommonFG::getObjinfo( const char *name, H5G_stat_t &statbuf ) const
Poanta: više nema povratne vrijednosti i mora se nešto proslijediti za statbuf, ne može to biti 0.
Moje ne baš elegantno rješenje:
Kod: |
inline bool objExists(const H5::CommonFG& fg, const char* obj) {
try {
H5G_stat_t dummy;
fg.getObjinfo(obj, dummy);
return true;
}
catch (H5::Exception&) {
return false;
}
}
|
Ima li netko bolju ideju? Nekako ne mogu vjerovati da nisu predvidjeli funkciju koja provjerava postojanje objekta u fileu. Imam osjećaj da mi to čitavo vrijeme promiče.
_________________ I don't know half of you half as well as I should like; and I like less than half of you half as well as you deserve.
|