6 #include "napiconfig.h"
10 using namespace NeXus;
14 using std::stringstream;
22 static const string NULL_STR =
"NULL";
25 template <
typename NumT>
26 static string toString(
const vector<NumT>& data) {
29 size_t size = data.size();
30 for (
size_t i = 0; i < size; i++) {
40 static vector<int64_t> toInt64(
const vector<int> & small_v) {
42 vector<int64_t> big_v;
43 big_v.reserve(small_v.size());
44 for (vector<int>::const_iterator it = small_v.begin(); it != small_v.end(); ++it)
46 big_v.push_back(static_cast<int64_t>(*it));
56 template <
typename NumT>
59 msg <<
"NeXus::getType() does not know type of " <<
typeid(number).name();
125 #define ARRAY_OFFSET 1
127 #define ARRAY_OFFSET 0
130 static int check_float_too_big[4 -
sizeof(float) +
ARRAY_OFFSET];
131 static int check_float_too_small[
sizeof(float) - 4 +
ARRAY_OFFSET];
132 static int check_double_too_big[8 -
sizeof(double) +
ARRAY_OFFSET];
133 static int check_double_too_small[
sizeof(double) - 8 +
ARRAY_OFFSET];
134 static int check_char_too_big[1 -
sizeof(char) +
ARRAY_OFFSET];
138 static void inner_malloc(
void* & data,
const std::vector<int64_t>& dims,
NXnumtype type) {
139 int rank = dims.size();
140 int64_t c_dims[NX_MAXRANK];
141 for (
int i = 0; i < rank; i++) {
144 NXstatus status = NXmalloc64(&data, rank, c_dims, type);
145 if (status != NX_OK) {
146 throw Exception(
"NXmalloc failed", status);
151 static void inner_free(
void* & data) {
152 NXstatus status =
NXfree(&data);
153 if (status != NX_OK) {
154 throw Exception(
"NXfree failed", status);
161 File::File(NXhandle handle,
bool close_handle) : m_file_id(handle), m_close_handle(close_handle) {
164 File::File(
const string& filename,
const NXaccess access) : m_close_handle (true) {
165 this->initOpenFile(filename, access);
168 File::File(
const char *filename,
const NXaccess access) : m_close_handle (true) {
169 this->initOpenFile(
string(filename), access);
172 void File::initOpenFile(
const string& filename,
const NXaccess access) {
173 if (filename.empty()) {
174 throw Exception(
"Filename specified is empty constructor");
177 NXstatus status =
NXopen(filename.c_str(), access, &(this->m_file_id));
178 if (status != NX_OK) {
180 msg <<
"NXopen(" << filename <<
", " << access <<
") failed";
186 if (m_close_handle && m_file_id != NULL) {
187 NXstatus status =
NXclose(&(this->m_file_id));
188 this->m_file_id = NULL;
189 if (status != NX_OK) {
190 throw Exception(
"NXclose failed", status);
196 if (this->m_file_id != NULL) {
197 NXstatus status =
NXclose(&(this->m_file_id));
198 this->m_file_id = NULL;
199 if (status != NX_OK) {
200 throw Exception(
"NXclose failed", status);
206 NXstatus status =
NXflush(&(this->m_file_id));
207 if (status != NX_OK) {
208 throw Exception(
"NXflush failed", status);
214 throw Exception(
"Supplied empty name to makeGroup");
216 if (class_name.empty()) {
217 throw Exception(
"Supplied empty class name to makeGroup");
219 NXstatus status =
NXmakegroup(this->m_file_id, name.c_str(),
221 if (status != NX_OK) {
223 msg <<
"NXmakegroup(" << name <<
", " << class_name <<
") failed";
233 throw Exception(
"Supplied empty name to openGroup");
235 if (class_name.empty()) {
236 throw Exception(
"Supplied empty class name to openGroup");
238 NXstatus status =
NXopengroup(this->m_file_id, name.c_str(),
240 if (status != NX_OK) {
242 msg <<
"NXopengroup(" << name <<
", " << class_name <<
") failed";
249 throw Exception(
"Supplied empty path to openPath");
251 NXstatus status =
NXopenpath(this->m_file_id, path.c_str());
252 if (status != NX_OK) {
254 msg <<
"NXopenpath(" << path <<
") failed";
261 throw Exception(
"Supplied empty path to openGroupPath");
264 if (status != NX_OK) {
266 msg <<
"NXopengrouppath(" << path <<
") failed";
274 memset(cPath,0,
sizeof(cPath));
275 NXstatus status =
NXgetpath(this->m_file_id,cPath,
sizeof(cPath)-1);
276 if (status != NX_OK) {
278 msg <<
"NXgetpath() failed";
281 return std::string(cPath);
286 if (status != NX_OK) {
287 throw Exception(
"NXclosegroup failed", status);
292 const vector<int>& dims,
bool open_data) {
293 this->
makeData(name, type, toInt64(dims), open_data);
297 const vector<int64_t>& dims,
bool open_data) {
300 throw Exception(
"Supplied empty label to makeData");
303 throw Exception(
"Supplied empty dimensions to makeData");
307 NXstatus status = NXmakedata64(this->m_file_id, name.c_str(), (int)type,
308 dims.size(),
const_cast<int64_t*
>(&(dims[0])));
310 if (status != NX_OK) {
312 msg <<
"NXmakedata(" << name <<
", " << type <<
", " << dims.size()
313 <<
", " << toString(dims) <<
") failed";
321 template <
typename NumT>
323 const NumT length,
bool open_data) {
324 vector<int64_t> dims;
325 dims.push_back(static_cast<int64_t>(length));
326 this->
makeData(name, type, dims, open_data);
329 template <
typename NumT>
331 std::vector<NumT> v(1, value);
336 this->
writeData(name, std::string(value));
341 string my_value(value);
343 if (my_value.empty())
346 dims.push_back(static_cast<int>(my_value.size()));
356 template <
typename NumT>
358 vector<int64_t> dims(1, value.size());
362 template <
typename NumT>
364 const vector<int>& dims) {
365 this->
makeData(name, getType<NumT>(), dims,
true);
370 template <
typename NumT>
372 const vector<int64_t>& dims) {
373 this->
makeData(name, getType<NumT>(), dims,
true);
379 template <
typename NumT>
386 template <
typename NumT>
389 vector<int64_t> dims(1, NX_UNLIMITED);
390 vector<int64_t> chunk_dims(1, chunk);
393 this->
putSlab(value, int64_t(0), int64_t(value.size()));
397 template <
typename NumT>
399 vector<int64_t>& dims, std::vector<int64_t> & chunk)
402 std::vector<int64_t> unlim_dims(dims);
403 unlim_dims[0] = NX_UNLIMITED;
407 std::vector<int64_t> start( dims.size(), 0 );
408 this->
putSlab(value, start, dims);
414 template <
typename NumT>
418 this->
putSlab(value, int64_t(0), int64_t(value.size()));
422 template <
typename NumT>
424 std::vector<int64_t>& dims)
427 std::vector<int64_t> start( dims.size(), 0 );
428 this->
putSlab(value, start, dims);
435 const vector<int>& bufsize,
bool open_data) {
436 this->
makeCompData(name, type, toInt64(dims), comp, toInt64(bufsize), open_data);
441 const vector<int64_t>& bufsize,
bool open_data) {
444 throw Exception(
"Supplied empty name to makeCompData");
447 throw Exception(
"Supplied empty dimensions to makeCompData");
449 if (bufsize.empty()) {
450 throw Exception(
"Supplied empty bufsize to makeCompData");
452 if (dims.size() != bufsize.size()) {
454 msg <<
"Supplied dims rank=" << dims.size()
455 <<
" must match supplied bufsize rank=" << bufsize.size()
456 <<
"in makeCompData";
461 int i_type =
static_cast<int>(type);
462 int i_comp =
static_cast<int>(comp);
463 NXstatus status = NXcompmakedata64(this->m_file_id, name.c_str(), i_type,
465 const_cast<int64_t *
>(&(dims[0])), i_comp,
466 const_cast<int64_t *
>(&(bufsize[0])));
469 if (status != NX_OK) {
471 msg <<
"NXcompmakedata64(" << name <<
", " << type <<
", " << dims.size()
472 <<
", " << toString(dims) <<
", " << comp <<
", " << toString(bufsize)
481 template <
typename NumT>
484 const vector<int> & bufsize) {
485 this->
writeCompData(name, value, toInt64(dims), comp, toInt64(bufsize));
488 template <
typename NumT>
491 const vector<int64_t> & bufsize) {
492 this->
makeCompData(name, getType<NumT>(), dims, comp, bufsize,
true);
499 msg <<
"compress(" << comp <<
") is depricated - use makeCompData()";
505 throw Exception(
"Supplied empty name to openData");
507 NXstatus status =
NXopendata(this->m_file_id, name.c_str());
508 if (status != NX_OK) {
509 throw Exception(
"NXopendata(" + name +
") failed", status);
515 if (status != NX_OK) {
516 throw Exception(
"NXclosedata() failed", status);
522 throw Exception(
"Data specified as null in putData");
524 NXstatus status =
NXputdata(this->m_file_id, const_cast<void *>(data));
525 if (status != NX_OK) {
526 throw Exception(
"NXputdata(void *) failed", status);
530 template <
typename NumT>
533 throw Exception(
"Supplied empty data to putData");
539 if (info.
name == NULL_STR) {
540 throw Exception(
"Supplied bad attribute name \"" + NULL_STR +
"\"");
542 if (info.
name.empty()) {
543 throw Exception(
"Supplied empty name to putAttr");
545 NXstatus status =
NXputattr(this->m_file_id, info.
name.c_str(),
546 const_cast<void *
>(data), info.
length,
548 if (status != NX_OK) {
550 msg <<
"NXputattr(" << info.
name <<
", data, " << info.
length <<
", "
551 << info.
type <<
") failed";
556 template <
typename NumT>
561 info.
type = getType<NumT>();
567 throw Exception(
"Specified name as null to putAttr");
570 throw Exception(
"Specified value as null to putAttr");
573 string s_value(value);
574 this->
putAttr(s_name, s_value);
578 string my_value(value);
579 if (my_value.empty())
583 info.
length =
static_cast<int>(my_value.size());
585 this->
putAttr(info, &(my_value[0]));
589 vector<int64_t> start_big = toInt64(start);
590 vector<int64_t> size_big = toInt64(size);
591 this->
putSlab(data, start_big, size_big);
594 void File::putSlab(
void* data, vector<int64_t>& start, vector<int64_t>& size) {
596 throw Exception(
"Data specified as null in putSlab");
599 throw Exception(
"Supplied empty start to putSlab");
602 throw Exception(
"Supplied empty size to putSlab");
604 if (start.size() != size.size()) {
606 msg <<
"Supplied start rank=" << start.size()
607 <<
" must match supplied size rank=" << size.size()
611 NXstatus status = NXputslab64(this->m_file_id, data, &(start[0]), &(size[0]));
612 if (status != NX_OK) {
614 msg <<
"NXputslab64(data, " << toString(start) <<
", " << toString(size)
620 template <
typename NumT>
623 vector<int64_t> start_big = toInt64(start);
624 vector<int64_t> size_big = toInt64(size);
625 this->
putSlab(data, start_big, size_big);
628 template <
typename NumT>
630 vector<int64_t>& size) {
632 throw Exception(
"Supplied empty data to putSlab");
634 this->
putSlab(&(data[0]), start, size);
637 template <
typename NumT>
639 this->
putSlab(data, static_cast<int64_t>(start), static_cast<int64_t>(size));
642 template <
typename NumT>
644 vector<int64_t> start_v;
645 start_v.push_back(start);
646 vector<int64_t> size_v;
647 size_v.push_back(size);
648 this->
putSlab(data, start_v, size_v);
653 NXstatus status =
NXgetdataID(this->m_file_id, &link);
654 if (status != NX_OK) {
655 throw Exception(
"NXgetdataID failed", status);
675 NXstatus status =
NXmakelink(this->m_file_id, &link);
676 if (status != NX_OK) {
677 throw Exception(
"NXmakelink failed", status);
683 throw Exception(
"Supplied empty name to makeNamedLink");
685 NXstatus status =
NXmakenamedlink(this->m_file_id, name.c_str(), &link);
686 if (status != NX_OK) {
687 throw Exception(
"NXmakenamedlink(" + name +
", link)", status);
693 if (status != NX_OK) {
694 throw Exception(
"NXopensourcegroup failed");
700 throw Exception(
"Supplied null pointer to getData");
702 NXstatus status =
NXgetdata(this->m_file_id, data);
703 if (status != NX_OK) {
704 throw Exception(
"NXgetdata failed", status);
708 template <
typename NumT>
711 if (info.
type != getType<NumT>()) {
712 throw Exception(
"NXgetdata failed - invalid vector type");
717 for (vector<int64_t>::const_iterator it = info.
dims.begin();
718 it != info.
dims.end(); it++) {
724 inner_malloc(temp, info.
dims, info.
type);
730 vector<NumT> * result =
new vector<NumT>(
static_cast<NumT *
>(temp),
731 static_cast<NumT *>(temp)
732 +
static_cast<size_t>(length));
738 template <
typename NumT>
742 if (info.
type != getType<NumT>())
744 throw Exception(
"NXgetdata failed - invalid vector type");
748 for (vector<int64_t>::const_iterator it = info.
dims.begin();
749 it != info.
dims.end(); it++) {
767 vector<int8_t> result;
769 data.assign(result.begin(), result.end());
773 vector<uint8_t> result;
775 data.assign(result.begin(), result.end());
779 vector<int16_t> result;
781 data.assign(result.begin(), result.end());
785 vector<uint16_t> result;
787 data.assign(result.begin(), result.end());
791 vector<int32_t> result;
793 data.assign(result.begin(), result.end());
797 vector<uint32_t> result;
799 data.assign(result.begin(), result.end());
803 throw Exception(
"NexusFile::getDataCoerce(): Could not coerce to int.");
812 vector<int8_t> result;
814 data.assign(result.begin(), result.end());
818 vector<uint8_t> result;
820 data.assign(result.begin(), result.end());
824 vector<int16_t> result;
826 data.assign(result.begin(), result.end());
830 vector<uint16_t> result;
832 data.assign(result.begin(), result.end());
836 vector<int32_t> result;
838 data.assign(result.begin(), result.end());
842 vector<uint32_t> result;
844 data.assign(result.begin(), result.end());
848 vector<float> result;
850 data.assign(result.begin(), result.end());
858 throw Exception(
"NexusFile::getDataCoerce(): Could not coerce to double.");
862 template <
typename NumT>
870 template <
typename NumT>
873 std::vector<NumT> dataVector;
876 if (dataVector.size() > 0)
877 data = dataVector[0];
910 if (info.
type != NX_CHAR) {
912 msg <<
"Cannot use getStrData() on non-character data. Found type="
916 if (info.
dims.size() != 1) {
918 msg <<
"getStrData() only understand rank=1 data. Found rank="
922 char* value =
new char[info.
dims[0]+1];
931 res = string(value, info.
dims[0]);
938 int64_t dims[NX_MAXRANK];
941 NXstatus status = NXgetinfo64(this->m_file_id, &rank, dims, &type);
942 if (status != NX_OK) {
943 throw Exception(
"NXgetinfo failed", status);
947 for (
int i = 0; i < rank; i++) {
948 info.
dims.push_back(dims[i]);
955 char name[NX_MAXNAMELEN];
956 char class_name[NX_MAXNAMELEN];
959 NXstatus status =
NXgetnextentry(this->m_file_id, name, class_name,
961 if (status == NX_OK) {
962 string str_name(name);
963 string str_class(class_name);
964 return pair<string,string>(str_name, str_class);
966 else if (status == NX_EOD) {
967 return pair<string,string>(NULL_STR, NULL_STR);
970 throw Exception(
"NXgetnextentry failed", status);
976 map<string, string> result;
984 this->initGroupDir();
985 pair<string,string> temp;
988 if (temp.first == NULL_STR && temp.second == NULL_STR) {
999 const vector<int>& size) {
1000 this->
getSlab(data, toInt64(start), toInt64(size));
1004 const vector<int64_t>& size) {
1006 throw Exception(
"Supplied null pointer to getSlab");
1008 if (start.size() <= 0) {
1010 msg <<
"Supplied empty start offset, rank = " << start.size()
1014 if (start.size() != size.size()) {
1016 msg <<
"In getSlab start rank=" << start.size() <<
" must match size rank="
1021 NXstatus status = NXgetslab64(this->m_file_id, data, &(start[0]), &(size[0]));
1022 if (status != NX_OK) {
1023 throw Exception(
"NXgetslab failed", status);
1029 char name[NX_MAXNAMELEN];
1032 NXstatus status =
NXgetnextattr(this->m_file_id, name, &length, &type);
1033 if (status == NX_OK) {
1037 info.
name = string(name);
1040 else if (status == NX_EOD) {
1042 info.
name = NULL_STR;
1047 throw Exception(
"NXgetnextattr failed", status);
1052 char name[NX_MAXNAMELEN];
1053 strcpy(name, info.
name.c_str());
1054 int type = info.
type;
1059 NXstatus status =
NXgetattr(this->m_file_id, name, data, &length,
1061 if (status != NX_OK) {
1062 throw Exception(
"NXgetattr(" + info.
name +
") failed", status);
1064 if (type != info.
type) {
1066 msg <<
"NXgetattr(" << info.
name <<
") changed type [" << info.
type
1067 <<
"->" << type <<
"]";
1071 if (static_cast<unsigned>(length) != info.
length && type != NX_CHAR) {
1073 msg <<
"NXgetattr(" << info.
name <<
") change length [" << info.
length
1074 <<
"->" << length <<
"]";
1080 template <
typename NumT>
1091 info.
type = getType<char>();
1097 template <
typename NumT>
1101 info.
type = getType<NumT>();
1104 value = this->getAttr<NumT>(info);
1112 msg <<
"getStrAttr only works with strings (type=" <<
CHAR
1113 <<
") found type=" << info.
type;
1116 char* value =
new char[info.
length + 1];
1130 res = string(value);
1137 vector<AttrInfo> infos;
1138 this->initAttrDir();
1142 if (temp.
name == NULL_STR) {
1145 infos.push_back(temp);
1152 this->initAttrDir();
1156 if (temp.
name == NULL_STR) {
1159 if (temp.
name == name)
1168 NXstatus status =
NXgetgroupID(this->m_file_id, &link);
1169 if (status != NX_OK) {
1170 throw Exception(
"NXgetgroupID failed", status);
1176 NXstatus status =
NXsameID(this->m_file_id, &first, &second);
1177 return (status == NX_OK);
1181 NXstatus status = NXIprintlink(this->m_file_id, &link);
1182 if (status != NX_OK) {
1187 void File::initGroupDir() {
1189 if (status != NX_OK) {
1190 throw Exception(
"NXinitgroupdir failed", status);
1194 void File::initAttrDir() {
1196 if (status != NX_OK) {
1197 throw Exception(
"NXinitattrdir failed", status);
1202 if (format.empty()) {
1203 throw Exception(
"Supplied empty format to setNumberFormat");
1205 char c_format[NX_MAXNAMELEN];
1206 strcpy(c_format, format.c_str());
1208 if (status != NX_OK) {
1210 msg <<
"NXsetnumberformat(" << format <<
") failed";
1217 char* c_filename =
new char[buff_length];
1218 NXstatus status =
NXinquirefile(this->m_file_id, c_filename, buff_length);
1219 if (status != NX_OK) {
1220 delete[] c_filename;
1222 msg <<
"NXinquirefile(" << buff_length <<
") failed";
1225 filename = c_filename;
1226 delete[] c_filename;
1231 const unsigned buff_length) {
1234 throw Exception(
"Supplied empty name to isExternalGroup");
1237 throw Exception(
"Supplied empty type to isExternalGroup");
1239 char* c_url =
new char[buff_length];
1241 type.c_str(), c_url, buff_length);
1242 if (status != NX_OK) {
1245 msg <<
"NXisexternalgroup(" << type <<
", " << buff_length <<
")";
1246 throw Exception(msg.str(), buff_length);
1254 const string& url) {
1256 throw Exception(
"Supplied empty name to linkExternal");
1259 throw Exception(
"Supplied empty type to linkExternal");
1262 throw Exception(
"Supplied empty url to linkExternal");
1264 NXstatus status =
NXlinkexternal(this->m_file_id, name.c_str(), type.c_str(),
1266 if (status != NX_OK) {
1268 msg <<
"NXlinkexternal(" << name <<
", " << type <<
", " << url
1274 const string File::makeCurrentPath(
const string currpath,
const string subpath) {
1275 std::ostringstream temp;
1276 temp << currpath <<
"/" << subpath;
1280 void File::walkFileForTypeMap(
const string path,
const string class_name,
TypeMap& tmap) {
1281 if (!path.empty()) {
1282 tmap.insert(std::make_pair(class_name, path));
1284 map<string, string> dirents = this->
getEntries();
1285 map<string, string>::iterator pos;
1286 for (pos = dirents.begin(); pos != dirents.end(); ++pos) {
1287 if (pos->second ==
"SDS") {
1288 tmap.insert(std::make_pair(pos->second, this->makeCurrentPath(path, pos->first)));
1290 else if (pos->second ==
"CDF0.0") {
1295 this->
openGroup(pos->first, pos->second);
1296 this->walkFileForTypeMap(this->makeCurrentPath(path, pos->first), pos->second, tmap);
1306 this->walkFileForTypeMap(
"",
"", *tmap);
1310 template<
typename NumT>
1313 if (getType<NumT>() != info.
type)
1315 throw Exception(
"Type mismatch in malloc()");
1317 inner_malloc((
void*&)data, info.
dims, info.
type);
1320 template<
typename NumT>
1323 inner_free((
void*&)data);
1332 NXDLL_EXPORT void File::putAttr(
const string& name,
const float value);
1334 NXDLL_EXPORT void File::putAttr(
const string& name,
const double value);
1336 NXDLL_EXPORT void File::putAttr(
const string& name,
const int8_t value);
1338 NXDLL_EXPORT void File::putAttr(
const string& name,
const uint8_t value);
1340 NXDLL_EXPORT void File::putAttr(
const string& name,
const int16_t value);
1342 NXDLL_EXPORT void File::putAttr(
const string& name,
const uint16_t value);
1344 NXDLL_EXPORT void File::putAttr(
const string& name,
const int32_t value);
1346 NXDLL_EXPORT void File::putAttr(
const string& name,
const uint32_t value);
1348 NXDLL_EXPORT void File::putAttr(
const string& name,
const int64_t value);
1350 NXDLL_EXPORT void File::putAttr(
const string& name,
const uint64_t value);
1352 NXDLL_EXPORT void File::putAttr(
const string& name,
const char value);
1379 const int length,
bool open_data);
1382 const int64_t length,
bool open_data);
1385 NXDLL_EXPORT void File::writeData(
const string& name,
const float& value);
1387 NXDLL_EXPORT void File::writeData(
const string& name,
const double& value);
1389 NXDLL_EXPORT void File::writeData(
const string& name,
const int8_t& value);
1391 NXDLL_EXPORT void File::writeData(
const string& name,
const uint8_t& value);
1393 NXDLL_EXPORT void File::writeData(
const string& name,
const int16_t& value);
1395 NXDLL_EXPORT void File::writeData(
const string& name,
const uint16_t& value);
1397 NXDLL_EXPORT void File::writeData(
const string& name,
const int32_t& value);
1399 NXDLL_EXPORT void File::writeData(
const string& name,
const uint32_t& value);
1401 NXDLL_EXPORT void File::writeData(
const string& name,
const int64_t& value);
1403 NXDLL_EXPORT void File::writeData(
const string& name,
const uint64_t& value);
1405 NXDLL_EXPORT void File::writeData(
const string& name,
const char& value);
1408 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<float>& value);
1410 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<double>& value);
1412 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<int8_t>& value);
1414 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<uint8_t>& value);
1416 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<int16_t>& value);
1418 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<uint16_t>& value);
1420 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<int32_t>& value);
1422 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<uint32_t>& value);
1424 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<int64_t>& value);
1426 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<uint64_t>& value);
1428 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<char>& value);
1431 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<float>& value,
const std::vector<int>& dims);
1433 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<double>& value,
const std::vector<int>& dims);
1435 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<int8_t>& value,
const std::vector<int>& dims);
1437 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<uint8_t>& value,
const std::vector<int>& dims);
1439 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<int16_t>& value,
const std::vector<int>& dims);
1441 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<uint16_t>& value,
const std::vector<int>& dims);
1443 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<int32_t>& value,
const std::vector<int>& dims);
1445 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<uint32_t>& value,
const std::vector<int>& dims);
1447 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<int64_t>& value,
const std::vector<int>& dims);
1449 NXDLL_EXPORT void File::writeData(
const string& name,
const vector<uint64_t>& value,
const std::vector<int>& dims);
1452 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<float>& value);
1454 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<double>& value);
1456 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int8_t>& value);
1458 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint8_t>& value);
1460 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int16_t>& value);
1462 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint16_t>& value);
1464 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int32_t>& value);
1466 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint32_t>& value);
1468 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int64_t>& value);
1470 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint64_t>& value);
1472 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<char>& value);
1475 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<float>& value,
const int64_t chunk);
1477 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<double>& value,
const int64_t chunk);
1479 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int8_t>& value,
const int64_t chunk);
1481 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint8_t>& value,
const int64_t chunk);
1483 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int16_t>& value,
const int64_t chunk);
1485 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint16_t>& value,
const int64_t chunk);
1487 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int32_t>& value,
const int64_t chunk);
1489 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint32_t>& value,
const int64_t chunk);
1491 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int64_t>& value,
const int64_t chunk);
1493 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint64_t>& value,
const int64_t chunk);
1495 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<char>& value,
const int64_t chunk);
1498 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<float>& value, std::vector<int64_t> & dims, std::vector<int64_t> & chunk);
1500 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<double>& value, std::vector<int64_t> & dims, std::vector<int64_t> & chunk);
1502 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int8_t>& value, std::vector<int64_t> & dims, std::vector<int64_t> & chunk);
1504 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint8_t>& value, std::vector<int64_t> & dims, std::vector<int64_t> & chunk);
1506 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int16_t>& value, std::vector<int64_t> & dims, std::vector<int64_t> & chunk);
1508 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint16_t>& value, std::vector<int64_t> & dims, std::vector<int64_t> & chunk);
1510 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int32_t>& value, std::vector<int64_t> & dims, std::vector<int64_t> & chunk);
1512 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint32_t>& value, std::vector<int64_t> & dims, std::vector<int64_t> & chunk);
1514 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<int64_t>& value, std::vector<int64_t> & dims, std::vector<int64_t> & chunk);
1516 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<uint64_t>& value, std::vector<int64_t> & dims, std::vector<int64_t> & chunk);
1518 NXDLL_EXPORT void File::writeExtendibleData(
const string& name, std::vector<char>& value, std::vector<int64_t> & dims, std::vector<int64_t> & chunk);
1521 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<float>& value);
1523 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<double>& value);
1525 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<int8_t>& value);
1527 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<uint8_t>& value);
1529 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<int16_t>& value);
1531 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<uint16_t>& value);
1533 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<int32_t>& value);
1535 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<uint32_t>& value);
1537 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<int64_t>& value);
1539 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<uint64_t>& value);
1541 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<char>& value);
1544 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<float>& value, std::vector<int64_t> & dims);
1546 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<double>& value, std::vector<int64_t> & dims);
1548 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<int8_t>& value, std::vector<int64_t> & dims);
1550 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<uint8_t>& value, std::vector<int64_t> & dims);
1552 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<int16_t>& value, std::vector<int64_t> & dims);
1554 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<uint16_t>& value, std::vector<int64_t> & dims);
1556 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<int32_t>& value, std::vector<int64_t> & dims);
1558 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<uint32_t>& value, std::vector<int64_t> & dims);
1560 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<int64_t>& value, std::vector<int64_t> & dims);
1562 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<uint64_t>& value, std::vector<int64_t> & dims);
1564 NXDLL_EXPORT void File::writeUpdatedData(
const string& name, vector<char>& value, std::vector<int64_t> & dims);
1567 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<float> & value,
1569 const vector<int> & bufsize);
1571 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<float> & value,
1573 const vector<int64_t> & bufsize);
1575 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<double> & value,
1577 const vector<int> & bufsize);
1579 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<double> & value,
1581 const vector<int64_t> & bufsize);
1583 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<int8_t> & value,
1585 const vector<int> & bufsize);
1587 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<int8_t> & value,
1589 const vector<int64_t> & bufsize);
1591 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<uint8_t> & value,
1593 const vector<int> & bufsize);
1595 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<uint8_t> & value,
1597 const vector<int64_t> & bufsize);
1599 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<int16_t> & value,
1601 const vector<int> & bufsize);
1603 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<int16_t> & value,
1605 const vector<int64_t> & bufsize);
1607 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<uint16_t> & value,
1609 const vector<int> & bufsize);
1611 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<uint16_t> & value,
1613 const vector<int64_t> & bufsize);
1615 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<int32_t> & value,
1617 const vector<int> & bufsize);
1619 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<int32_t> & value,
1621 const vector<int64_t> & bufsize);
1623 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<uint32_t> & value,
1625 const vector<int> & bufsize);
1627 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<uint32_t> & value,
1629 const vector<int64_t> & bufsize);
1631 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<int64_t> & value,
1633 const vector<int> & bufsize);
1635 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<int64_t> & value,
1637 const vector<int64_t> & bufsize);
1639 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<uint64_t> & value,
1641 const vector<int> & bufsize);
1643 NXDLL_EXPORT void File::writeCompData(
const string & name,
const vector<uint64_t> & value,
1645 const vector<int64_t> & bufsize);
1677 NXDLL_EXPORT void File::getData(vector<uint8_t>& data);
1679 NXDLL_EXPORT void File::getData(vector<int16_t>& data);
1681 NXDLL_EXPORT void File::getData(vector<uint16_t>& data);
1683 NXDLL_EXPORT void File::getData(vector<int32_t>& data);
1685 NXDLL_EXPORT void File::getData(vector<uint32_t>& data);
1687 NXDLL_EXPORT void File::getData(vector<int64_t>& data);
1689 NXDLL_EXPORT void File::getData(vector<uint64_t>& data);
1694 NXDLL_EXPORT void File::readData(
const std::string & dataName, vector<float>& data);
1696 NXDLL_EXPORT void File::readData(
const std::string & dataName, vector<double>& data);
1698 NXDLL_EXPORT void File::readData(
const std::string & dataName, vector<int8_t>& data);
1700 NXDLL_EXPORT void File::readData(
const std::string & dataName, vector<uint8_t>& data);
1702 NXDLL_EXPORT void File::readData(
const std::string & dataName, vector<int16_t>& data);
1704 NXDLL_EXPORT void File::readData(
const std::string & dataName, vector<uint16_t>& data);
1706 NXDLL_EXPORT void File::readData(
const std::string & dataName, vector<int32_t>& data);
1708 NXDLL_EXPORT void File::readData(
const std::string & dataName, vector<uint32_t>& data);
1710 NXDLL_EXPORT void File::readData(
const std::string & dataName, vector<int64_t>& data);
1712 NXDLL_EXPORT void File::readData(
const std::string & dataName, vector<uint64_t>& data);
1714 NXDLL_EXPORT void File::readData(
const std::string & dataName, vector<char>& data);
1717 NXDLL_EXPORT void File::readData(
const std::string & dataName,
float& data);
1719 NXDLL_EXPORT void File::readData(
const std::string & dataName,
double& data);
1721 NXDLL_EXPORT void File::readData(
const std::string & dataName, int8_t& data);
1723 NXDLL_EXPORT void File::readData(
const std::string & dataName, uint8_t& data);
1725 NXDLL_EXPORT void File::readData(
const std::string & dataName, int16_t& data);
1727 NXDLL_EXPORT void File::readData(
const std::string & dataName, uint16_t& data);
1729 NXDLL_EXPORT void File::readData(
const std::string & dataName, int32_t& data);
1731 NXDLL_EXPORT void File::readData(
const std::string & dataName, uint32_t& data);
1733 NXDLL_EXPORT void File::readData(
const std::string & dataName, int64_t& data);
1735 NXDLL_EXPORT void File::readData(
const std::string & dataName, uint64_t& data);
1738 NXDLL_EXPORT void File::putSlab(std::vector<float>& data,
int start,
int size);
1740 NXDLL_EXPORT void File::putSlab(std::vector<double>& data,
int start,
int size);
1742 NXDLL_EXPORT void File::putSlab(std::vector<int8_t>& data,
int start,
int size);
1744 NXDLL_EXPORT void File::putSlab(std::vector<uint8_t>& data,
int start,
int size);
1746 NXDLL_EXPORT void File::putSlab(std::vector<int16_t>& data,
int start,
int size);
1748 NXDLL_EXPORT void File::putSlab(std::vector<uint16_t>& data,
int start,
int size);
1750 NXDLL_EXPORT void File::putSlab(std::vector<int32_t>& data,
int start,
int size);
1752 NXDLL_EXPORT void File::putSlab(std::vector<uint32_t>& data,
int start,
int size);
1754 NXDLL_EXPORT void File::putSlab(std::vector<int64_t>& data,
int start,
int size);
1756 NXDLL_EXPORT void File::putSlab(std::vector<uint64_t>& data,
int start,
int size);
1759 NXDLL_EXPORT void File::putSlab(std::vector<float>& data, std::vector<int64_t> & start, std::vector<int64_t> & size);
1761 NXDLL_EXPORT void File::putSlab(std::vector<double>& data, std::vector<int64_t> & start, std::vector<int64_t> & size);
1763 NXDLL_EXPORT void File::putSlab(std::vector<int8_t>& data, std::vector<int64_t> & start, std::vector<int64_t> & size);
1765 NXDLL_EXPORT void File::putSlab(std::vector<uint8_t>& data, std::vector<int64_t> & start, std::vector<int64_t> & size);
1767 NXDLL_EXPORT void File::putSlab(std::vector<int16_t>& data, std::vector<int64_t> & start, std::vector<int64_t> & size);
1769 NXDLL_EXPORT void File::putSlab(std::vector<uint16_t>& data, std::vector<int64_t> & start, std::vector<int64_t> & size);
1771 NXDLL_EXPORT void File::putSlab(std::vector<int32_t>& data, std::vector<int64_t> & start, std::vector<int64_t> & size);
1773 NXDLL_EXPORT void File::putSlab(std::vector<uint32_t>& data, std::vector<int64_t> & start, std::vector<int64_t> & size);
1775 NXDLL_EXPORT void File::putSlab(std::vector<int64_t>& data, std::vector<int64_t> & start, std::vector<int64_t> & size);
1777 NXDLL_EXPORT void File::putSlab(std::vector<uint64_t>& data, std::vector<int64_t> & start, std::vector<int64_t> & size);
1780 NXDLL_EXPORT void File::getAttr(
const std::string& name,
double& value);
1782 NXDLL_EXPORT void File::getAttr(
const std::string& name,
int& value);