CYCLUS
Loading...
Searching...
No Matches
hdf5_back.cc
Go to the documentation of this file.
1#include "hdf5_back.h"
2
3#include <cmath>
4#include <string.h>
5#include <iostream>
6
7#include "blob.h"
8
9namespace cyclus {
10
11Hdf5Back::Hdf5Back(std::string path) : path_(path) {
12 H5open();
13 hasher_.Clear();
14 if (boost::filesystem::exists(path_))
15 file_ = H5Fopen(path_.c_str(), H5F_ACC_RDWR, H5P_DEFAULT);
16 else
17 file_ = H5Fcreate(path_.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
18 opened_types_.clear();
19 vldatasets_.clear();
20 vldts_.clear();
21 vlkeys_.clear();
22
23 uuid_type_ = H5Tcopy(H5T_C_S1);
24 H5Tset_size(uuid_type_, CYCLUS_UUID_SIZE);
25 H5Tset_strpad(uuid_type_, H5T_STR_NULLPAD);
26 opened_types_.insert(uuid_type_);
27
28 hsize_t sha1_len = CYCLUS_SHA1_NINT; // 160 bits == 32 bits / int * 5 ints
29 sha1_type_ = H5Tarray_create2(H5T_NATIVE_UINT, 1, &sha1_len);
30 opened_types_.insert(sha1_type_);
31
32 vlstr_type_ = H5Tcopy(H5T_C_S1);
33 H5Tset_size(vlstr_type_, H5T_VARIABLE);
34 opened_types_.insert(vlstr_type_);
35 vldts_[VL_STRING] = vlstr_type_;
36
37 blob_type_ = vlstr_type_;
38 vldts_[BLOB] = blob_type_;
39}
40
42 // make sure we are still open
43 if (closed_)
44 return;
45
46 // cleanup HDF5
47 Flush();
48 H5Fclose(file_);
49 std::set<hid_t>::iterator t;
50 for (t = opened_types_.begin(); t != opened_types_.end(); ++t)
51 H5Tclose(*t);
52 std::map<std::string, hid_t>::iterator vldsit;
53 for (vldsit = vldatasets_.begin(); vldsit != vldatasets_.end(); ++vldsit)
54 H5Dclose(vldsit->second);
55
56 // cleanup memory
57 std::map<std::string, size_t*>::iterator it;
58 std::map<std::string, DbTypes*>::iterator dbtit;
59 for (it = col_offsets_.begin(); it != col_offsets_.end(); ++it) {
60 delete[](it->second);
61 }
62 for (it = col_sizes_.begin(); it != col_sizes_.end(); ++it) {
63 delete[](it->second);
64 }
65 for (dbtit = schemas_.begin(); dbtit != schemas_.end(); ++dbtit) {
66 delete[](dbtit->second);
67 }
68
69 closed_ = true;
70}
71
73 if (!closed_)
74 Close();
75}
76
78 std::map<std::string, DatumList> groups;
79 for (DatumList::iterator it = data.begin(); it != data.end(); ++it) {
80 std::string name = (*it)->title();
81 if (schema_sizes_.count(name) == 0) {
82 if (H5Lexists(file_, name.c_str(), H5P_DEFAULT)) {
83 LoadTableTypes(name, (*it)->vals().size(), *it);
84 } else {
85 // Datum* d = *it;
86 // CreateTable(d);
87 CreateTable(*it);
88 }
89 }
90 groups[name].push_back(*it);
91 }
92
93 std::map<std::string, DatumList>::iterator it;
94 for (it = groups.begin(); it != groups.end(); ++it) {
95 WriteGroup(it->second);
96 }
97}
98
99template <>
100std::string Hdf5Back::VLRead<std::string, VL_STRING>(const char* rawkey) {
101 using std::string;
102 // key is used as offset
103 Digest key;
104 memcpy(key.val, rawkey, CYCLUS_SHA1_SIZE);
105 const std::vector<hsize_t> idx = key.cast<hsize_t>();
106 hid_t dset = VLDataset(VL_STRING, false);
110 (const hsize_t*) &idx[0],
111 NULL, vlchunk_, NULL);
112 if (status < 0)
113 throw IOError("could not select hyperslab of string value array for reading "
114 "in the database '" + path_ + "'.");
115 char** buf = new char*[sizeof(char *)];
116 status = H5Dread(dset, vldts_[VL_STRING], mspace, dspace, H5P_DEFAULT, buf);
117 if (status < 0)
118 throw IOError("failed to read in variable length string data "
119 "in database '" + path_ + "'.");
120 string val;
121 if (buf[0] != NULL)
122 val = string(buf[0]);
123 status = H5Dvlen_reclaim(vldts_[VL_STRING], mspace, H5P_DEFAULT, buf);
124 if (status < 0)
125 throw IOError("failed to reclaim variable length string data space in "
126 "database '" + path_ + "'.");
127 delete[] buf;
130 return val;
131}
132
133template <>
134Blob Hdf5Back::VLRead<Blob, BLOB>(const char* rawkey) {
135 // key is used as offset
136 Digest key;
137 memcpy(key.val, rawkey, CYCLUS_SHA1_SIZE);
138 const std::vector<hsize_t> idx = key.cast<hsize_t>();
139 hid_t dset = VLDataset(BLOB, false);
143 (const hsize_t*) &idx[0],
144 NULL, vlchunk_, NULL);
145 if (status < 0)
146 throw IOError("could not select hyperslab of Blob value array for reading "
147 "in the database '" + path_ + "'.");
148 char** buf = new char*[sizeof(char *)];
149 status = H5Dread(dset, vldts_[BLOB], mspace, dspace, H5P_DEFAULT, buf);
150 if (status < 0)
151 throw IOError("failed to read in Blob data in database '" + path_ + "'.");
152 Blob val = Blob(buf[0]);
153 status = H5Dvlen_reclaim(vldts_[BLOB], mspace, H5P_DEFAULT, buf);
154 if (status < 0)
155 throw IOError("failed to reclaim Blob data space in database "
156 "'" + path_ + "'.");
157 delete[] buf;
160 return val;
161}
162
163QueryResult Hdf5Back::Query(std::string table, std::vector<Cond>* conds) {
164 using std::string;
165 using std::vector;
166 using std::set;
167 using std::list;
168 using std::pair;
169 using std::map;
170 if (!H5Lexists(file_, table.c_str(), H5P_DEFAULT))
171 throw IOError("table '" + table + "' does not exist in '" + path_ + "'.");
172 int i;
173 int j;
174 int jlen;
175 herr_t status = 0;
176 hid_t tb_set = H5Dopen2(file_, table.c_str(), H5P_DEFAULT);
184 unsigned int nchunks =
186
187 // set up field-conditions map
188 std::map<std::string, std::vector<Cond*> > field_conds =
189 std::map<std::string, std::vector<Cond*> >();
190 if (conds != NULL) {
191 Cond* cond;
192 for (i = 0; i < conds->size(); ++i) {
193 cond = &((*conds)[i]);
194 if (field_conds.count(cond->field) == 0)
195 field_conds[cond->field] = std::vector<Cond*>();
196 field_conds[cond->field].push_back(cond);
197 }
198 }
199
200 // read in data
201 QueryResult qr = GetTableInfo(table, tb_set, tb_type);
202 int nfields = qr.fields.size();
203 for (i = 0; i < nfields; ++i) {
204 if (field_conds.count(qr.fields[i]) == 0) {
205 field_conds[qr.fields[i]] = std::vector<Cond*>();
206 }
207 }
208 for (unsigned int n = 0; n < nchunks; ++n) {
209 // This loop is meant to be OpenMP-izable
211 hsize_t start = n * tb_chunksize;
212 hsize_t count =
213 (tb_length-start) < tb_chunksize ? tb_length - start : tb_chunksize;
214 char* buf = new char[tb_typesize * count];
215 hid_t memspace = H5Screate_simple(1, &count, NULL);
217 &count, NULL);
219 int offset = 0;
220 bool is_row_selected;
221 for (i = 0; i < count; ++i) {
222 offset = i * tb_typesize;
223 is_row_selected = true;
225 for (j = 0; j < nfields; ++j) {
226 switch (qr.types[j]) {
227 case BOOL: {
229 unsigned int total_size0=H5Tget_size(fieldtype0);
230 bool x0;
231 x0=*reinterpret_cast<bool*>(buf+offset);
233 if(is_row_selected){
234 row[j]=x0;
235
236 }
238 break;
239
240 }
241 case INT: {
243 unsigned int total_size0=H5Tget_size(fieldtype0);
244 int x0;
245 x0=*reinterpret_cast<int*>(buf+offset);
247 if(is_row_selected){
248 row[j]=x0;
249
250 }
252 break;
253
254 }
255 case FLOAT: {
257 unsigned int total_size0=H5Tget_size(fieldtype0);
258 float x0;
259 x0=*reinterpret_cast<float*>(buf+offset);
261 if(is_row_selected){
262 row[j]=x0;
263
264 }
266 break;
267
268 }
269 case DOUBLE: {
271 unsigned int total_size0=H5Tget_size(fieldtype0);
272 double x0;
273 x0=*reinterpret_cast<double*>(buf+offset);
275 if(is_row_selected){
276 row[j]=x0;
277
278 }
280 break;
281
282 }
283 case STRING: {
284 size_t nullpos0;
286 unsigned int total_size0=H5Tget_size(fieldtype0);
287 std::string x0;
288 x0=std::string(buf+offset, total_size0);
289 nullpos0=x0.find('\0');
290 if(nullpos0!=std::string::npos){
291 x0.resize(nullpos0);
292
293 }
295 if(is_row_selected){
296 row[j]=x0;
297
298 }
300 break;
301
302 }
303 case VL_STRING: {
305 unsigned int total_size0=H5Tget_size(fieldtype0);
306 std::string x0;
309 if(is_row_selected){
310 row[j]=x0;
311
312 }
314 break;
315
316 }
317 case BLOB: {
319 unsigned int total_size0=H5Tget_size(fieldtype0);
323 if(is_row_selected){
324 row[j]=x0;
325
326 }
328 break;
329
330 }
331 case UUID: {
333 unsigned int total_size0=H5Tget_size(fieldtype0);
334 boost::uuids::uuid x0;
335 memcpy(&x0, buf+offset, total_size0);
337 if(is_row_selected){
338 row[j]=x0;
339
340 }
342 break;
343
344 }
345 case VECTOR_INT: {
347 unsigned int total_size0=H5Tget_size(fieldtype0);
352 std::vector<int> x0;
353 x0=std::vector<int>(fieldlen0);
354 memcpy(&x0[0], buf+offset, total_size0);
356 if(is_row_selected){
357 row[j]=x0;
358
359 }
362 break;
363
364 }
365 case VL_VECTOR_INT: {
366 unsigned int total_size0=CYCLUS_SHA1_SIZE;
367 std::vector<int> x0;
370 if(is_row_selected){
371 row[j]=x0;
372
373 }
374 break;
375
376 }
377 case VECTOR_FLOAT: {
379 unsigned int total_size0=H5Tget_size(fieldtype0);
384 std::vector<float> x0;
385 x0=std::vector<float>(fieldlen0);
386 memcpy(&x0[0], buf+offset, total_size0);
388 if(is_row_selected){
389 row[j]=x0;
390
391 }
394 break;
395
396 }
397 case VL_VECTOR_FLOAT: {
398 unsigned int total_size0=CYCLUS_SHA1_SIZE;
399 std::vector<float> x0;
402 if(is_row_selected){
403 row[j]=x0;
404
405 }
406 break;
407
408 }
409 case VECTOR_DOUBLE: {
411 unsigned int total_size0=H5Tget_size(fieldtype0);
416 std::vector<double> x0;
417 x0=std::vector<double>(fieldlen0);
418 memcpy(&x0[0], buf+offset, total_size0);
420 if(is_row_selected){
421 row[j]=x0;
422
423 }
426 break;
427
428 }
429 case VL_VECTOR_DOUBLE: {
430 unsigned int total_size0=CYCLUS_SHA1_SIZE;
431 std::vector<double> x0;
434 if(is_row_selected){
435 row[j]=x0;
436
437 }
438 break;
439
440 }
441 case VECTOR_STRING: {
443 unsigned int total_size0=H5Tget_size(fieldtype0);
447 size_t nullpos1elem;
449 std::vector<std::string> x0;
450 x0=std::vector<std::string>(fieldlen0);
451 for(unsigned int k0=0;k0<fieldlen0;++k0){
452 x0[k0]=std::string(buf+offset+total_size1elem*k0, total_size1elem);
453 nullpos1elem=x0[k0].find('\0');
454 if(nullpos1elem!=std::string::npos){
455 x0[k0].resize(nullpos1elem);
456
457 }
458
459 }
461 if(is_row_selected){
462 row[j]=x0;
463
464 }
467 break;
468
469 }
470 case VL_VECTOR_STRING: {
471 unsigned int total_size0=CYCLUS_SHA1_SIZE;
472 std::vector<std::string> x0;
475 if(is_row_selected){
476 row[j]=x0;
477
478 }
479 break;
480
481 }
482 case VECTOR_VL_STRING: {
484 unsigned int total_size0=H5Tget_size(fieldtype0);
489 std::vector<std::string> x0;
490 x0=std::vector<std::string>(fieldlen0);
491 for(unsigned int k0=0;k0<fieldlen0;++k0){
492 std::string x1elem;
494 x0[k0]=x1elem;
495
496 }
498 if(is_row_selected){
499 row[j]=x0;
500
501 }
504 break;
505
506 }
507 case VL_VECTOR_VL_STRING: {
508 unsigned int total_size0=CYCLUS_SHA1_SIZE;
509 std::vector<std::string> x0;
512 if(is_row_selected){
513 row[j]=x0;
514
515 }
516 break;
517
518 }
519 case VECTOR_BLOB: {
521 unsigned int total_size0=H5Tget_size(fieldtype0);
526 std::vector<cyclus::Blob> x0;
527 x0=std::vector<cyclus::Blob>(fieldlen0);
528 for(unsigned int k0=0;k0<fieldlen0;++k0){
531 x0[k0]=x1elem;
532
533 }
535 if(is_row_selected){
536 row[j]=x0;
537
538 }
541 break;
542
543 }
544 case VL_VECTOR_BLOB: {
545 unsigned int total_size0=CYCLUS_SHA1_SIZE;
546 std::vector<cyclus::Blob> x0;
549 if(is_row_selected){
550 row[j]=x0;
551
552 }
553 break;
554
555 }
556 case VECTOR_UUID: {
558 unsigned int total_size0=H5Tget_size(fieldtype0);
563 std::vector<boost::uuids::uuid> x0;
564 x0=std::vector<boost::uuids::uuid>(fieldlen0);
565 for(unsigned int k0=0;k0<fieldlen0;++k0){
566 boost::uuids::uuid x1elem;
567 memcpy(&x1elem, buf+offset+total_size1elem*k0, total_size1elem);
568 x0[k0]=x1elem;
569
570 }
572 if(is_row_selected){
573 row[j]=x0;
574
575 }
578 break;
579
580 }
581 case VL_VECTOR_UUID: {
582 unsigned int total_size0=CYCLUS_SHA1_SIZE;
583 std::vector<boost::uuids::uuid> x0;
586 if(is_row_selected){
587 row[j]=x0;
588
589 }
590 break;
591
592 }
593 case SET_INT: {
595 unsigned int total_size0=H5Tget_size(fieldtype0);
600 std::set<int> x0;
601 int* xraw1elem=reinterpret_cast<int*>(buf+offset);
602 x0=std::set<int>(xraw1elem, xraw1elem+fieldlen0);
604 if(is_row_selected){
605 row[j]=x0;
606
607 }
610 break;
611
612 }
613 case VL_SET_INT: {
614 unsigned int total_size0=CYCLUS_SHA1_SIZE;
615 std::set<int> x0;
618 if(is_row_selected){
619 row[j]=x0;
620
621 }
622 break;
623
624 }
625 case SET_FLOAT: {
627 unsigned int total_size0=H5Tget_size(fieldtype0);
632 std::set<float> x0;
633 float* xraw1elem=reinterpret_cast<float*>(buf+offset);
634 x0=std::set<float>(xraw1elem, xraw1elem+fieldlen0);
636 if(is_row_selected){
637 row[j]=x0;
638
639 }
642 break;
643
644 }
645 case VL_SET_FLOAT: {
646 unsigned int total_size0=CYCLUS_SHA1_SIZE;
647 std::set<float> x0;
650 if(is_row_selected){
651 row[j]=x0;
652
653 }
654 break;
655
656 }
657 case SET_DOUBLE: {
659 unsigned int total_size0=H5Tget_size(fieldtype0);
664 std::set<double> x0;
665 double* xraw1elem=reinterpret_cast<double*>(buf+offset);
666 x0=std::set<double>(xraw1elem, xraw1elem+fieldlen0);
668 if(is_row_selected){
669 row[j]=x0;
670
671 }
674 break;
675
676 }
677 case VL_SET_DOUBLE: {
678 unsigned int total_size0=CYCLUS_SHA1_SIZE;
679 std::set<double> x0;
682 if(is_row_selected){
683 row[j]=x0;
684
685 }
686 break;
687
688 }
689 case SET_STRING: {
691 unsigned int total_size0=H5Tget_size(fieldtype0);
695 size_t nullpos1elem;
697 std::set<std::string> x0;
698 for(unsigned int k0=0;k0<fieldlen0;++k0){
699 std::string x1elem;
700 x1elem=std::string(buf+offset+total_size1elem*k0, total_size1elem);
701 nullpos1elem=x1elem.find('\0');
702 if(nullpos1elem!=std::string::npos){
703 x1elem.resize(nullpos1elem);
704
705 }
706 x0.insert(x1elem);
707
708 }
710 if(is_row_selected){
711 row[j]=x0;
712
713 }
716 break;
717
718 }
719 case VL_SET_STRING: {
720 unsigned int total_size0=CYCLUS_SHA1_SIZE;
721 std::set<std::string> x0;
724 if(is_row_selected){
725 row[j]=x0;
726
727 }
728 break;
729
730 }
731 case SET_VL_STRING: {
733 unsigned int total_size0=H5Tget_size(fieldtype0);
738 std::set<std::string> x0;
739 for(unsigned int k0=0;k0<fieldlen0;++k0){
740 std::string x1elem;
742 x0.insert(x1elem);
743
744 }
746 if(is_row_selected){
747 row[j]=x0;
748
749 }
752 break;
753
754 }
755 case VL_SET_VL_STRING: {
756 unsigned int total_size0=CYCLUS_SHA1_SIZE;
757 std::set<std::string> x0;
760 if(is_row_selected){
761 row[j]=x0;
762
763 }
764 break;
765
766 }
767 case SET_BLOB: {
769 unsigned int total_size0=H5Tget_size(fieldtype0);
774 std::set<cyclus::Blob> x0;
775 for(unsigned int k0=0;k0<fieldlen0;++k0){
778 x0.insert(x1elem);
779
780 }
782 if(is_row_selected){
783 row[j]=x0;
784
785 }
788 break;
789
790 }
791 case VL_SET_BLOB: {
792 unsigned int total_size0=CYCLUS_SHA1_SIZE;
793 std::set<cyclus::Blob> x0;
796 if(is_row_selected){
797 row[j]=x0;
798
799 }
800 break;
801
802 }
803 case SET_UUID: {
805 unsigned int total_size0=H5Tget_size(fieldtype0);
810 std::set<boost::uuids::uuid> x0;
811 for(unsigned int k0=0;k0<fieldlen0;++k0){
812 boost::uuids::uuid x1elem;
813 memcpy(&x1elem, buf+offset+total_size1elem*k0, total_size1elem);
814 x0.insert(x1elem);
815
816 }
818 if(is_row_selected){
819 row[j]=x0;
820
821 }
824 break;
825
826 }
827 case VL_SET_UUID: {
828 unsigned int total_size0=CYCLUS_SHA1_SIZE;
829 std::set<boost::uuids::uuid> x0;
832 if(is_row_selected){
833 row[j]=x0;
834
835 }
836 break;
837
838 }
839 case LIST_BOOL: {
841 unsigned int total_size0=H5Tget_size(fieldtype0);
846 std::list<bool> x0;
847 for(unsigned int k0=0;k0<fieldlen0;++k0){
848 bool x1elem;
849 x1elem=*reinterpret_cast<bool*>(buf+offset+total_size1elem*k0);
850 x0.push_back(x1elem);
851
852 }
854 if(is_row_selected){
855 row[j]=x0;
856
857 }
860 break;
861
862 }
863 case VL_LIST_BOOL: {
864 unsigned int total_size0=CYCLUS_SHA1_SIZE;
865 std::list<bool> x0;
868 if(is_row_selected){
869 row[j]=x0;
870
871 }
872 break;
873
874 }
875 case LIST_INT: {
877 unsigned int total_size0=H5Tget_size(fieldtype0);
882 std::list<int> x0;
883 int* xraw1elem=reinterpret_cast<int*>(buf+offset);
884 x0=std::list<int>(xraw1elem, xraw1elem+fieldlen0);
886 if(is_row_selected){
887 row[j]=x0;
888
889 }
892 break;
893
894 }
895 case VL_LIST_INT: {
896 unsigned int total_size0=CYCLUS_SHA1_SIZE;
897 std::list<int> x0;
900 if(is_row_selected){
901 row[j]=x0;
902
903 }
904 break;
905
906 }
907 case LIST_FLOAT: {
909 unsigned int total_size0=H5Tget_size(fieldtype0);
914 std::list<float> x0;
915 float* xraw1elem=reinterpret_cast<float*>(buf+offset);
916 x0=std::list<float>(xraw1elem, xraw1elem+fieldlen0);
918 if(is_row_selected){
919 row[j]=x0;
920
921 }
924 break;
925
926 }
927 case VL_LIST_FLOAT: {
928 unsigned int total_size0=CYCLUS_SHA1_SIZE;
929 std::list<float> x0;
932 if(is_row_selected){
933 row[j]=x0;
934
935 }
936 break;
937
938 }
939 case LIST_DOUBLE: {
941 unsigned int total_size0=H5Tget_size(fieldtype0);
946 std::list<double> x0;
947 double* xraw1elem=reinterpret_cast<double*>(buf+offset);
948 x0=std::list<double>(xraw1elem, xraw1elem+fieldlen0);
950 if(is_row_selected){
951 row[j]=x0;
952
953 }
956 break;
957
958 }
959 case VL_LIST_DOUBLE: {
960 unsigned int total_size0=CYCLUS_SHA1_SIZE;
961 std::list<double> x0;
964 if(is_row_selected){
965 row[j]=x0;
966
967 }
968 break;
969
970 }
971 case LIST_STRING: {
973 unsigned int total_size0=H5Tget_size(fieldtype0);
977 size_t nullpos1elem;
979 std::list<std::string> x0;
980 for(unsigned int k0=0;k0<fieldlen0;++k0){
981 std::string x1elem;
982 x1elem=std::string(buf+offset+total_size1elem*k0, total_size1elem);
983 nullpos1elem=x1elem.find('\0');
984 if(nullpos1elem!=std::string::npos){
985 x1elem.resize(nullpos1elem);
986
987 }
988 x0.push_back(x1elem);
989
990 }
992 if(is_row_selected){
993 row[j]=x0;
994
995 }
998 break;
999
1000 }
1001 case VL_LIST_STRING: {
1002 unsigned int total_size0=CYCLUS_SHA1_SIZE;
1003 std::list<std::string> x0;
1006 if(is_row_selected){
1007 row[j]=x0;
1008
1009 }
1010 break;
1011
1012 }
1013 case LIST_VL_STRING: {
1015 unsigned int total_size0=H5Tget_size(fieldtype0);
1020 std::list<std::string> x0;
1021 for(unsigned int k0=0;k0<fieldlen0;++k0){
1022 std::string x1elem;
1024 x0.push_back(x1elem);
1025
1026 }
1028 if(is_row_selected){
1029 row[j]=x0;
1030
1031 }
1034 break;
1035
1036 }
1037 case VL_LIST_VL_STRING: {
1038 unsigned int total_size0=CYCLUS_SHA1_SIZE;
1039 std::list<std::string> x0;
1042 if(is_row_selected){
1043 row[j]=x0;
1044
1045 }
1046 break;
1047
1048 }
1049 case LIST_BLOB: {
1051 unsigned int total_size0=H5Tget_size(fieldtype0);
1056 std::list<cyclus::Blob> x0;
1057 for(unsigned int k0=0;k0<fieldlen0;++k0){
1060 x0.push_back(x1elem);
1061
1062 }
1064 if(is_row_selected){
1065 row[j]=x0;
1066
1067 }
1070 break;
1071
1072 }
1073 case VL_LIST_BLOB: {
1074 unsigned int total_size0=CYCLUS_SHA1_SIZE;
1075 std::list<cyclus::Blob> x0;
1078 if(is_row_selected){
1079 row[j]=x0;
1080
1081 }
1082 break;
1083
1084 }
1085 case LIST_UUID: {
1087 unsigned int total_size0=H5Tget_size(fieldtype0);
1092 std::list<boost::uuids::uuid> x0;
1093 for(unsigned int k0=0;k0<fieldlen0;++k0){
1094 boost::uuids::uuid x1elem;
1095 memcpy(&x1elem, buf+offset+total_size1elem*k0, total_size1elem);
1096 x0.push_back(x1elem);
1097
1098 }
1100 if(is_row_selected){
1101 row[j]=x0;
1102
1103 }
1106 break;
1107
1108 }
1109 case VL_LIST_UUID: {
1110 unsigned int total_size0=CYCLUS_SHA1_SIZE;
1111 std::list<boost::uuids::uuid> x0;
1114 if(is_row_selected){
1115 row[j]=x0;
1116
1117 }
1118 break;
1119
1120 }
1121 case PAIR_INT_BOOL: {
1123 unsigned int total_size0=H5Tget_size(fieldtype0);
1128 std::pair<int, bool> x0;
1129 int x1first;
1130 x1first=*reinterpret_cast<int*>(buf+offset);
1131 bool x1second;
1132 x1second=*reinterpret_cast<bool*>(buf+offset+total_size1first);
1133 x0=std::make_pair(x1first, x1second);
1135 if(is_row_selected){
1136 row[j]=x0;
1137
1138 }
1142 break;
1143
1144 }
1145 case PAIR_INT_INT: {
1147 unsigned int total_size0=H5Tget_size(fieldtype0);
1152 std::pair<int, int> x0;
1153 int x1first;
1154 x1first=*reinterpret_cast<int*>(buf+offset);
1155 int x1second;
1156 x1second=*reinterpret_cast<int*>(buf+offset+total_size1first);
1157 x0=std::make_pair(x1first, x1second);
1159 if(is_row_selected){
1160 row[j]=x0;
1161
1162 }
1166 break;
1167
1168 }
1169 case PAIR_INT_FLOAT: {
1171 unsigned int total_size0=H5Tget_size(fieldtype0);
1176 std::pair<int, float> x0;
1177 int x1first;
1178 x1first=*reinterpret_cast<int*>(buf+offset);
1179 float x1second;
1180 x1second=*reinterpret_cast<float*>(buf+offset+total_size1first);
1181 x0=std::make_pair(x1first, x1second);
1183 if(is_row_selected){
1184 row[j]=x0;
1185
1186 }
1190 break;
1191
1192 }
1193 case PAIR_INT_DOUBLE: {
1195 unsigned int total_size0=H5Tget_size(fieldtype0);
1200 std::pair<int, double> x0;
1201 int x1first;
1202 x1first=*reinterpret_cast<int*>(buf+offset);
1203 double x1second;
1204 x1second=*reinterpret_cast<double*>(buf+offset+total_size1first);
1205 x0=std::make_pair(x1first, x1second);
1207 if(is_row_selected){
1208 row[j]=x0;
1209
1210 }
1214 break;
1215
1216 }
1217 case PAIR_INT_STRING: {
1219 unsigned int total_size0=H5Tget_size(fieldtype0);
1222 size_t nullpos1second;
1225 std::pair<int, std::string> x0;
1226 int x1first;
1227 x1first=*reinterpret_cast<int*>(buf+offset);
1228 std::string x1second;
1229 x1second=std::string(buf+offset+total_size1first, total_size1second);
1230 nullpos1second=x1second.find('\0');
1231 if(nullpos1second!=std::string::npos){
1232 x1second.resize(nullpos1second);
1233
1234 }
1235 x0=std::make_pair(x1first, x1second);
1237 if(is_row_selected){
1238 row[j]=x0;
1239
1240 }
1244 break;
1245
1246 }
1247 case PAIR_INT_VL_STRING: {
1249 unsigned int total_size0=H5Tget_size(fieldtype0);
1254 std::pair<int, std::string> x0;
1255 int x1first;
1256 x1first=*reinterpret_cast<int*>(buf+offset);
1257 std::string x1second;
1259 x0=std::make_pair(x1first, x1second);
1261 if(is_row_selected){
1262 row[j]=x0;
1263
1264 }
1268 break;
1269
1270 }
1271 case PAIR_INT_BLOB: {
1273 unsigned int total_size0=H5Tget_size(fieldtype0);
1278 std::pair<int, cyclus::Blob> x0;
1279 int x1first;
1280 x1first=*reinterpret_cast<int*>(buf+offset);
1283 x0=std::make_pair(x1first, x1second);
1285 if(is_row_selected){
1286 row[j]=x0;
1287
1288 }
1292 break;
1293
1294 }
1295 case PAIR_INT_UUID: {
1297 unsigned int total_size0=H5Tget_size(fieldtype0);
1302 std::pair<int, boost::uuids::uuid> x0;
1303 int x1first;
1304 x1first=*reinterpret_cast<int*>(buf+offset);
1305 boost::uuids::uuid x1second;
1307 x0=std::make_pair(x1first, x1second);
1309 if(is_row_selected){
1310 row[j]=x0;
1311
1312 }
1316 break;
1317
1318 }
1319 case PAIR_STRING_BOOL: {
1321 unsigned int total_size0=H5Tget_size(fieldtype0);
1322 size_t nullpos1first;
1327 std::pair<std::string, bool> x0;
1328 std::string x1first;
1329 x1first=std::string(buf+offset, total_size1first);
1330 nullpos1first=x1first.find('\0');
1331 if(nullpos1first!=std::string::npos){
1332 x1first.resize(nullpos1first);
1333
1334 }
1335 bool x1second;
1336 x1second=*reinterpret_cast<bool*>(buf+offset+total_size1first);
1337 x0=std::make_pair(x1first, x1second);
1339 if(is_row_selected){
1340 row[j]=x0;
1341
1342 }
1346 break;
1347
1348 }
1349 case PAIR_STRING_INT: {
1351 unsigned int total_size0=H5Tget_size(fieldtype0);
1352 size_t nullpos1first;
1357 std::pair<std::string, int> x0;
1358 std::string x1first;
1359 x1first=std::string(buf+offset, total_size1first);
1360 nullpos1first=x1first.find('\0');
1361 if(nullpos1first!=std::string::npos){
1362 x1first.resize(nullpos1first);
1363
1364 }
1365 int x1second;
1366 x1second=*reinterpret_cast<int*>(buf+offset+total_size1first);
1367 x0=std::make_pair(x1first, x1second);
1369 if(is_row_selected){
1370 row[j]=x0;
1371
1372 }
1376 break;
1377
1378 }
1379 case PAIR_STRING_FLOAT: {
1381 unsigned int total_size0=H5Tget_size(fieldtype0);
1382 size_t nullpos1first;
1387 std::pair<std::string, float> x0;
1388 std::string x1first;
1389 x1first=std::string(buf+offset, total_size1first);
1390 nullpos1first=x1first.find('\0');
1391 if(nullpos1first!=std::string::npos){
1392 x1first.resize(nullpos1first);
1393
1394 }
1395 float x1second;
1396 x1second=*reinterpret_cast<float*>(buf+offset+total_size1first);
1397 x0=std::make_pair(x1first, x1second);
1399 if(is_row_selected){
1400 row[j]=x0;
1401
1402 }
1406 break;
1407
1408 }
1409 case PAIR_STRING_DOUBLE: {
1411 unsigned int total_size0=H5Tget_size(fieldtype0);
1412 size_t nullpos1first;
1417 std::pair<std::string, double> x0;
1418 std::string x1first;
1419 x1first=std::string(buf+offset, total_size1first);
1420 nullpos1first=x1first.find('\0');
1421 if(nullpos1first!=std::string::npos){
1422 x1first.resize(nullpos1first);
1423
1424 }
1425 double x1second;
1426 x1second=*reinterpret_cast<double*>(buf+offset+total_size1first);
1427 x0=std::make_pair(x1first, x1second);
1429 if(is_row_selected){
1430 row[j]=x0;
1431
1432 }
1436 break;
1437
1438 }
1439 case PAIR_STRING_STRING: {
1441 unsigned int total_size0=H5Tget_size(fieldtype0);
1442 size_t nullpos1first;
1445 size_t nullpos1second;
1448 std::pair<std::string, std::string> x0;
1449 std::string x1first;
1450 x1first=std::string(buf+offset, total_size1first);
1451 nullpos1first=x1first.find('\0');
1452 if(nullpos1first!=std::string::npos){
1453 x1first.resize(nullpos1first);
1454
1455 }
1456 std::string x1second;
1457 x1second=std::string(buf+offset+total_size1first, total_size1second);
1458 nullpos1second=x1second.find('\0');
1459 if(nullpos1second!=std::string::npos){
1460 x1second.resize(nullpos1second);
1461
1462 }
1463 x0=std::make_pair(x1first, x1second);
1465 if(is_row_selected){
1466 row[j]=x0;
1467
1468 }
1472 break;
1473
1474 }
1475 case PAIR_STRING_VL_STRING: {
1477 unsigned int total_size0=H5Tget_size(fieldtype0);
1478 size_t nullpos1first;
1483 std::pair<std::string, std::string> x0;
1484 std::string x1first;
1485 x1first=std::string(buf+offset, total_size1first);
1486 nullpos1first=x1first.find('\0');
1487 if(nullpos1first!=std::string::npos){
1488 x1first.resize(nullpos1first);
1489
1490 }
1491 std::string x1second;
1493 x0=std::make_pair(x1first, x1second);
1495 if(is_row_selected){
1496 row[j]=x0;
1497
1498 }
1502 break;
1503
1504 }
1505 case PAIR_STRING_BLOB: {
1507 unsigned int total_size0=H5Tget_size(fieldtype0);
1508 size_t nullpos1first;
1513 std::pair<std::string, cyclus::Blob> x0;
1514 std::string x1first;
1515 x1first=std::string(buf+offset, total_size1first);
1516 nullpos1first=x1first.find('\0');
1517 if(nullpos1first!=std::string::npos){
1518 x1first.resize(nullpos1first);
1519
1520 }
1523 x0=std::make_pair(x1first, x1second);
1525 if(is_row_selected){
1526 row[j]=x0;
1527
1528 }
1532 break;
1533
1534 }
1535 case PAIR_STRING_UUID: {
1537 unsigned int total_size0=H5Tget_size(fieldtype0);
1538 size_t nullpos1first;
1543 std::pair<std::string, boost::uuids::uuid> x0;
1544 std::string x1first;
1545 x1first=std::string(buf+offset, total_size1first);
1546 nullpos1first=x1first.find('\0');
1547 if(nullpos1first!=std::string::npos){
1548 x1first.resize(nullpos1first);
1549
1550 }
1551 boost::uuids::uuid x1second;
1553 x0=std::make_pair(x1first, x1second);
1555 if(is_row_selected){
1556 row[j]=x0;
1557
1558 }
1562 break;
1563
1564 }
1565 case PAIR_VL_STRING_BOOL: {
1567 unsigned int total_size0=H5Tget_size(fieldtype0);
1572 std::pair<std::string, bool> x0;
1573 std::string x1first;
1575 bool x1second;
1576 x1second=*reinterpret_cast<bool*>(buf+offset+total_size1first);
1577 x0=std::make_pair(x1first, x1second);
1579 if(is_row_selected){
1580 row[j]=x0;
1581
1582 }
1586 break;
1587
1588 }
1589 case PAIR_VL_STRING_INT: {
1591 unsigned int total_size0=H5Tget_size(fieldtype0);
1596 std::pair<std::string, int> x0;
1597 std::string x1first;
1599 int x1second;
1600 x1second=*reinterpret_cast<int*>(buf+offset+total_size1first);
1601 x0=std::make_pair(x1first, x1second);
1603 if(is_row_selected){
1604 row[j]=x0;
1605
1606 }
1610 break;
1611
1612 }
1613 case PAIR_VL_STRING_FLOAT: {
1615 unsigned int total_size0=H5Tget_size(fieldtype0);
1620 std::pair<std::string, float> x0;
1621 std::string x1first;
1623 float x1second;
1624 x1second=*reinterpret_cast<float*>(buf+offset+total_size1first);
1625 x0=std::make_pair(x1first, x1second);
1627 if(is_row_selected){
1628 row[j]=x0;
1629
1630 }
1634 break;
1635
1636 }
1637 case PAIR_VL_STRING_DOUBLE: {
1639 unsigned int total_size0=H5Tget_size(fieldtype0);
1644 std::pair<std::string, double> x0;
1645 std::string x1first;
1647 double x1second;
1648 x1second=*reinterpret_cast<double*>(buf+offset+total_size1first);
1649 x0=std::make_pair(x1first, x1second);
1651 if(is_row_selected){
1652 row[j]=x0;
1653
1654 }
1658 break;
1659
1660 }
1661 case PAIR_VL_STRING_STRING: {
1663 unsigned int total_size0=H5Tget_size(fieldtype0);
1666 size_t nullpos1second;
1669 std::pair<std::string, std::string> x0;
1670 std::string x1first;
1672 std::string x1second;
1673 x1second=std::string(buf+offset+total_size1first, total_size1second);
1674 nullpos1second=x1second.find('\0');
1675 if(nullpos1second!=std::string::npos){
1676 x1second.resize(nullpos1second);
1677
1678 }
1679 x0=std::make_pair(x1first, x1second);
1681 if(is_row_selected){
1682 row[j]=x0;
1683
1684 }
1688 break;
1689
1690 }
1693 unsigned int total_size0=H5Tget_size(fieldtype0);
1698 std::pair<std::string, std::string> x0;
1699 std::string x1first;
1701 std::string x1second;
1703 x0=std::make_pair(x1first, x1second);
1705 if(is_row_selected){
1706 row[j]=x0;
1707
1708 }
1712 break;
1713
1714 }
1715 case PAIR_VL_STRING_BLOB: {
1717 unsigned int total_size0=H5Tget_size(fieldtype0);
1722 std::pair<std::string, cyclus::Blob> x0;
1723 std::string x1first;
1727 x0=std::make_pair(x1first, x1second);
1729 if(is_row_selected){
1730 row[j]=x0;
1731
1732 }
1736 break;
1737
1738 }
1739 case PAIR_VL_STRING_UUID: {
1741 unsigned int total_size0=H5Tget_size(fieldtype0);
1746 std::pair<std::string, boost::uuids::uuid> x0;
1747 std::string x1first;
1749 boost::uuids::uuid x1second;
1751 x0=std::make_pair(x1first, x1second);
1753 if(is_row_selected){
1754 row[j]=x0;
1755
1756 }
1760 break;
1761
1762 }
1763 case MAP_INT_BOOL: {
1765 unsigned int total_size0=H5Tget_size(fieldtype0);
1773 std::map<int, bool> x0;
1774 for(unsigned int k0=0;k0<fieldlen0;++k0){
1775 int x1key;
1776 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
1777 bool x1val;
1778 x1val=*reinterpret_cast<bool*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
1779 x0[x1key]=x1val;
1780
1781 }
1783 if(is_row_selected){
1784 row[j]=x0;
1785
1786 }
1791 break;
1792
1793 }
1794 case VL_MAP_INT_BOOL: {
1795 unsigned int total_size0=CYCLUS_SHA1_SIZE;
1796 std::map<int, bool> x0;
1799 if(is_row_selected){
1800 row[j]=x0;
1801
1802 }
1803 break;
1804
1805 }
1806 case MAP_INT_INT: {
1808 unsigned int total_size0=H5Tget_size(fieldtype0);
1816 std::map<int, int> x0;
1817 for(unsigned int k0=0;k0<fieldlen0;++k0){
1818 int x1key;
1819 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
1820 int x1val;
1821 x1val=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
1822 x0[x1key]=x1val;
1823
1824 }
1826 if(is_row_selected){
1827 row[j]=x0;
1828
1829 }
1834 break;
1835
1836 }
1837 case VL_MAP_INT_INT: {
1838 unsigned int total_size0=CYCLUS_SHA1_SIZE;
1839 std::map<int, int> x0;
1842 if(is_row_selected){
1843 row[j]=x0;
1844
1845 }
1846 break;
1847
1848 }
1849 case MAP_INT_FLOAT: {
1851 unsigned int total_size0=H5Tget_size(fieldtype0);
1859 std::map<int, float> x0;
1860 for(unsigned int k0=0;k0<fieldlen0;++k0){
1861 int x1key;
1862 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
1863 float x1val;
1864 x1val=*reinterpret_cast<float*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
1865 x0[x1key]=x1val;
1866
1867 }
1869 if(is_row_selected){
1870 row[j]=x0;
1871
1872 }
1877 break;
1878
1879 }
1880 case VL_MAP_INT_FLOAT: {
1881 unsigned int total_size0=CYCLUS_SHA1_SIZE;
1882 std::map<int, float> x0;
1885 if(is_row_selected){
1886 row[j]=x0;
1887
1888 }
1889 break;
1890
1891 }
1892 case MAP_INT_DOUBLE: {
1894 unsigned int total_size0=H5Tget_size(fieldtype0);
1902 std::map<int, double> x0;
1903 for(unsigned int k0=0;k0<fieldlen0;++k0){
1904 int x1key;
1905 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
1906 double x1val;
1907 x1val=*reinterpret_cast<double*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
1908 x0[x1key]=x1val;
1909
1910 }
1912 if(is_row_selected){
1913 row[j]=x0;
1914
1915 }
1920 break;
1921
1922 }
1923 case VL_MAP_INT_DOUBLE: {
1924 unsigned int total_size0=CYCLUS_SHA1_SIZE;
1925 std::map<int, double> x0;
1928 if(is_row_selected){
1929 row[j]=x0;
1930
1931 }
1932 break;
1933
1934 }
1935 case MAP_INT_STRING: {
1937 unsigned int total_size0=H5Tget_size(fieldtype0);
1943 size_t nullpos1val;
1946 std::map<int, std::string> x0;
1947 for(unsigned int k0=0;k0<fieldlen0;++k0){
1948 int x1key;
1949 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
1950 std::string x1val;
1952 nullpos1val=x1val.find('\0');
1953 if(nullpos1val!=std::string::npos){
1954 x1val.resize(nullpos1val);
1955
1956 }
1957 x0[x1key]=x1val;
1958
1959 }
1961 if(is_row_selected){
1962 row[j]=x0;
1963
1964 }
1969 break;
1970
1971 }
1972 case VL_MAP_INT_STRING: {
1973 unsigned int total_size0=CYCLUS_SHA1_SIZE;
1974 std::map<int, std::string> x0;
1977 if(is_row_selected){
1978 row[j]=x0;
1979
1980 }
1981 break;
1982
1983 }
1984 case MAP_INT_VL_STRING: {
1986 unsigned int total_size0=H5Tget_size(fieldtype0);
1994 std::map<int, std::string> x0;
1995 for(unsigned int k0=0;k0<fieldlen0;++k0){
1996 int x1key;
1997 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
1998 std::string x1val;
2000 x0[x1key]=x1val;
2001
2002 }
2004 if(is_row_selected){
2005 row[j]=x0;
2006
2007 }
2012 break;
2013
2014 }
2015 case VL_MAP_INT_VL_STRING: {
2016 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2017 std::map<int, std::string> x0;
2020 if(is_row_selected){
2021 row[j]=x0;
2022
2023 }
2024 break;
2025
2026 }
2027 case MAP_INT_BLOB: {
2029 unsigned int total_size0=H5Tget_size(fieldtype0);
2037 std::map<int, cyclus::Blob> x0;
2038 for(unsigned int k0=0;k0<fieldlen0;++k0){
2039 int x1key;
2040 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
2043 x0[x1key]=x1val;
2044
2045 }
2047 if(is_row_selected){
2048 row[j]=x0;
2049
2050 }
2055 break;
2056
2057 }
2058 case VL_MAP_INT_BLOB: {
2059 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2060 std::map<int, cyclus::Blob> x0;
2063 if(is_row_selected){
2064 row[j]=x0;
2065
2066 }
2067 break;
2068
2069 }
2070 case MAP_INT_UUID: {
2072 unsigned int total_size0=H5Tget_size(fieldtype0);
2080 std::map<int, boost::uuids::uuid> x0;
2081 for(unsigned int k0=0;k0<fieldlen0;++k0){
2082 int x1key;
2083 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
2084 boost::uuids::uuid x1val;
2086 x0[x1key]=x1val;
2087
2088 }
2090 if(is_row_selected){
2091 row[j]=x0;
2092
2093 }
2098 break;
2099
2100 }
2101 case VL_MAP_INT_UUID: {
2102 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2103 std::map<int, boost::uuids::uuid> x0;
2106 if(is_row_selected){
2107 row[j]=x0;
2108
2109 }
2110 break;
2111
2112 }
2113 case MAP_STRING_BOOL: {
2115 unsigned int total_size0=H5Tget_size(fieldtype0);
2119 size_t nullpos1key;
2124 std::map<std::string, bool> x0;
2125 for(unsigned int k0=0;k0<fieldlen0;++k0){
2126 std::string x1key;
2127 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
2128 nullpos1key=x1key.find('\0');
2129 if(nullpos1key!=std::string::npos){
2130 x1key.resize(nullpos1key);
2131
2132 }
2133 bool x1val;
2134 x1val=*reinterpret_cast<bool*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
2135 x0[x1key]=x1val;
2136
2137 }
2139 if(is_row_selected){
2140 row[j]=x0;
2141
2142 }
2147 break;
2148
2149 }
2150 case VL_MAP_STRING_BOOL: {
2151 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2152 std::map<std::string, bool> x0;
2155 if(is_row_selected){
2156 row[j]=x0;
2157
2158 }
2159 break;
2160
2161 }
2162 case MAP_STRING_INT: {
2164 unsigned int total_size0=H5Tget_size(fieldtype0);
2168 size_t nullpos1key;
2173 std::map<std::string, int> x0;
2174 for(unsigned int k0=0;k0<fieldlen0;++k0){
2175 std::string x1key;
2176 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
2177 nullpos1key=x1key.find('\0');
2178 if(nullpos1key!=std::string::npos){
2179 x1key.resize(nullpos1key);
2180
2181 }
2182 int x1val;
2183 x1val=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
2184 x0[x1key]=x1val;
2185
2186 }
2188 if(is_row_selected){
2189 row[j]=x0;
2190
2191 }
2196 break;
2197
2198 }
2199 case VL_MAP_STRING_INT: {
2200 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2201 std::map<std::string, int> x0;
2204 if(is_row_selected){
2205 row[j]=x0;
2206
2207 }
2208 break;
2209
2210 }
2211 case MAP_STRING_FLOAT: {
2213 unsigned int total_size0=H5Tget_size(fieldtype0);
2217 size_t nullpos1key;
2222 std::map<std::string, float> x0;
2223 for(unsigned int k0=0;k0<fieldlen0;++k0){
2224 std::string x1key;
2225 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
2226 nullpos1key=x1key.find('\0');
2227 if(nullpos1key!=std::string::npos){
2228 x1key.resize(nullpos1key);
2229
2230 }
2231 float x1val;
2232 x1val=*reinterpret_cast<float*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
2233 x0[x1key]=x1val;
2234
2235 }
2237 if(is_row_selected){
2238 row[j]=x0;
2239
2240 }
2245 break;
2246
2247 }
2248 case VL_MAP_STRING_FLOAT: {
2249 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2250 std::map<std::string, float> x0;
2253 if(is_row_selected){
2254 row[j]=x0;
2255
2256 }
2257 break;
2258
2259 }
2260 case MAP_STRING_DOUBLE: {
2262 unsigned int total_size0=H5Tget_size(fieldtype0);
2266 size_t nullpos1key;
2271 std::map<std::string, double> x0;
2272 for(unsigned int k0=0;k0<fieldlen0;++k0){
2273 std::string x1key;
2274 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
2275 nullpos1key=x1key.find('\0');
2276 if(nullpos1key!=std::string::npos){
2277 x1key.resize(nullpos1key);
2278
2279 }
2280 double x1val;
2281 x1val=*reinterpret_cast<double*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
2282 x0[x1key]=x1val;
2283
2284 }
2286 if(is_row_selected){
2287 row[j]=x0;
2288
2289 }
2294 break;
2295
2296 }
2297 case VL_MAP_STRING_DOUBLE: {
2298 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2299 std::map<std::string, double> x0;
2302 if(is_row_selected){
2303 row[j]=x0;
2304
2305 }
2306 break;
2307
2308 }
2309 case MAP_STRING_STRING: {
2311 unsigned int total_size0=H5Tget_size(fieldtype0);
2315 size_t nullpos1key;
2318 size_t nullpos1val;
2321 std::map<std::string, std::string> x0;
2322 for(unsigned int k0=0;k0<fieldlen0;++k0){
2323 std::string x1key;
2324 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
2325 nullpos1key=x1key.find('\0');
2326 if(nullpos1key!=std::string::npos){
2327 x1key.resize(nullpos1key);
2328
2329 }
2330 std::string x1val;
2332 nullpos1val=x1val.find('\0');
2333 if(nullpos1val!=std::string::npos){
2334 x1val.resize(nullpos1val);
2335
2336 }
2337 x0[x1key]=x1val;
2338
2339 }
2341 if(is_row_selected){
2342 row[j]=x0;
2343
2344 }
2349 break;
2350
2351 }
2352 case VL_MAP_STRING_STRING: {
2353 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2354 std::map<std::string, std::string> x0;
2357 if(is_row_selected){
2358 row[j]=x0;
2359
2360 }
2361 break;
2362
2363 }
2364 case MAP_STRING_VL_STRING: {
2366 unsigned int total_size0=H5Tget_size(fieldtype0);
2370 size_t nullpos1key;
2375 std::map<std::string, std::string> x0;
2376 for(unsigned int k0=0;k0<fieldlen0;++k0){
2377 std::string x1key;
2378 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
2379 nullpos1key=x1key.find('\0');
2380 if(nullpos1key!=std::string::npos){
2381 x1key.resize(nullpos1key);
2382
2383 }
2384 std::string x1val;
2386 x0[x1key]=x1val;
2387
2388 }
2390 if(is_row_selected){
2391 row[j]=x0;
2392
2393 }
2398 break;
2399
2400 }
2402 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2403 std::map<std::string, std::string> x0;
2406 if(is_row_selected){
2407 row[j]=x0;
2408
2409 }
2410 break;
2411
2412 }
2413 case MAP_STRING_BLOB: {
2415 unsigned int total_size0=H5Tget_size(fieldtype0);
2419 size_t nullpos1key;
2424 std::map<std::string, cyclus::Blob> x0;
2425 for(unsigned int k0=0;k0<fieldlen0;++k0){
2426 std::string x1key;
2427 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
2428 nullpos1key=x1key.find('\0');
2429 if(nullpos1key!=std::string::npos){
2430 x1key.resize(nullpos1key);
2431
2432 }
2435 x0[x1key]=x1val;
2436
2437 }
2439 if(is_row_selected){
2440 row[j]=x0;
2441
2442 }
2447 break;
2448
2449 }
2450 case VL_MAP_STRING_BLOB: {
2451 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2452 std::map<std::string, cyclus::Blob> x0;
2455 if(is_row_selected){
2456 row[j]=x0;
2457
2458 }
2459 break;
2460
2461 }
2462 case MAP_STRING_UUID: {
2464 unsigned int total_size0=H5Tget_size(fieldtype0);
2468 size_t nullpos1key;
2473 std::map<std::string, boost::uuids::uuid> x0;
2474 for(unsigned int k0=0;k0<fieldlen0;++k0){
2475 std::string x1key;
2476 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
2477 nullpos1key=x1key.find('\0');
2478 if(nullpos1key!=std::string::npos){
2479 x1key.resize(nullpos1key);
2480
2481 }
2482 boost::uuids::uuid x1val;
2484 x0[x1key]=x1val;
2485
2486 }
2488 if(is_row_selected){
2489 row[j]=x0;
2490
2491 }
2496 break;
2497
2498 }
2499 case VL_MAP_STRING_UUID: {
2500 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2501 std::map<std::string, boost::uuids::uuid> x0;
2504 if(is_row_selected){
2505 row[j]=x0;
2506
2507 }
2508 break;
2509
2510 }
2511 case MAP_VL_STRING_BOOL: {
2513 unsigned int total_size0=H5Tget_size(fieldtype0);
2521 std::map<std::string, bool> x0;
2522 for(unsigned int k0=0;k0<fieldlen0;++k0){
2523 std::string x1key;
2525 bool x1val;
2526 x1val=*reinterpret_cast<bool*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
2527 x0[x1key]=x1val;
2528
2529 }
2531 if(is_row_selected){
2532 row[j]=x0;
2533
2534 }
2539 break;
2540
2541 }
2542 case VL_MAP_VL_STRING_BOOL: {
2543 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2544 std::map<std::string, bool> x0;
2547 if(is_row_selected){
2548 row[j]=x0;
2549
2550 }
2551 break;
2552
2553 }
2554 case MAP_VL_STRING_INT: {
2556 unsigned int total_size0=H5Tget_size(fieldtype0);
2564 std::map<std::string, int> x0;
2565 for(unsigned int k0=0;k0<fieldlen0;++k0){
2566 std::string x1key;
2568 int x1val;
2569 x1val=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
2570 x0[x1key]=x1val;
2571
2572 }
2574 if(is_row_selected){
2575 row[j]=x0;
2576
2577 }
2582 break;
2583
2584 }
2585 case VL_MAP_VL_STRING_INT: {
2586 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2587 std::map<std::string, int> x0;
2590 if(is_row_selected){
2591 row[j]=x0;
2592
2593 }
2594 break;
2595
2596 }
2597 case MAP_VL_STRING_FLOAT: {
2599 unsigned int total_size0=H5Tget_size(fieldtype0);
2607 std::map<std::string, float> x0;
2608 for(unsigned int k0=0;k0<fieldlen0;++k0){
2609 std::string x1key;
2611 float x1val;
2612 x1val=*reinterpret_cast<float*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
2613 x0[x1key]=x1val;
2614
2615 }
2617 if(is_row_selected){
2618 row[j]=x0;
2619
2620 }
2625 break;
2626
2627 }
2629 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2630 std::map<std::string, float> x0;
2633 if(is_row_selected){
2634 row[j]=x0;
2635
2636 }
2637 break;
2638
2639 }
2640 case MAP_VL_STRING_DOUBLE: {
2642 unsigned int total_size0=H5Tget_size(fieldtype0);
2650 std::map<std::string, double> x0;
2651 for(unsigned int k0=0;k0<fieldlen0;++k0){
2652 std::string x1key;
2654 double x1val;
2655 x1val=*reinterpret_cast<double*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
2656 x0[x1key]=x1val;
2657
2658 }
2660 if(is_row_selected){
2661 row[j]=x0;
2662
2663 }
2668 break;
2669
2670 }
2672 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2673 std::map<std::string, double> x0;
2676 if(is_row_selected){
2677 row[j]=x0;
2678
2679 }
2680 break;
2681
2682 }
2683 case MAP_VL_STRING_STRING: {
2685 unsigned int total_size0=H5Tget_size(fieldtype0);
2691 size_t nullpos1val;
2694 std::map<std::string, std::string> x0;
2695 for(unsigned int k0=0;k0<fieldlen0;++k0){
2696 std::string x1key;
2698 std::string x1val;
2700 nullpos1val=x1val.find('\0');
2701 if(nullpos1val!=std::string::npos){
2702 x1val.resize(nullpos1val);
2703
2704 }
2705 x0[x1key]=x1val;
2706
2707 }
2709 if(is_row_selected){
2710 row[j]=x0;
2711
2712 }
2717 break;
2718
2719 }
2721 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2722 std::map<std::string, std::string> x0;
2725 if(is_row_selected){
2726 row[j]=x0;
2727
2728 }
2729 break;
2730
2731 }
2734 unsigned int total_size0=H5Tget_size(fieldtype0);
2742 std::map<std::string, std::string> x0;
2743 for(unsigned int k0=0;k0<fieldlen0;++k0){
2744 std::string x1key;
2746 std::string x1val;
2748 x0[x1key]=x1val;
2749
2750 }
2752 if(is_row_selected){
2753 row[j]=x0;
2754
2755 }
2760 break;
2761
2762 }
2764 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2765 std::map<std::string, std::string> x0;
2768 if(is_row_selected){
2769 row[j]=x0;
2770
2771 }
2772 break;
2773
2774 }
2775 case MAP_VL_STRING_BLOB: {
2777 unsigned int total_size0=H5Tget_size(fieldtype0);
2785 std::map<std::string, cyclus::Blob> x0;
2786 for(unsigned int k0=0;k0<fieldlen0;++k0){
2787 std::string x1key;
2791 x0[x1key]=x1val;
2792
2793 }
2795 if(is_row_selected){
2796 row[j]=x0;
2797
2798 }
2803 break;
2804
2805 }
2806 case VL_MAP_VL_STRING_BLOB: {
2807 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2808 std::map<std::string, cyclus::Blob> x0;
2811 if(is_row_selected){
2812 row[j]=x0;
2813
2814 }
2815 break;
2816
2817 }
2818 case MAP_VL_STRING_UUID: {
2820 unsigned int total_size0=H5Tget_size(fieldtype0);
2828 std::map<std::string, boost::uuids::uuid> x0;
2829 for(unsigned int k0=0;k0<fieldlen0;++k0){
2830 std::string x1key;
2832 boost::uuids::uuid x1val;
2834 x0[x1key]=x1val;
2835
2836 }
2838 if(is_row_selected){
2839 row[j]=x0;
2840
2841 }
2846 break;
2847
2848 }
2849 case VL_MAP_VL_STRING_UUID: {
2850 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2851 std::map<std::string, boost::uuids::uuid> x0;
2854 if(is_row_selected){
2855 row[j]=x0;
2856
2857 }
2858 break;
2859
2860 }
2863 unsigned int total_size0=H5Tget_size(fieldtype0);
2871 size_t nullpos2keysecond;
2876 std::map<std::pair<int, std::string>, double> x0;
2877 for(unsigned int k0=0;k0<fieldlen0;++k0){
2878 std::pair<int, std::string> x1key;
2879 int x2keyfirst;
2880 x2keyfirst=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
2881 std::string x2keysecond;
2883 nullpos2keysecond=x2keysecond.find('\0');
2884 if(nullpos2keysecond!=std::string::npos){
2886
2887 }
2888 x1key=std::make_pair(x2keyfirst, x2keysecond);
2889 double x1val;
2890 x1val=*reinterpret_cast<double*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
2891 x0[x1key]=x1val;
2892
2893 }
2895 if(is_row_selected){
2896 row[j]=x0;
2897
2898 }
2905 break;
2906
2907 }
2909 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2910 std::map<std::pair<int, std::string>, double> x0;
2913 if(is_row_selected){
2914 row[j]=x0;
2915
2916 }
2917 break;
2918
2919 }
2922 unsigned int total_size0=H5Tget_size(fieldtype0);
2934 std::map<std::pair<int, std::string>, double> x0;
2935 for(unsigned int k0=0;k0<fieldlen0;++k0){
2936 std::pair<int, std::string> x1key;
2937 int x2keyfirst;
2938 x2keyfirst=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
2939 std::string x2keysecond;
2941 x1key=std::make_pair(x2keyfirst, x2keysecond);
2942 double x1val;
2943 x1val=*reinterpret_cast<double*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
2944 x0[x1key]=x1val;
2945
2946 }
2948 if(is_row_selected){
2949 row[j]=x0;
2950
2951 }
2958 break;
2959
2960 }
2962 unsigned int total_size0=CYCLUS_SHA1_SIZE;
2963 std::map<std::pair<int, std::string>, double> x0;
2966 if(is_row_selected){
2967 row[j]=x0;
2968
2969 }
2970 break;
2971
2972 }
2975 unsigned int total_size0=H5Tget_size(fieldtype0);
2979 size_t nullpos1key;
2988 std::map<std::string, std::vector<double>> x0;
2989 for(unsigned int k0=0;k0<fieldlen0;++k0){
2990 std::string x1key;
2991 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
2992 nullpos1key=x1key.find('\0');
2993 if(nullpos1key!=std::string::npos){
2994 x1key.resize(nullpos1key);
2995
2996 }
2997 std::vector<double> x1val;
2998 x1val=std::vector<double>(fieldlen1val);
3000 x0[x1key]=x1val;
3001
3002 }
3004 if(is_row_selected){
3005 row[j]=x0;
3006
3007 }
3013 break;
3014
3015 }
3018 unsigned int total_size0=H5Tget_size(fieldtype0);
3022 size_t nullpos1key;
3025 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
3026 std::map<std::string, std::vector<double>> x0;
3027 for(unsigned int k0=0;k0<fieldlen0;++k0){
3028 std::string x1key;
3029 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
3030 nullpos1key=x1key.find('\0');
3031 if(nullpos1key!=std::string::npos){
3032 x1key.resize(nullpos1key);
3033
3034 }
3035 std::vector<double> x1val;
3037 x0[x1key]=x1val;
3038
3039 }
3041 if(is_row_selected){
3042 row[j]=x0;
3043
3044 }
3048 break;
3049
3050 }
3052 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3053 std::map<std::string, std::vector<double>> x0;
3056 if(is_row_selected){
3057 row[j]=x0;
3058
3059 }
3060 break;
3061
3062 }
3065 unsigned int total_size0=H5Tget_size(fieldtype0);
3077 std::map<std::string, std::vector<double>> x0;
3078 for(unsigned int k0=0;k0<fieldlen0;++k0){
3079 std::string x1key;
3081 std::vector<double> x1val;
3082 x1val=std::vector<double>(fieldlen1val);
3084 x0[x1key]=x1val;
3085
3086 }
3088 if(is_row_selected){
3089 row[j]=x0;
3090
3091 }
3097 break;
3098
3099 }
3102 unsigned int total_size0=H5Tget_size(fieldtype0);
3108 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
3109 std::map<std::string, std::vector<double>> x0;
3110 for(unsigned int k0=0;k0<fieldlen0;++k0){
3111 std::string x1key;
3113 std::vector<double> x1val;
3115 x0[x1key]=x1val;
3116
3117 }
3119 if(is_row_selected){
3120 row[j]=x0;
3121
3122 }
3126 break;
3127
3128 }
3130 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3131 std::map<std::string, std::vector<double>> x0;
3134 if(is_row_selected){
3135 row[j]=x0;
3136
3137 }
3138 break;
3139
3140 }
3142 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3143 std::map<std::string, std::vector<double>> x0;
3146 if(is_row_selected){
3147 row[j]=x0;
3148
3149 }
3150 break;
3151
3152 }
3154 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3155 std::map<std::string, std::vector<double>> x0;
3158 if(is_row_selected){
3159 row[j]=x0;
3160
3161 }
3162 break;
3163
3164 }
3167 unsigned int total_size0=H5Tget_size(fieldtype0);
3171 size_t nullpos1key;
3183 std::map<std::string, std::map<int, double>> x0;
3184 for(unsigned int k0=0;k0<fieldlen0;++k0){
3185 std::string x1key;
3186 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
3187 nullpos1key=x1key.find('\0');
3188 if(nullpos1key!=std::string::npos){
3189 x1key.resize(nullpos1key);
3190
3191 }
3192 std::map<int, double> x1val;
3193 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
3194 int x2valkey;
3196 double x2valval;
3199
3200 }
3201 x0[x1key]=x1val;
3202
3203 }
3205 if(is_row_selected){
3206 row[j]=x0;
3207
3208 }
3216 break;
3217
3218 }
3221 unsigned int total_size0=H5Tget_size(fieldtype0);
3225 size_t nullpos1key;
3228 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
3229 std::map<std::string, std::map<int, double>> x0;
3230 for(unsigned int k0=0;k0<fieldlen0;++k0){
3231 std::string x1key;
3232 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
3233 nullpos1key=x1key.find('\0');
3234 if(nullpos1key!=std::string::npos){
3235 x1key.resize(nullpos1key);
3236
3237 }
3238 std::map<int, double> x1val;
3240 x0[x1key]=x1val;
3241
3242 }
3244 if(is_row_selected){
3245 row[j]=x0;
3246
3247 }
3251 break;
3252
3253 }
3255 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3256 std::map<std::string, std::map<int, double>> x0;
3259 if(is_row_selected){
3260 row[j]=x0;
3261
3262 }
3263 break;
3264
3265 }
3268 unsigned int total_size0=H5Tget_size(fieldtype0);
3283 std::map<std::string, std::map<int, double>> x0;
3284 for(unsigned int k0=0;k0<fieldlen0;++k0){
3285 std::string x1key;
3287 std::map<int, double> x1val;
3288 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
3289 int x2valkey;
3291 double x2valval;
3294
3295 }
3296 x0[x1key]=x1val;
3297
3298 }
3300 if(is_row_selected){
3301 row[j]=x0;
3302
3303 }
3311 break;
3312
3313 }
3316 unsigned int total_size0=H5Tget_size(fieldtype0);
3322 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
3323 std::map<std::string, std::map<int, double>> x0;
3324 for(unsigned int k0=0;k0<fieldlen0;++k0){
3325 std::string x1key;
3327 std::map<int, double> x1val;
3329 x0[x1key]=x1val;
3330
3331 }
3333 if(is_row_selected){
3334 row[j]=x0;
3335
3336 }
3340 break;
3341
3342 }
3344 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3345 std::map<std::string, std::map<int, double>> x0;
3348 if(is_row_selected){
3349 row[j]=x0;
3350
3351 }
3352 break;
3353
3354 }
3356 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3357 std::map<std::string, std::map<int, double>> x0;
3360 if(is_row_selected){
3361 row[j]=x0;
3362
3363 }
3364 break;
3365
3366 }
3368 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3369 std::map<std::string, std::map<int, double>> x0;
3372 if(is_row_selected){
3373 row[j]=x0;
3374
3375 }
3376 break;
3377
3378 }
3381 unsigned int total_size0=H5Tget_size(fieldtype0);
3385 size_t nullpos1key;
3401 std::map<std::string, std::pair<double, std::map<int, double>>> x0;
3402 for(unsigned int k0=0;k0<fieldlen0;++k0){
3403 std::string x1key;
3404 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
3405 nullpos1key=x1key.find('\0');
3406 if(nullpos1key!=std::string::npos){
3407 x1key.resize(nullpos1key);
3408
3409 }
3410 std::pair<double, std::map<int, double>> x1val;
3411 double x2valfirst;
3412 x2valfirst=*reinterpret_cast<double*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
3413 std::map<int, double> x2valsecond;
3415 int x3valsecondkey;
3417 double x3valsecondval;
3420
3421 }
3422 x1val=std::make_pair(x2valfirst, x2valsecond);
3423 x0[x1key]=x1val;
3424
3425 }
3427 if(is_row_selected){
3428 row[j]=x0;
3429
3430 }
3440 break;
3441
3442 }
3444 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3445 std::map<std::string, std::pair<double, std::map<int, double>>> x0;
3448 if(is_row_selected){
3449 row[j]=x0;
3450
3451 }
3452 break;
3453
3454 }
3457 unsigned int total_size0=H5Tget_size(fieldtype0);
3476 std::map<std::string, std::pair<double, std::map<int, double>>> x0;
3477 for(unsigned int k0=0;k0<fieldlen0;++k0){
3478 std::string x1key;
3480 std::pair<double, std::map<int, double>> x1val;
3481 double x2valfirst;
3482 x2valfirst=*reinterpret_cast<double*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
3483 std::map<int, double> x2valsecond;
3485 int x3valsecondkey;
3487 double x3valsecondval;
3490
3491 }
3492 x1val=std::make_pair(x2valfirst, x2valsecond);
3493 x0[x1key]=x1val;
3494
3495 }
3497 if(is_row_selected){
3498 row[j]=x0;
3499
3500 }
3510 break;
3511
3512 }
3515 unsigned int total_size0=H5Tget_size(fieldtype0);
3519 size_t nullpos1key;
3527 std::map<std::string, std::pair<double, std::map<int, double>>> x0;
3528 for(unsigned int k0=0;k0<fieldlen0;++k0){
3529 std::string x1key;
3530 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
3531 nullpos1key=x1key.find('\0');
3532 if(nullpos1key!=std::string::npos){
3533 x1key.resize(nullpos1key);
3534
3535 }
3536 std::pair<double, std::map<int, double>> x1val;
3537 double x2valfirst;
3538 x2valfirst=*reinterpret_cast<double*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
3539 std::map<int, double> x2valsecond;
3541 x1val=std::make_pair(x2valfirst, x2valsecond);
3542 x0[x1key]=x1val;
3543
3544 }
3546 if(is_row_selected){
3547 row[j]=x0;
3548
3549 }
3555 break;
3556
3557 }
3559 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3560 std::map<std::string, std::pair<double, std::map<int, double>>> x0;
3563 if(is_row_selected){
3564 row[j]=x0;
3565
3566 }
3567 break;
3568
3569 }
3571 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3572 std::map<std::string, std::pair<double, std::map<int, double>>> x0;
3575 if(is_row_selected){
3576 row[j]=x0;
3577
3578 }
3579 break;
3580
3581 }
3584 unsigned int total_size0=H5Tget_size(fieldtype0);
3595 std::map<std::string, std::pair<double, std::map<int, double>>> x0;
3596 for(unsigned int k0=0;k0<fieldlen0;++k0){
3597 std::string x1key;
3599 std::pair<double, std::map<int, double>> x1val;
3600 double x2valfirst;
3601 x2valfirst=*reinterpret_cast<double*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
3602 std::map<int, double> x2valsecond;
3604 x1val=std::make_pair(x2valfirst, x2valsecond);
3605 x0[x1key]=x1val;
3606
3607 }
3609 if(is_row_selected){
3610 row[j]=x0;
3611
3612 }
3618 break;
3619
3620 }
3622 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3623 std::map<std::string, std::pair<double, std::map<int, double>>> x0;
3626 if(is_row_selected){
3627 row[j]=x0;
3628
3629 }
3630 break;
3631
3632 }
3635 unsigned int total_size0=H5Tget_size(fieldtype0);
3646 size_t nullpos2valkey;
3651 std::map<int, std::map<std::string, double>> x0;
3652 for(unsigned int k0=0;k0<fieldlen0;++k0){
3653 int x1key;
3654 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
3655 std::map<std::string, double> x1val;
3656 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
3657 std::string x2valkey;
3659 nullpos2valkey=x2valkey.find('\0');
3660 if(nullpos2valkey!=std::string::npos){
3661 x2valkey.resize(nullpos2valkey);
3662
3663 }
3664 double x2valval;
3667
3668 }
3669 x0[x1key]=x1val;
3670
3671 }
3673 if(is_row_selected){
3674 row[j]=x0;
3675
3676 }
3684 break;
3685
3686 }
3689 unsigned int total_size0=H5Tget_size(fieldtype0);
3704 std::map<int, std::map<std::string, double>> x0;
3705 for(unsigned int k0=0;k0<fieldlen0;++k0){
3706 int x1key;
3707 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
3708 std::map<std::string, double> x1val;
3709 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
3710 std::string x2valkey;
3712 double x2valval;
3715
3716 }
3717 x0[x1key]=x1val;
3718
3719 }
3721 if(is_row_selected){
3722 row[j]=x0;
3723
3724 }
3732 break;
3733
3734 }
3736 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3737 std::map<int, std::map<std::string, double>> x0;
3740 if(is_row_selected){
3741 row[j]=x0;
3742
3743 }
3744 break;
3745
3746 }
3748 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3749 std::map<int, std::map<std::string, double>> x0;
3752 if(is_row_selected){
3753 row[j]=x0;
3754
3755 }
3756 break;
3757
3758 }
3761 unsigned int total_size0=H5Tget_size(fieldtype0);
3767 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
3768 std::map<int, std::map<std::string, double>> x0;
3769 for(unsigned int k0=0;k0<fieldlen0;++k0){
3770 int x1key;
3771 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
3772 std::map<std::string, double> x1val;
3774 x0[x1key]=x1val;
3775
3776 }
3778 if(is_row_selected){
3779 row[j]=x0;
3780
3781 }
3785 break;
3786
3787 }
3790 unsigned int total_size0=H5Tget_size(fieldtype0);
3796 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
3797 std::map<int, std::map<std::string, double>> x0;
3798 for(unsigned int k0=0;k0<fieldlen0;++k0){
3799 int x1key;
3800 x1key=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0);
3801 std::map<std::string, double> x1val;
3803 x0[x1key]=x1val;
3804
3805 }
3807 if(is_row_selected){
3808 row[j]=x0;
3809
3810 }
3814 break;
3815
3816 }
3818 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3819 std::map<int, std::map<std::string, double>> x0;
3822 if(is_row_selected){
3823 row[j]=x0;
3824
3825 }
3826 break;
3827
3828 }
3830 unsigned int total_size0=CYCLUS_SHA1_SIZE;
3831 std::map<int, std::map<std::string, double>> x0;
3834 if(is_row_selected){
3835 row[j]=x0;
3836
3837 }
3838 break;
3839
3840 }
3843 unsigned int total_size0=H5Tget_size(fieldtype0);
3847 size_t nullpos1key;
3866 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
3867 for(unsigned int k0=0;k0<fieldlen0;++k0){
3868 std::string x1key;
3869 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
3870 nullpos1key=x1key.find('\0');
3871 if(nullpos1key!=std::string::npos){
3872 x1key.resize(nullpos1key);
3873
3874 }
3875 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
3876 x1val=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen1val);
3877 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
3878 std::pair<int, std::pair<std::string, std::string>> x2valelem;
3879 int x3valelemfirst;
3881 std::pair<std::string, std::string> x3valelemsecond;
3882 std::string x4valelemsecondfirst;
3885 if(nullpos4valelemsecondfirst!=std::string::npos){
3887
3888 }
3889 std::string x4valelemsecondsecond;
3892 if(nullpos4valelemsecondsecond!=std::string::npos){
3894
3895 }
3897 x2valelem=std::make_pair(x3valelemfirst, x3valelemsecond);
3899
3900 }
3901 x0[x1key]=x1val;
3902
3903 }
3905 if(is_row_selected){
3906 row[j]=x0;
3907
3908 }
3918 break;
3919
3920 }
3923 unsigned int total_size0=H5Tget_size(fieldtype0);
3927 size_t nullpos1key;
3945 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
3946 for(unsigned int k0=0;k0<fieldlen0;++k0){
3947 std::string x1key;
3948 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
3949 nullpos1key=x1key.find('\0');
3950 if(nullpos1key!=std::string::npos){
3951 x1key.resize(nullpos1key);
3952
3953 }
3954 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
3955 x1val=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen1val);
3956 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
3957 std::pair<int, std::pair<std::string, std::string>> x2valelem;
3958 int x3valelemfirst;
3960 std::pair<std::string, std::string> x3valelemsecond;
3961 std::string x4valelemsecondfirst;
3964 if(nullpos4valelemsecondfirst!=std::string::npos){
3966
3967 }
3968 std::string x4valelemsecondsecond;
3971 x2valelem=std::make_pair(x3valelemfirst, x3valelemsecond);
3973
3974 }
3975 x0[x1key]=x1val;
3976
3977 }
3979 if(is_row_selected){
3980 row[j]=x0;
3981
3982 }
3992 break;
3993
3994 }
3997 unsigned int total_size0=H5Tget_size(fieldtype0);
4001 size_t nullpos1key;
4019 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4020 for(unsigned int k0=0;k0<fieldlen0;++k0){
4021 std::string x1key;
4022 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
4023 nullpos1key=x1key.find('\0');
4024 if(nullpos1key!=std::string::npos){
4025 x1key.resize(nullpos1key);
4026
4027 }
4028 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4029 x1val=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen1val);
4030 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
4031 std::pair<int, std::pair<std::string, std::string>> x2valelem;
4032 int x3valelemfirst;
4034 std::pair<std::string, std::string> x3valelemsecond;
4035 std::string x4valelemsecondfirst;
4037 std::string x4valelemsecondsecond;
4040 if(nullpos4valelemsecondsecond!=std::string::npos){
4042
4043 }
4045 x2valelem=std::make_pair(x3valelemfirst, x3valelemsecond);
4047
4048 }
4049 x0[x1key]=x1val;
4050
4051 }
4053 if(is_row_selected){
4054 row[j]=x0;
4055
4056 }
4066 break;
4067
4068 }
4071 unsigned int total_size0=H5Tget_size(fieldtype0);
4075 size_t nullpos1key;
4092 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4093 for(unsigned int k0=0;k0<fieldlen0;++k0){
4094 std::string x1key;
4095 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
4096 nullpos1key=x1key.find('\0');
4097 if(nullpos1key!=std::string::npos){
4098 x1key.resize(nullpos1key);
4099
4100 }
4101 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4102 x1val=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen1val);
4103 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
4104 std::pair<int, std::pair<std::string, std::string>> x2valelem;
4105 int x3valelemfirst;
4107 std::pair<std::string, std::string> x3valelemsecond;
4108 std::string x4valelemsecondfirst;
4110 std::string x4valelemsecondsecond;
4113 x2valelem=std::make_pair(x3valelemfirst, x3valelemsecond);
4115
4116 }
4117 x0[x1key]=x1val;
4118
4119 }
4121 if(is_row_selected){
4122 row[j]=x0;
4123
4124 }
4134 break;
4135
4136 }
4139 unsigned int total_size0=H5Tget_size(fieldtype0);
4143 size_t nullpos1key;
4146 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
4147 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4148 for(unsigned int k0=0;k0<fieldlen0;++k0){
4149 std::string x1key;
4150 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
4151 nullpos1key=x1key.find('\0');
4152 if(nullpos1key!=std::string::npos){
4153 x1key.resize(nullpos1key);
4154
4155 }
4156 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4158 x0[x1key]=x1val;
4159
4160 }
4162 if(is_row_selected){
4163 row[j]=x0;
4164
4165 }
4169 break;
4170
4171 }
4174 unsigned int total_size0=H5Tget_size(fieldtype0);
4178 size_t nullpos1key;
4181 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
4182 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4183 for(unsigned int k0=0;k0<fieldlen0;++k0){
4184 std::string x1key;
4185 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
4186 nullpos1key=x1key.find('\0');
4187 if(nullpos1key!=std::string::npos){
4188 x1key.resize(nullpos1key);
4189
4190 }
4191 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4193 x0[x1key]=x1val;
4194
4195 }
4197 if(is_row_selected){
4198 row[j]=x0;
4199
4200 }
4204 break;
4205
4206 }
4209 unsigned int total_size0=H5Tget_size(fieldtype0);
4213 size_t nullpos1key;
4216 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
4217 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4218 for(unsigned int k0=0;k0<fieldlen0;++k0){
4219 std::string x1key;
4220 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
4221 nullpos1key=x1key.find('\0');
4222 if(nullpos1key!=std::string::npos){
4223 x1key.resize(nullpos1key);
4224
4225 }
4226 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4228 x0[x1key]=x1val;
4229
4230 }
4232 if(is_row_selected){
4233 row[j]=x0;
4234
4235 }
4239 break;
4240
4241 }
4244 unsigned int total_size0=H5Tget_size(fieldtype0);
4248 size_t nullpos1key;
4251 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
4252 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4253 for(unsigned int k0=0;k0<fieldlen0;++k0){
4254 std::string x1key;
4255 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
4256 nullpos1key=x1key.find('\0');
4257 if(nullpos1key!=std::string::npos){
4258 x1key.resize(nullpos1key);
4259
4260 }
4261 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4263 x0[x1key]=x1val;
4264
4265 }
4267 if(is_row_selected){
4268 row[j]=x0;
4269
4270 }
4274 break;
4275
4276 }
4279 unsigned int total_size0=H5Tget_size(fieldtype0);
4301 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4302 for(unsigned int k0=0;k0<fieldlen0;++k0){
4303 std::string x1key;
4305 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4306 x1val=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen1val);
4307 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
4308 std::pair<int, std::pair<std::string, std::string>> x2valelem;
4309 int x3valelemfirst;
4311 std::pair<std::string, std::string> x3valelemsecond;
4312 std::string x4valelemsecondfirst;
4315 if(nullpos4valelemsecondfirst!=std::string::npos){
4317
4318 }
4319 std::string x4valelemsecondsecond;
4322 if(nullpos4valelemsecondsecond!=std::string::npos){
4324
4325 }
4327 x2valelem=std::make_pair(x3valelemfirst, x3valelemsecond);
4329
4330 }
4331 x0[x1key]=x1val;
4332
4333 }
4335 if(is_row_selected){
4336 row[j]=x0;
4337
4338 }
4348 break;
4349
4350 }
4353 unsigned int total_size0=H5Tget_size(fieldtype0);
4374 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4375 for(unsigned int k0=0;k0<fieldlen0;++k0){
4376 std::string x1key;
4378 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4379 x1val=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen1val);
4380 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
4381 std::pair<int, std::pair<std::string, std::string>> x2valelem;
4382 int x3valelemfirst;
4384 std::pair<std::string, std::string> x3valelemsecond;
4385 std::string x4valelemsecondfirst;
4388 if(nullpos4valelemsecondfirst!=std::string::npos){
4390
4391 }
4392 std::string x4valelemsecondsecond;
4395 x2valelem=std::make_pair(x3valelemfirst, x3valelemsecond);
4397
4398 }
4399 x0[x1key]=x1val;
4400
4401 }
4403 if(is_row_selected){
4404 row[j]=x0;
4405
4406 }
4416 break;
4417
4418 }
4421 unsigned int total_size0=H5Tget_size(fieldtype0);
4442 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4443 for(unsigned int k0=0;k0<fieldlen0;++k0){
4444 std::string x1key;
4446 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4447 x1val=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen1val);
4448 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
4449 std::pair<int, std::pair<std::string, std::string>> x2valelem;
4450 int x3valelemfirst;
4452 std::pair<std::string, std::string> x3valelemsecond;
4453 std::string x4valelemsecondfirst;
4455 std::string x4valelemsecondsecond;
4458 if(nullpos4valelemsecondsecond!=std::string::npos){
4460
4461 }
4463 x2valelem=std::make_pair(x3valelemfirst, x3valelemsecond);
4465
4466 }
4467 x0[x1key]=x1val;
4468
4469 }
4471 if(is_row_selected){
4472 row[j]=x0;
4473
4474 }
4484 break;
4485
4486 }
4489 unsigned int total_size0=H5Tget_size(fieldtype0);
4509 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4510 for(unsigned int k0=0;k0<fieldlen0;++k0){
4511 std::string x1key;
4513 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4514 x1val=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen1val);
4515 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
4516 std::pair<int, std::pair<std::string, std::string>> x2valelem;
4517 int x3valelemfirst;
4519 std::pair<std::string, std::string> x3valelemsecond;
4520 std::string x4valelemsecondfirst;
4522 std::string x4valelemsecondsecond;
4525 x2valelem=std::make_pair(x3valelemfirst, x3valelemsecond);
4527
4528 }
4529 x0[x1key]=x1val;
4530
4531 }
4533 if(is_row_selected){
4534 row[j]=x0;
4535
4536 }
4546 break;
4547
4548 }
4551 unsigned int total_size0=H5Tget_size(fieldtype0);
4557 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
4558 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4559 for(unsigned int k0=0;k0<fieldlen0;++k0){
4560 std::string x1key;
4562 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4564 x0[x1key]=x1val;
4565
4566 }
4568 if(is_row_selected){
4569 row[j]=x0;
4570
4571 }
4575 break;
4576
4577 }
4580 unsigned int total_size0=H5Tget_size(fieldtype0);
4586 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
4587 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4588 for(unsigned int k0=0;k0<fieldlen0;++k0){
4589 std::string x1key;
4591 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4593 x0[x1key]=x1val;
4594
4595 }
4597 if(is_row_selected){
4598 row[j]=x0;
4599
4600 }
4604 break;
4605
4606 }
4609 unsigned int total_size0=H5Tget_size(fieldtype0);
4615 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
4616 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4617 for(unsigned int k0=0;k0<fieldlen0;++k0){
4618 std::string x1key;
4620 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4622 x0[x1key]=x1val;
4623
4624 }
4626 if(is_row_selected){
4627 row[j]=x0;
4628
4629 }
4633 break;
4634
4635 }
4638 unsigned int total_size0=H5Tget_size(fieldtype0);
4644 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
4645 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4646 for(unsigned int k0=0;k0<fieldlen0;++k0){
4647 std::string x1key;
4649 std::vector<std::pair<int, std::pair<std::string, std::string>>> x1val;
4651 x0[x1key]=x1val;
4652
4653 }
4655 if(is_row_selected){
4656 row[j]=x0;
4657
4658 }
4662 break;
4663
4664 }
4666 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4667 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4670 if(is_row_selected){
4671 row[j]=x0;
4672
4673 }
4674 break;
4675
4676 }
4678 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4679 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4682 if(is_row_selected){
4683 row[j]=x0;
4684
4685 }
4686 break;
4687
4688 }
4690 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4691 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4694 if(is_row_selected){
4695 row[j]=x0;
4696
4697 }
4698 break;
4699
4700 }
4702 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4703 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4706 if(is_row_selected){
4707 row[j]=x0;
4708
4709 }
4710 break;
4711
4712 }
4714 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4715 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4718 if(is_row_selected){
4719 row[j]=x0;
4720
4721 }
4722 break;
4723
4724 }
4726 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4727 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4730 if(is_row_selected){
4731 row[j]=x0;
4732
4733 }
4734 break;
4735
4736 }
4738 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4739 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4742 if(is_row_selected){
4743 row[j]=x0;
4744
4745 }
4746 break;
4747
4748 }
4750 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4751 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4754 if(is_row_selected){
4755 row[j]=x0;
4756
4757 }
4758 break;
4759
4760 }
4762 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4763 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4766 if(is_row_selected){
4767 row[j]=x0;
4768
4769 }
4770 break;
4771
4772 }
4774 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4775 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4778 if(is_row_selected){
4779 row[j]=x0;
4780
4781 }
4782 break;
4783
4784 }
4786 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4787 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4790 if(is_row_selected){
4791 row[j]=x0;
4792
4793 }
4794 break;
4795
4796 }
4798 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4799 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4802 if(is_row_selected){
4803 row[j]=x0;
4804
4805 }
4806 break;
4807
4808 }
4810 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4811 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4814 if(is_row_selected){
4815 row[j]=x0;
4816
4817 }
4818 break;
4819
4820 }
4822 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4823 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4826 if(is_row_selected){
4827 row[j]=x0;
4828
4829 }
4830 break;
4831
4832 }
4834 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4835 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4838 if(is_row_selected){
4839 row[j]=x0;
4840
4841 }
4842 break;
4843
4844 }
4846 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4847 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
4850 if(is_row_selected){
4851 row[j]=x0;
4852
4853 }
4854 break;
4855
4856 }
4857 case LIST_PAIR_INT_INT: {
4859 unsigned int total_size0=H5Tget_size(fieldtype0);
4868 std::list<std::pair<int, int>> x0;
4869 for(unsigned int k0=0;k0<fieldlen0;++k0){
4870 std::pair<int, int> x1elem;
4871 int x2elemfirst;
4872 x2elemfirst=*reinterpret_cast<int*>(buf+offset+total_size1elem*k0);
4873 int x2elemsecond;
4874 x2elemsecond=*reinterpret_cast<int*>(buf+offset+total_size1elem*k0+total_size2elemfirst);
4875 x1elem=std::make_pair(x2elemfirst, x2elemsecond);
4876 x0.push_back(x1elem);
4877
4878 }
4880 if(is_row_selected){
4881 row[j]=x0;
4882
4883 }
4888 break;
4889
4890 }
4891 case VL_LIST_PAIR_INT_INT: {
4892 unsigned int total_size0=CYCLUS_SHA1_SIZE;
4893 std::list<std::pair<int, int>> x0;
4896 if(is_row_selected){
4897 row[j]=x0;
4898
4899 }
4900 break;
4901
4902 }
4905 unsigned int total_size0=H5Tget_size(fieldtype0);
4909 size_t nullpos1key;
4914 size_t nullpos2valfirst;
4923 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
4924 for(unsigned int k0=0;k0<fieldlen0;++k0){
4925 std::string x1key;
4926 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
4927 nullpos1key=x1key.find('\0');
4928 if(nullpos1key!=std::string::npos){
4929 x1key.resize(nullpos1key);
4930
4931 }
4932 std::pair<std::string, std::vector<double>> x1val;
4933 std::string x2valfirst;
4935 nullpos2valfirst=x2valfirst.find('\0');
4936 if(nullpos2valfirst!=std::string::npos){
4938
4939 }
4940 std::vector<double> x2valsecond;
4941 x2valsecond=std::vector<double>(fieldlen2valsecond);
4943 x1val=std::make_pair(x2valfirst, x2valsecond);
4944 x0[x1key]=x1val;
4945
4946 }
4948 if(is_row_selected){
4949 row[j]=x0;
4950
4951 }
4959 break;
4960
4961 }
4964 unsigned int total_size0=H5Tget_size(fieldtype0);
4968 size_t nullpos1key;
4973 size_t nullpos2valfirst;
4977 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
4978 for(unsigned int k0=0;k0<fieldlen0;++k0){
4979 std::string x1key;
4980 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
4981 nullpos1key=x1key.find('\0');
4982 if(nullpos1key!=std::string::npos){
4983 x1key.resize(nullpos1key);
4984
4985 }
4986 std::pair<std::string, std::vector<double>> x1val;
4987 std::string x2valfirst;
4989 nullpos2valfirst=x2valfirst.find('\0');
4990 if(nullpos2valfirst!=std::string::npos){
4992
4993 }
4994 std::vector<double> x2valsecond;
4996 x1val=std::make_pair(x2valfirst, x2valsecond);
4997 x0[x1key]=x1val;
4998
4999 }
5001 if(is_row_selected){
5002 row[j]=x0;
5003
5004 }
5010 break;
5011
5012 }
5015 unsigned int total_size0=H5Tget_size(fieldtype0);
5019 size_t nullpos1key;
5032 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5033 for(unsigned int k0=0;k0<fieldlen0;++k0){
5034 std::string x1key;
5035 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
5036 nullpos1key=x1key.find('\0');
5037 if(nullpos1key!=std::string::npos){
5038 x1key.resize(nullpos1key);
5039
5040 }
5041 std::pair<std::string, std::vector<double>> x1val;
5042 std::string x2valfirst;
5044 std::vector<double> x2valsecond;
5045 x2valsecond=std::vector<double>(fieldlen2valsecond);
5047 x1val=std::make_pair(x2valfirst, x2valsecond);
5048 x0[x1key]=x1val;
5049
5050 }
5052 if(is_row_selected){
5053 row[j]=x0;
5054
5055 }
5063 break;
5064
5065 }
5068 unsigned int total_size0=H5Tget_size(fieldtype0);
5072 size_t nullpos1key;
5080 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5081 for(unsigned int k0=0;k0<fieldlen0;++k0){
5082 std::string x1key;
5083 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
5084 nullpos1key=x1key.find('\0');
5085 if(nullpos1key!=std::string::npos){
5086 x1key.resize(nullpos1key);
5087
5088 }
5089 std::pair<std::string, std::vector<double>> x1val;
5090 std::string x2valfirst;
5092 std::vector<double> x2valsecond;
5094 x1val=std::make_pair(x2valfirst, x2valsecond);
5095 x0[x1key]=x1val;
5096
5097 }
5099 if(is_row_selected){
5100 row[j]=x0;
5101
5102 }
5108 break;
5109
5110 }
5113 unsigned int total_size0=H5Tget_size(fieldtype0);
5121 size_t nullpos2valfirst;
5130 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5131 for(unsigned int k0=0;k0<fieldlen0;++k0){
5132 std::string x1key;
5134 std::pair<std::string, std::vector<double>> x1val;
5135 std::string x2valfirst;
5137 nullpos2valfirst=x2valfirst.find('\0');
5138 if(nullpos2valfirst!=std::string::npos){
5140
5141 }
5142 std::vector<double> x2valsecond;
5143 x2valsecond=std::vector<double>(fieldlen2valsecond);
5145 x1val=std::make_pair(x2valfirst, x2valsecond);
5146 x0[x1key]=x1val;
5147
5148 }
5150 if(is_row_selected){
5151 row[j]=x0;
5152
5153 }
5161 break;
5162
5163 }
5166 unsigned int total_size0=H5Tget_size(fieldtype0);
5182 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5183 for(unsigned int k0=0;k0<fieldlen0;++k0){
5184 std::string x1key;
5186 std::pair<std::string, std::vector<double>> x1val;
5187 std::string x2valfirst;
5189 std::vector<double> x2valsecond;
5190 x2valsecond=std::vector<double>(fieldlen2valsecond);
5192 x1val=std::make_pair(x2valfirst, x2valsecond);
5193 x0[x1key]=x1val;
5194
5195 }
5197 if(is_row_selected){
5198 row[j]=x0;
5199
5200 }
5208 break;
5209
5210 }
5213 unsigned int total_size0=H5Tget_size(fieldtype0);
5221 size_t nullpos2valfirst;
5225 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5226 for(unsigned int k0=0;k0<fieldlen0;++k0){
5227 std::string x1key;
5229 std::pair<std::string, std::vector<double>> x1val;
5230 std::string x2valfirst;
5232 nullpos2valfirst=x2valfirst.find('\0');
5233 if(nullpos2valfirst!=std::string::npos){
5235
5236 }
5237 std::vector<double> x2valsecond;
5239 x1val=std::make_pair(x2valfirst, x2valsecond);
5240 x0[x1key]=x1val;
5241
5242 }
5244 if(is_row_selected){
5245 row[j]=x0;
5246
5247 }
5253 break;
5254
5255 }
5258 unsigned int total_size0=H5Tget_size(fieldtype0);
5269 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5270 for(unsigned int k0=0;k0<fieldlen0;++k0){
5271 std::string x1key;
5273 std::pair<std::string, std::vector<double>> x1val;
5274 std::string x2valfirst;
5276 std::vector<double> x2valsecond;
5278 x1val=std::make_pair(x2valfirst, x2valsecond);
5279 x0[x1key]=x1val;
5280
5281 }
5283 if(is_row_selected){
5284 row[j]=x0;
5285
5286 }
5292 break;
5293
5294 }
5296 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5297 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5300 if(is_row_selected){
5301 row[j]=x0;
5302
5303 }
5304 break;
5305
5306 }
5308 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5309 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5312 if(is_row_selected){
5313 row[j]=x0;
5314
5315 }
5316 break;
5317
5318 }
5320 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5321 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5324 if(is_row_selected){
5325 row[j]=x0;
5326
5327 }
5328 break;
5329
5330 }
5332 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5333 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5336 if(is_row_selected){
5337 row[j]=x0;
5338
5339 }
5340 break;
5341
5342 }
5344 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5345 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5348 if(is_row_selected){
5349 row[j]=x0;
5350
5351 }
5352 break;
5353
5354 }
5356 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5357 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5360 if(is_row_selected){
5361 row[j]=x0;
5362
5363 }
5364 break;
5365
5366 }
5368 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5369 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5372 if(is_row_selected){
5373 row[j]=x0;
5374
5375 }
5376 break;
5377
5378 }
5380 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5381 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
5384 if(is_row_selected){
5385 row[j]=x0;
5386
5387 }
5388 break;
5389
5390 }
5393 unsigned int total_size0=H5Tget_size(fieldtype0);
5397 size_t nullpos1key;
5405 size_t nullpos2valkey;
5410 std::map<std::string, std::map<std::string, int>> x0;
5411 for(unsigned int k0=0;k0<fieldlen0;++k0){
5412 std::string x1key;
5413 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
5414 nullpos1key=x1key.find('\0');
5415 if(nullpos1key!=std::string::npos){
5416 x1key.resize(nullpos1key);
5417
5418 }
5419 std::map<std::string, int> x1val;
5420 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
5421 std::string x2valkey;
5423 nullpos2valkey=x2valkey.find('\0');
5424 if(nullpos2valkey!=std::string::npos){
5425 x2valkey.resize(nullpos2valkey);
5426
5427 }
5428 int x2valval;
5431
5432 }
5433 x0[x1key]=x1val;
5434
5435 }
5437 if(is_row_selected){
5438 row[j]=x0;
5439
5440 }
5448 break;
5449
5450 }
5453 unsigned int total_size0=H5Tget_size(fieldtype0);
5457 size_t nullpos1key;
5469 std::map<std::string, std::map<std::string, int>> x0;
5470 for(unsigned int k0=0;k0<fieldlen0;++k0){
5471 std::string x1key;
5472 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
5473 nullpos1key=x1key.find('\0');
5474 if(nullpos1key!=std::string::npos){
5475 x1key.resize(nullpos1key);
5476
5477 }
5478 std::map<std::string, int> x1val;
5479 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
5480 std::string x2valkey;
5482 int x2valval;
5485
5486 }
5487 x0[x1key]=x1val;
5488
5489 }
5491 if(is_row_selected){
5492 row[j]=x0;
5493
5494 }
5502 break;
5503
5504 }
5507 unsigned int total_size0=H5Tget_size(fieldtype0);
5511 size_t nullpos1key;
5514 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
5515 std::map<std::string, std::map<std::string, int>> x0;
5516 for(unsigned int k0=0;k0<fieldlen0;++k0){
5517 std::string x1key;
5518 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
5519 nullpos1key=x1key.find('\0');
5520 if(nullpos1key!=std::string::npos){
5521 x1key.resize(nullpos1key);
5522
5523 }
5524 std::map<std::string, int> x1val;
5526 x0[x1key]=x1val;
5527
5528 }
5530 if(is_row_selected){
5531 row[j]=x0;
5532
5533 }
5537 break;
5538
5539 }
5542 unsigned int total_size0=H5Tget_size(fieldtype0);
5546 size_t nullpos1key;
5549 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
5550 std::map<std::string, std::map<std::string, int>> x0;
5551 for(unsigned int k0=0;k0<fieldlen0;++k0){
5552 std::string x1key;
5553 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
5554 nullpos1key=x1key.find('\0');
5555 if(nullpos1key!=std::string::npos){
5556 x1key.resize(nullpos1key);
5557
5558 }
5559 std::map<std::string, int> x1val;
5561 x0[x1key]=x1val;
5562
5563 }
5565 if(is_row_selected){
5566 row[j]=x0;
5567
5568 }
5572 break;
5573
5574 }
5577 unsigned int total_size0=H5Tget_size(fieldtype0);
5588 size_t nullpos2valkey;
5593 std::map<std::string, std::map<std::string, int>> x0;
5594 for(unsigned int k0=0;k0<fieldlen0;++k0){
5595 std::string x1key;
5597 std::map<std::string, int> x1val;
5598 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
5599 std::string x2valkey;
5601 nullpos2valkey=x2valkey.find('\0');
5602 if(nullpos2valkey!=std::string::npos){
5603 x2valkey.resize(nullpos2valkey);
5604
5605 }
5606 int x2valval;
5609
5610 }
5611 x0[x1key]=x1val;
5612
5613 }
5615 if(is_row_selected){
5616 row[j]=x0;
5617
5618 }
5626 break;
5627
5628 }
5631 unsigned int total_size0=H5Tget_size(fieldtype0);
5637 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
5638 std::map<std::string, std::map<std::string, int>> x0;
5639 for(unsigned int k0=0;k0<fieldlen0;++k0){
5640 std::string x1key;
5642 std::map<std::string, int> x1val;
5644 x0[x1key]=x1val;
5645
5646 }
5648 if(is_row_selected){
5649 row[j]=x0;
5650
5651 }
5655 break;
5656
5657 }
5660 unsigned int total_size0=H5Tget_size(fieldtype0);
5675 std::map<std::string, std::map<std::string, int>> x0;
5676 for(unsigned int k0=0;k0<fieldlen0;++k0){
5677 std::string x1key;
5679 std::map<std::string, int> x1val;
5680 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
5681 std::string x2valkey;
5683 int x2valval;
5686
5687 }
5688 x0[x1key]=x1val;
5689
5690 }
5692 if(is_row_selected){
5693 row[j]=x0;
5694
5695 }
5703 break;
5704
5705 }
5708 unsigned int total_size0=H5Tget_size(fieldtype0);
5714 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
5715 std::map<std::string, std::map<std::string, int>> x0;
5716 for(unsigned int k0=0;k0<fieldlen0;++k0){
5717 std::string x1key;
5719 std::map<std::string, int> x1val;
5721 x0[x1key]=x1val;
5722
5723 }
5725 if(is_row_selected){
5726 row[j]=x0;
5727
5728 }
5732 break;
5733
5734 }
5736 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5737 std::map<std::string, std::map<std::string, int>> x0;
5740 if(is_row_selected){
5741 row[j]=x0;
5742
5743 }
5744 break;
5745
5746 }
5748 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5749 std::map<std::string, std::map<std::string, int>> x0;
5752 if(is_row_selected){
5753 row[j]=x0;
5754
5755 }
5756 break;
5757
5758 }
5760 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5761 std::map<std::string, std::map<std::string, int>> x0;
5764 if(is_row_selected){
5765 row[j]=x0;
5766
5767 }
5768 break;
5769
5770 }
5772 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5773 std::map<std::string, std::map<std::string, int>> x0;
5776 if(is_row_selected){
5777 row[j]=x0;
5778
5779 }
5780 break;
5781
5782 }
5784 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5785 std::map<std::string, std::map<std::string, int>> x0;
5788 if(is_row_selected){
5789 row[j]=x0;
5790
5791 }
5792 break;
5793
5794 }
5796 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5797 std::map<std::string, std::map<std::string, int>> x0;
5800 if(is_row_selected){
5801 row[j]=x0;
5802
5803 }
5804 break;
5805
5806 }
5808 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5809 std::map<std::string, std::map<std::string, int>> x0;
5812 if(is_row_selected){
5813 row[j]=x0;
5814
5815 }
5816 break;
5817
5818 }
5820 unsigned int total_size0=CYCLUS_SHA1_SIZE;
5821 std::map<std::string, std::map<std::string, int>> x0;
5824 if(is_row_selected){
5825 row[j]=x0;
5826
5827 }
5828 break;
5829
5830 }
5833 unsigned int total_size0=H5Tget_size(fieldtype0);
5849 size_t nullpos3elemsecondkey;
5854 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> x0;
5855 x0=std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>(fieldlen0);
5856 for(unsigned int k0=0;k0<fieldlen0;++k0){
5857 std::pair<std::pair<double, double>, std::map<std::string, double>> x1elem;
5858 std::pair<double, double> x2elemfirst;
5859 double x3elemfirstfirst;
5860 x3elemfirstfirst=*reinterpret_cast<double*>(buf+offset+total_size1elem*k0);
5861 double x3elemfirstsecond;
5862 x3elemfirstsecond=*reinterpret_cast<double*>(buf+offset+total_size1elem*k0+total_size3elemfirstfirst);
5864 std::map<std::string, double> x2elemsecond;
5866 std::string x3elemsecondkey;
5869 if(nullpos3elemsecondkey!=std::string::npos){
5871
5872 }
5873 double x3elemsecondval;
5876
5877 }
5878 x1elem=std::make_pair(x2elemfirst, x2elemsecond);
5879 x0[k0]=x1elem;
5880
5881 }
5882 is_row_selected=CmpConds<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>(&x0, &(field_conds[qr.fields[j]]));
5883 if(is_row_selected){
5884 row[j]=x0;
5885
5886 }
5896 break;
5897
5898 }
5901 unsigned int total_size0=H5Tget_size(fieldtype0);
5921 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> x0;
5922 x0=std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>(fieldlen0);
5923 for(unsigned int k0=0;k0<fieldlen0;++k0){
5924 std::pair<std::pair<double, double>, std::map<std::string, double>> x1elem;
5925 std::pair<double, double> x2elemfirst;
5926 double x3elemfirstfirst;
5927 x3elemfirstfirst=*reinterpret_cast<double*>(buf+offset+total_size1elem*k0);
5928 double x3elemfirstsecond;
5929 x3elemfirstsecond=*reinterpret_cast<double*>(buf+offset+total_size1elem*k0+total_size3elemfirstfirst);
5931 std::map<std::string, double> x2elemsecond;
5933 std::string x3elemsecondkey;
5935 double x3elemsecondval;
5938
5939 }
5940 x1elem=std::make_pair(x2elemfirst, x2elemsecond);
5941 x0[k0]=x1elem;
5942
5943 }
5944 is_row_selected=CmpConds<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>(&x0, &(field_conds[qr.fields[j]]));
5945 if(is_row_selected){
5946 row[j]=x0;
5947
5948 }
5958 break;
5959
5960 }
5963 unsigned int total_size0=H5Tget_size(fieldtype0);
5975 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> x0;
5976 x0=std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>(fieldlen0);
5977 for(unsigned int k0=0;k0<fieldlen0;++k0){
5978 std::pair<std::pair<double, double>, std::map<std::string, double>> x1elem;
5979 std::pair<double, double> x2elemfirst;
5980 double x3elemfirstfirst;
5981 x3elemfirstfirst=*reinterpret_cast<double*>(buf+offset+total_size1elem*k0);
5982 double x3elemfirstsecond;
5983 x3elemfirstsecond=*reinterpret_cast<double*>(buf+offset+total_size1elem*k0+total_size3elemfirstfirst);
5985 std::map<std::string, double> x2elemsecond;
5987 x1elem=std::make_pair(x2elemfirst, x2elemsecond);
5988 x0[k0]=x1elem;
5989
5990 }
5991 is_row_selected=CmpConds<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>(&x0, &(field_conds[qr.fields[j]]));
5992 if(is_row_selected){
5993 row[j]=x0;
5994
5995 }
6001 break;
6002
6003 }
6006 unsigned int total_size0=H5Tget_size(fieldtype0);
6018 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> x0;
6019 x0=std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>(fieldlen0);
6020 for(unsigned int k0=0;k0<fieldlen0;++k0){
6021 std::pair<std::pair<double, double>, std::map<std::string, double>> x1elem;
6022 std::pair<double, double> x2elemfirst;
6023 double x3elemfirstfirst;
6024 x3elemfirstfirst=*reinterpret_cast<double*>(buf+offset+total_size1elem*k0);
6025 double x3elemfirstsecond;
6026 x3elemfirstsecond=*reinterpret_cast<double*>(buf+offset+total_size1elem*k0+total_size3elemfirstfirst);
6028 std::map<std::string, double> x2elemsecond;
6030 x1elem=std::make_pair(x2elemfirst, x2elemsecond);
6031 x0[k0]=x1elem;
6032
6033 }
6034 is_row_selected=CmpConds<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>(&x0, &(field_conds[qr.fields[j]]));
6035 if(is_row_selected){
6036 row[j]=x0;
6037
6038 }
6044 break;
6045
6046 }
6048 unsigned int total_size0=CYCLUS_SHA1_SIZE;
6049 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> x0;
6051 is_row_selected=CmpConds<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>(&x0, &(field_conds[qr.fields[j]]));
6052 if(is_row_selected){
6053 row[j]=x0;
6054
6055 }
6056 break;
6057
6058 }
6060 unsigned int total_size0=CYCLUS_SHA1_SIZE;
6061 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> x0;
6063 is_row_selected=CmpConds<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>(&x0, &(field_conds[qr.fields[j]]));
6064 if(is_row_selected){
6065 row[j]=x0;
6066
6067 }
6068 break;
6069
6070 }
6072 unsigned int total_size0=CYCLUS_SHA1_SIZE;
6073 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> x0;
6075 is_row_selected=CmpConds<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>(&x0, &(field_conds[qr.fields[j]]));
6076 if(is_row_selected){
6077 row[j]=x0;
6078
6079 }
6080 break;
6081
6082 }
6084 unsigned int total_size0=CYCLUS_SHA1_SIZE;
6085 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> x0;
6087 is_row_selected=CmpConds<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>(&x0, &(field_conds[qr.fields[j]]));
6088 if(is_row_selected){
6089 row[j]=x0;
6090
6091 }
6092 break;
6093
6094 }
6097 unsigned int total_size0=H5Tget_size(fieldtype0);
6102 size_t nullpos2secondfirst;
6105 size_t nullpos2secondsecond;
6108 std::pair<int, std::pair<std::string, std::string>> x0;
6109 int x1first;
6110 x1first=*reinterpret_cast<int*>(buf+offset);
6111 std::pair<std::string, std::string> x1second;
6112 std::string x2secondfirst;
6115 if(nullpos2secondfirst!=std::string::npos){
6117
6118 }
6119 std::string x2secondsecond;
6122 if(nullpos2secondsecond!=std::string::npos){
6124
6125 }
6126 x1second=std::make_pair(x2secondfirst, x2secondsecond);
6127 x0=std::make_pair(x1first, x1second);
6129 if(is_row_selected){
6130 row[j]=x0;
6131
6132 }
6138 break;
6139
6140 }
6143 unsigned int total_size0=H5Tget_size(fieldtype0);
6150 size_t nullpos2secondsecond;
6153 std::pair<int, std::pair<std::string, std::string>> x0;
6154 int x1first;
6155 x1first=*reinterpret_cast<int*>(buf+offset);
6156 std::pair<std::string, std::string> x1second;
6157 std::string x2secondfirst;
6159 std::string x2secondsecond;
6162 if(nullpos2secondsecond!=std::string::npos){
6164
6165 }
6166 x1second=std::make_pair(x2secondfirst, x2secondsecond);
6167 x0=std::make_pair(x1first, x1second);
6169 if(is_row_selected){
6170 row[j]=x0;
6171
6172 }
6178 break;
6179
6180 }
6183 unsigned int total_size0=H5Tget_size(fieldtype0);
6188 size_t nullpos2secondfirst;
6193 std::pair<int, std::pair<std::string, std::string>> x0;
6194 int x1first;
6195 x1first=*reinterpret_cast<int*>(buf+offset);
6196 std::pair<std::string, std::string> x1second;
6197 std::string x2secondfirst;
6200 if(nullpos2secondfirst!=std::string::npos){
6202
6203 }
6204 std::string x2secondsecond;
6206 x1second=std::make_pair(x2secondfirst, x2secondsecond);
6207 x0=std::make_pair(x1first, x1second);
6209 if(is_row_selected){
6210 row[j]=x0;
6211
6212 }
6218 break;
6219
6220 }
6223 unsigned int total_size0=H5Tget_size(fieldtype0);
6232 std::pair<int, std::pair<std::string, std::string>> x0;
6233 int x1first;
6234 x1first=*reinterpret_cast<int*>(buf+offset);
6235 std::pair<std::string, std::string> x1second;
6236 std::string x2secondfirst;
6238 std::string x2secondsecond;
6240 x1second=std::make_pair(x2secondfirst, x2secondsecond);
6241 x0=std::make_pair(x1first, x1second);
6243 if(is_row_selected){
6244 row[j]=x0;
6245
6246 }
6252 break;
6253
6254 }
6255 case PAIR_DOUBLE_DOUBLE: {
6257 unsigned int total_size0=H5Tget_size(fieldtype0);
6262 std::pair<double, double> x0;
6263 double x1first;
6264 x1first=*reinterpret_cast<double*>(buf+offset);
6265 double x1second;
6266 x1second=*reinterpret_cast<double*>(buf+offset+total_size1first);
6267 x0=std::make_pair(x1first, x1second);
6269 if(is_row_selected){
6270 row[j]=x0;
6271
6272 }
6276 break;
6277
6278 }
6281 unsigned int total_size0=H5Tget_size(fieldtype0);
6293 size_t nullpos2secondkey;
6298 std::pair<std::pair<double, double>, std::map<std::string, double>> x0;
6299 std::pair<double, double> x1first;
6300 double x2firstfirst;
6301 x2firstfirst=*reinterpret_cast<double*>(buf+offset);
6302 double x2firstsecond;
6303 x2firstsecond=*reinterpret_cast<double*>(buf+offset+total_size2firstfirst);
6304 x1first=std::make_pair(x2firstfirst, x2firstsecond);
6305 std::map<std::string, double> x1second;
6306 for(unsigned int k1second=0;k1second<fieldlen1second;++k1second){
6307 std::string x2secondkey;
6309 nullpos2secondkey=x2secondkey.find('\0');
6310 if(nullpos2secondkey!=std::string::npos){
6312
6313 }
6314 double x2secondval;
6317
6318 }
6319 x0=std::make_pair(x1first, x1second);
6320 is_row_selected=CmpConds<std::pair<std::pair<double, double>, std::map<std::string, double>>>(&x0, &(field_conds[qr.fields[j]]));
6321 if(is_row_selected){
6322 row[j]=x0;
6323
6324 }
6333 break;
6334
6335 }
6338 unsigned int total_size0=H5Tget_size(fieldtype0);
6354 std::pair<std::pair<double, double>, std::map<std::string, double>> x0;
6355 std::pair<double, double> x1first;
6356 double x2firstfirst;
6357 x2firstfirst=*reinterpret_cast<double*>(buf+offset);
6358 double x2firstsecond;
6359 x2firstsecond=*reinterpret_cast<double*>(buf+offset+total_size2firstfirst);
6360 x1first=std::make_pair(x2firstfirst, x2firstsecond);
6361 std::map<std::string, double> x1second;
6362 for(unsigned int k1second=0;k1second<fieldlen1second;++k1second){
6363 std::string x2secondkey;
6365 double x2secondval;
6368
6369 }
6370 x0=std::make_pair(x1first, x1second);
6371 is_row_selected=CmpConds<std::pair<std::pair<double, double>, std::map<std::string, double>>>(&x0, &(field_conds[qr.fields[j]]));
6372 if(is_row_selected){
6373 row[j]=x0;
6374
6375 }
6384 break;
6385
6386 }
6389 unsigned int total_size0=H5Tget_size(fieldtype0);
6397 std::pair<std::pair<double, double>, std::map<std::string, double>> x0;
6398 std::pair<double, double> x1first;
6399 double x2firstfirst;
6400 x2firstfirst=*reinterpret_cast<double*>(buf+offset);
6401 double x2firstsecond;
6402 x2firstsecond=*reinterpret_cast<double*>(buf+offset+total_size2firstfirst);
6403 x1first=std::make_pair(x2firstfirst, x2firstsecond);
6404 std::map<std::string, double> x1second;
6406 x0=std::make_pair(x1first, x1second);
6407 is_row_selected=CmpConds<std::pair<std::pair<double, double>, std::map<std::string, double>>>(&x0, &(field_conds[qr.fields[j]]));
6408 if(is_row_selected){
6409 row[j]=x0;
6410
6411 }
6416 break;
6417
6418 }
6421 unsigned int total_size0=H5Tget_size(fieldtype0);
6429 std::pair<std::pair<double, double>, std::map<std::string, double>> x0;
6430 std::pair<double, double> x1first;
6431 double x2firstfirst;
6432 x2firstfirst=*reinterpret_cast<double*>(buf+offset);
6433 double x2firstsecond;
6434 x2firstsecond=*reinterpret_cast<double*>(buf+offset+total_size2firstfirst);
6435 x1first=std::make_pair(x2firstfirst, x2firstsecond);
6436 std::map<std::string, double> x1second;
6438 x0=std::make_pair(x1first, x1second);
6439 is_row_selected=CmpConds<std::pair<std::pair<double, double>, std::map<std::string, double>>>(&x0, &(field_conds[qr.fields[j]]));
6440 if(is_row_selected){
6441 row[j]=x0;
6442
6443 }
6448 break;
6449
6450 }
6453 unsigned int total_size0=H5Tget_size(fieldtype0);
6465 std::pair<double, std::map<int, double>> x0;
6466 double x1first;
6467 x1first=*reinterpret_cast<double*>(buf+offset);
6468 std::map<int, double> x1second;
6469 for(unsigned int k1second=0;k1second<fieldlen1second;++k1second){
6470 int x2secondkey;
6472 double x2secondval;
6475
6476 }
6477 x0=std::make_pair(x1first, x1second);
6479 if(is_row_selected){
6480 row[j]=x0;
6481
6482 }
6489 break;
6490
6491 }
6494 unsigned int total_size0=H5Tget_size(fieldtype0);
6498 std::pair<double, std::map<int, double>> x0;
6499 double x1first;
6500 x1first=*reinterpret_cast<double*>(buf+offset);
6501 std::map<int, double> x1second;
6503 x0=std::make_pair(x1first, x1second);
6505 if(is_row_selected){
6506 row[j]=x0;
6507
6508 }
6511 break;
6512
6513 }
6516 unsigned int total_size0=H5Tget_size(fieldtype0);
6531 std::vector<std::pair<int, std::pair<std::string, std::string>>> x0;
6532 x0=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen0);
6533 for(unsigned int k0=0;k0<fieldlen0;++k0){
6534 std::pair<int, std::pair<std::string, std::string>> x1elem;
6535 int x2elemfirst;
6536 x2elemfirst=*reinterpret_cast<int*>(buf+offset+total_size1elem*k0);
6537 std::pair<std::string, std::string> x2elemsecond;
6538 std::string x3elemsecondfirst;
6541 if(nullpos3elemsecondfirst!=std::string::npos){
6543
6544 }
6545 std::string x3elemsecondsecond;
6548 if(nullpos3elemsecondsecond!=std::string::npos){
6550
6551 }
6553 x1elem=std::make_pair(x2elemfirst, x2elemsecond);
6554 x0[k0]=x1elem;
6555
6556 }
6558 if(is_row_selected){
6559 row[j]=x0;
6560
6561 }
6568 break;
6569
6570 }
6573 unsigned int total_size0=H5Tget_size(fieldtype0);
6587 std::vector<std::pair<int, std::pair<std::string, std::string>>> x0;
6588 x0=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen0);
6589 for(unsigned int k0=0;k0<fieldlen0;++k0){
6590 std::pair<int, std::pair<std::string, std::string>> x1elem;
6591 int x2elemfirst;
6592 x2elemfirst=*reinterpret_cast<int*>(buf+offset+total_size1elem*k0);
6593 std::pair<std::string, std::string> x2elemsecond;
6594 std::string x3elemsecondfirst;
6596 std::string x3elemsecondsecond;
6599 if(nullpos3elemsecondsecond!=std::string::npos){
6601
6602 }
6604 x1elem=std::make_pair(x2elemfirst, x2elemsecond);
6605 x0[k0]=x1elem;
6606
6607 }
6609 if(is_row_selected){
6610 row[j]=x0;
6611
6612 }
6619 break;
6620
6621 }
6624 unsigned int total_size0=H5Tget_size(fieldtype0);
6638 std::vector<std::pair<int, std::pair<std::string, std::string>>> x0;
6639 x0=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen0);
6640 for(unsigned int k0=0;k0<fieldlen0;++k0){
6641 std::pair<int, std::pair<std::string, std::string>> x1elem;
6642 int x2elemfirst;
6643 x2elemfirst=*reinterpret_cast<int*>(buf+offset+total_size1elem*k0);
6644 std::pair<std::string, std::string> x2elemsecond;
6645 std::string x3elemsecondfirst;
6648 if(nullpos3elemsecondfirst!=std::string::npos){
6650
6651 }
6652 std::string x3elemsecondsecond;
6655 x1elem=std::make_pair(x2elemfirst, x2elemsecond);
6656 x0[k0]=x1elem;
6657
6658 }
6660 if(is_row_selected){
6661 row[j]=x0;
6662
6663 }
6670 break;
6671
6672 }
6675 unsigned int total_size0=H5Tget_size(fieldtype0);
6688 std::vector<std::pair<int, std::pair<std::string, std::string>>> x0;
6689 x0=std::vector<std::pair<int, std::pair<std::string, std::string>>>(fieldlen0);
6690 for(unsigned int k0=0;k0<fieldlen0;++k0){
6691 std::pair<int, std::pair<std::string, std::string>> x1elem;
6692 int x2elemfirst;
6693 x2elemfirst=*reinterpret_cast<int*>(buf+offset+total_size1elem*k0);
6694 std::pair<std::string, std::string> x2elemsecond;
6695 std::string x3elemsecondfirst;
6697 std::string x3elemsecondsecond;
6700 x1elem=std::make_pair(x2elemfirst, x2elemsecond);
6701 x0[k0]=x1elem;
6702
6703 }
6705 if(is_row_selected){
6706 row[j]=x0;
6707
6708 }
6715 break;
6716
6717 }
6719 unsigned int total_size0=CYCLUS_SHA1_SIZE;
6720 std::vector<std::pair<int, std::pair<std::string, std::string>>> x0;
6723 if(is_row_selected){
6724 row[j]=x0;
6725
6726 }
6727 break;
6728
6729 }
6731 unsigned int total_size0=CYCLUS_SHA1_SIZE;
6732 std::vector<std::pair<int, std::pair<std::string, std::string>>> x0;
6735 if(is_row_selected){
6736 row[j]=x0;
6737
6738 }
6739 break;
6740
6741 }
6743 unsigned int total_size0=CYCLUS_SHA1_SIZE;
6744 std::vector<std::pair<int, std::pair<std::string, std::string>>> x0;
6747 if(is_row_selected){
6748 row[j]=x0;
6749
6750 }
6751 break;
6752
6753 }
6755 unsigned int total_size0=CYCLUS_SHA1_SIZE;
6756 std::vector<std::pair<int, std::pair<std::string, std::string>>> x0;
6759 if(is_row_selected){
6760 row[j]=x0;
6761
6762 }
6763 break;
6764
6765 }
6768 unsigned int total_size0=H5Tget_size(fieldtype0);
6769 size_t nullpos1first;
6778 std::pair<std::string, std::vector<double>> x0;
6779 std::string x1first;
6780 x1first=std::string(buf+offset, total_size1first);
6781 nullpos1first=x1first.find('\0');
6782 if(nullpos1first!=std::string::npos){
6783 x1first.resize(nullpos1first);
6784
6785 }
6786 std::vector<double> x1second;
6787 x1second=std::vector<double>(fieldlen1second);
6788 memcpy(&x1second[0], buf+offset+total_size1first, total_size1second);
6789 x0=std::make_pair(x1first, x1second);
6791 if(is_row_selected){
6792 row[j]=x0;
6793
6794 }
6799 break;
6800
6801 }
6804 unsigned int total_size0=H5Tget_size(fieldtype0);
6813 std::pair<std::string, std::vector<double>> x0;
6814 std::string x1first;
6816 std::vector<double> x1second;
6817 x1second=std::vector<double>(fieldlen1second);
6818 memcpy(&x1second[0], buf+offset+total_size1first, total_size1second);
6819 x0=std::make_pair(x1first, x1second);
6821 if(is_row_selected){
6822 row[j]=x0;
6823
6824 }
6829 break;
6830
6831 }
6834 unsigned int total_size0=H5Tget_size(fieldtype0);
6835 size_t nullpos1first;
6839 std::pair<std::string, std::vector<double>> x0;
6840 std::string x1first;
6841 x1first=std::string(buf+offset, total_size1first);
6842 nullpos1first=x1first.find('\0');
6843 if(nullpos1first!=std::string::npos){
6844 x1first.resize(nullpos1first);
6845
6846 }
6847 std::vector<double> x1second;
6849 x0=std::make_pair(x1first, x1second);
6851 if(is_row_selected){
6852 row[j]=x0;
6853
6854 }
6857 break;
6858
6859 }
6862 unsigned int total_size0=H5Tget_size(fieldtype0);
6866 std::pair<std::string, std::vector<double>> x0;
6867 std::string x1first;
6869 std::vector<double> x1second;
6871 x0=std::make_pair(x1first, x1second);
6873 if(is_row_selected){
6874 row[j]=x0;
6875
6876 }
6879 break;
6880
6881 }
6884 unsigned int total_size0=H5Tget_size(fieldtype0);
6890 size_t nullpos2keyfirst;
6893 size_t nullpos2keysecond;
6898 std::map<std::pair<std::string, std::string>, int> x0;
6899 for(unsigned int k0=0;k0<fieldlen0;++k0){
6900 std::pair<std::string, std::string> x1key;
6901 std::string x2keyfirst;
6903 nullpos2keyfirst=x2keyfirst.find('\0');
6904 if(nullpos2keyfirst!=std::string::npos){
6906
6907 }
6908 std::string x2keysecond;
6910 nullpos2keysecond=x2keysecond.find('\0');
6911 if(nullpos2keysecond!=std::string::npos){
6913
6914 }
6915 x1key=std::make_pair(x2keyfirst, x2keysecond);
6916 int x1val;
6917 x1val=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
6918 x0[x1key]=x1val;
6919
6920 }
6922 if(is_row_selected){
6923 row[j]=x0;
6924
6925 }
6932 break;
6933
6934 }
6937 unsigned int total_size0=H5Tget_size(fieldtype0);
6943 size_t nullpos2keyfirst;
6950 std::map<std::pair<std::string, std::string>, int> x0;
6951 for(unsigned int k0=0;k0<fieldlen0;++k0){
6952 std::pair<std::string, std::string> x1key;
6953 std::string x2keyfirst;
6955 nullpos2keyfirst=x2keyfirst.find('\0');
6956 if(nullpos2keyfirst!=std::string::npos){
6958
6959 }
6960 std::string x2keysecond;
6962 x1key=std::make_pair(x2keyfirst, x2keysecond);
6963 int x1val;
6964 x1val=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
6965 x0[x1key]=x1val;
6966
6967 }
6969 if(is_row_selected){
6970 row[j]=x0;
6971
6972 }
6979 break;
6980
6981 }
6984 unsigned int total_size0=H5Tget_size(fieldtype0);
6992 size_t nullpos2keysecond;
6997 std::map<std::pair<std::string, std::string>, int> x0;
6998 for(unsigned int k0=0;k0<fieldlen0;++k0){
6999 std::pair<std::string, std::string> x1key;
7000 std::string x2keyfirst;
7002 std::string x2keysecond;
7004 nullpos2keysecond=x2keysecond.find('\0');
7005 if(nullpos2keysecond!=std::string::npos){
7007
7008 }
7009 x1key=std::make_pair(x2keyfirst, x2keysecond);
7010 int x1val;
7011 x1val=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
7012 x0[x1key]=x1val;
7013
7014 }
7016 if(is_row_selected){
7017 row[j]=x0;
7018
7019 }
7026 break;
7027
7028 }
7031 unsigned int total_size0=H5Tget_size(fieldtype0);
7043 std::map<std::pair<std::string, std::string>, int> x0;
7044 for(unsigned int k0=0;k0<fieldlen0;++k0){
7045 std::pair<std::string, std::string> x1key;
7046 std::string x2keyfirst;
7048 std::string x2keysecond;
7050 x1key=std::make_pair(x2keyfirst, x2keysecond);
7051 int x1val;
7052 x1val=*reinterpret_cast<int*>(buf+offset+(total_size1key+total_size1val)*k0+total_size1key);
7053 x0[x1key]=x1val;
7054
7055 }
7057 if(is_row_selected){
7058 row[j]=x0;
7059
7060 }
7067 break;
7068
7069 }
7071 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7072 std::map<std::pair<std::string, std::string>, int> x0;
7075 if(is_row_selected){
7076 row[j]=x0;
7077
7078 }
7079 break;
7080
7081 }
7083 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7084 std::map<std::pair<std::string, std::string>, int> x0;
7087 if(is_row_selected){
7088 row[j]=x0;
7089
7090 }
7091 break;
7092
7093 }
7095 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7096 std::map<std::pair<std::string, std::string>, int> x0;
7099 if(is_row_selected){
7100 row[j]=x0;
7101
7102 }
7103 break;
7104
7105 }
7107 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7108 std::map<std::pair<std::string, std::string>, int> x0;
7111 if(is_row_selected){
7112 row[j]=x0;
7113
7114 }
7115 break;
7116
7117 }
7120 unsigned int total_size0=H5Tget_size(fieldtype0);
7124 size_t nullpos1key;
7132 size_t nullpos2valkey;
7137 std::map<std::string, std::map<std::string, double>> x0;
7138 for(unsigned int k0=0;k0<fieldlen0;++k0){
7139 std::string x1key;
7140 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
7141 nullpos1key=x1key.find('\0');
7142 if(nullpos1key!=std::string::npos){
7143 x1key.resize(nullpos1key);
7144
7145 }
7146 std::map<std::string, double> x1val;
7147 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
7148 std::string x2valkey;
7150 nullpos2valkey=x2valkey.find('\0');
7151 if(nullpos2valkey!=std::string::npos){
7152 x2valkey.resize(nullpos2valkey);
7153
7154 }
7155 double x2valval;
7158
7159 }
7160 x0[x1key]=x1val;
7161
7162 }
7164 if(is_row_selected){
7165 row[j]=x0;
7166
7167 }
7175 break;
7176
7177 }
7180 unsigned int total_size0=H5Tget_size(fieldtype0);
7184 size_t nullpos1key;
7196 std::map<std::string, std::map<std::string, double>> x0;
7197 for(unsigned int k0=0;k0<fieldlen0;++k0){
7198 std::string x1key;
7199 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
7200 nullpos1key=x1key.find('\0');
7201 if(nullpos1key!=std::string::npos){
7202 x1key.resize(nullpos1key);
7203
7204 }
7205 std::map<std::string, double> x1val;
7206 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
7207 std::string x2valkey;
7209 double x2valval;
7212
7213 }
7214 x0[x1key]=x1val;
7215
7216 }
7218 if(is_row_selected){
7219 row[j]=x0;
7220
7221 }
7229 break;
7230
7231 }
7234 unsigned int total_size0=H5Tget_size(fieldtype0);
7238 size_t nullpos1key;
7241 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
7242 std::map<std::string, std::map<std::string, double>> x0;
7243 for(unsigned int k0=0;k0<fieldlen0;++k0){
7244 std::string x1key;
7245 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
7246 nullpos1key=x1key.find('\0');
7247 if(nullpos1key!=std::string::npos){
7248 x1key.resize(nullpos1key);
7249
7250 }
7251 std::map<std::string, double> x1val;
7253 x0[x1key]=x1val;
7254
7255 }
7257 if(is_row_selected){
7258 row[j]=x0;
7259
7260 }
7264 break;
7265
7266 }
7269 unsigned int total_size0=H5Tget_size(fieldtype0);
7273 size_t nullpos1key;
7276 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
7277 std::map<std::string, std::map<std::string, double>> x0;
7278 for(unsigned int k0=0;k0<fieldlen0;++k0){
7279 std::string x1key;
7280 x1key=std::string(buf+offset+(total_size1key+total_size1val)*k0, total_size1key);
7281 nullpos1key=x1key.find('\0');
7282 if(nullpos1key!=std::string::npos){
7283 x1key.resize(nullpos1key);
7284
7285 }
7286 std::map<std::string, double> x1val;
7288 x0[x1key]=x1val;
7289
7290 }
7292 if(is_row_selected){
7293 row[j]=x0;
7294
7295 }
7299 break;
7300
7301 }
7304 unsigned int total_size0=H5Tget_size(fieldtype0);
7315 size_t nullpos2valkey;
7320 std::map<std::string, std::map<std::string, double>> x0;
7321 for(unsigned int k0=0;k0<fieldlen0;++k0){
7322 std::string x1key;
7324 std::map<std::string, double> x1val;
7325 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
7326 std::string x2valkey;
7328 nullpos2valkey=x2valkey.find('\0');
7329 if(nullpos2valkey!=std::string::npos){
7330 x2valkey.resize(nullpos2valkey);
7331
7332 }
7333 double x2valval;
7336
7337 }
7338 x0[x1key]=x1val;
7339
7340 }
7342 if(is_row_selected){
7343 row[j]=x0;
7344
7345 }
7353 break;
7354
7355 }
7358 unsigned int total_size0=H5Tget_size(fieldtype0);
7364 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
7365 std::map<std::string, std::map<std::string, double>> x0;
7366 for(unsigned int k0=0;k0<fieldlen0;++k0){
7367 std::string x1key;
7369 std::map<std::string, double> x1val;
7371 x0[x1key]=x1val;
7372
7373 }
7375 if(is_row_selected){
7376 row[j]=x0;
7377
7378 }
7382 break;
7383
7384 }
7387 unsigned int total_size0=H5Tget_size(fieldtype0);
7402 std::map<std::string, std::map<std::string, double>> x0;
7403 for(unsigned int k0=0;k0<fieldlen0;++k0){
7404 std::string x1key;
7406 std::map<std::string, double> x1val;
7407 for(unsigned int k1val=0;k1val<fieldlen1val;++k1val){
7408 std::string x2valkey;
7410 double x2valval;
7413
7414 }
7415 x0[x1key]=x1val;
7416
7417 }
7419 if(is_row_selected){
7420 row[j]=x0;
7421
7422 }
7430 break;
7431
7432 }
7435 unsigned int total_size0=H5Tget_size(fieldtype0);
7441 unsigned int total_size1val=CYCLUS_SHA1_SIZE;
7442 std::map<std::string, std::map<std::string, double>> x0;
7443 for(unsigned int k0=0;k0<fieldlen0;++k0){
7444 std::string x1key;
7446 std::map<std::string, double> x1val;
7448 x0[x1key]=x1val;
7449
7450 }
7452 if(is_row_selected){
7453 row[j]=x0;
7454
7455 }
7459 break;
7460
7461 }
7463 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7464 std::map<std::string, std::map<std::string, double>> x0;
7467 if(is_row_selected){
7468 row[j]=x0;
7469
7470 }
7471 break;
7472
7473 }
7475 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7476 std::map<std::string, std::map<std::string, double>> x0;
7479 if(is_row_selected){
7480 row[j]=x0;
7481
7482 }
7483 break;
7484
7485 }
7487 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7488 std::map<std::string, std::map<std::string, double>> x0;
7491 if(is_row_selected){
7492 row[j]=x0;
7493
7494 }
7495 break;
7496
7497 }
7499 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7500 std::map<std::string, std::map<std::string, double>> x0;
7503 if(is_row_selected){
7504 row[j]=x0;
7505
7506 }
7507 break;
7508
7509 }
7511 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7512 std::map<std::string, std::map<std::string, double>> x0;
7515 if(is_row_selected){
7516 row[j]=x0;
7517
7518 }
7519 break;
7520
7521 }
7523 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7524 std::map<std::string, std::map<std::string, double>> x0;
7527 if(is_row_selected){
7528 row[j]=x0;
7529
7530 }
7531 break;
7532
7533 }
7535 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7536 std::map<std::string, std::map<std::string, double>> x0;
7539 if(is_row_selected){
7540 row[j]=x0;
7541
7542 }
7543 break;
7544
7545 }
7547 unsigned int total_size0=CYCLUS_SHA1_SIZE;
7548 std::map<std::string, std::map<std::string, double>> x0;
7551 if(is_row_selected){
7552 row[j]=x0;
7553
7554 }
7555 break;
7556
7557 }
7558
7559
7560 default: {
7561 throw IOError("querying column '" + qr.fields[j] + "' in table '" + \
7562 table + "' failed due to unsupported data type.");
7563 break;
7564 }
7565 }
7566 if (!is_row_selected)
7567 break;
7568 offset += col_sizes_[table][j];
7569 }
7570 if (is_row_selected) {
7571 qr.rows.push_back(row);
7572 }
7573 }
7574 delete[] buf;
7576 }
7577
7578 // close and return
7583 return qr;
7584}
7585
7586QueryResult Hdf5Back::GetTableInfo(std::string title, hid_t dset, hid_t dt) {
7587 int i;
7588 char * colname;
7590 std::string fieldname;
7591 std::string fieldtype;
7592 LoadTableTypes(title, dset, ncols);
7593 DbTypes* dbtypes = schemas_[title];
7594
7596 for (i = 0; i < ncols; ++i) {
7597 colname = H5Tget_member_name(dt, i);
7598 fieldname = std::string(colname);
7599 free(colname);
7600 qr.fields.push_back(fieldname);
7601 qr.types.push_back(dbtypes[i]);
7602 }
7603 return qr;
7604}
7605
7606void Hdf5Back::LoadTableTypes(std::string title, hsize_t ncols, Datum *d) {
7607 if (schemas_.count(title) > 0)
7608 return;
7609
7610 hid_t dset = H5Dopen2(file_, title.c_str(), H5P_DEFAULT);
7611 if(dset < 0) {
7612 CreateTable(d);
7613 return;
7614 }
7615 LoadTableTypes(title, dset, ncols);
7616 H5Dclose(dset);
7617}
7618
7619void Hdf5Back::LoadTableTypes(std::string title, hid_t dset, hsize_t ncols) {
7620 if (schemas_.count(title) > 0)
7621 return;
7622
7623 int i;
7624 hid_t subt;
7625 hid_t t = H5Dget_type(dset);
7626 schema_sizes_[title] = H5Tget_size(t);
7627 size_t* offsets = new size_t[ncols];
7628 size_t* sizes = new size_t[ncols];
7629 for (i = 0; i < ncols; ++i) {
7630 offsets[i] = H5Tget_member_offset(t, i);
7631 subt = H5Tget_member_type(t, i);
7632 sizes[i] = H5Tget_size(subt);
7633 H5Tclose(subt);
7634 }
7635 H5Tclose(t);
7636 col_offsets_[title] = offsets;
7637 col_sizes_[title] = sizes;
7638
7639 // get types from db
7640 int dbt[ncols];
7641 hid_t dbtypes_attr = H5Aopen(dset, "cyclus_dbtypes", H5P_DEFAULT);
7646
7647 // store types
7648 DbTypes* dbtypes = new DbTypes[ncols];
7649 for (i = 0; i < ncols; ++i)
7650 dbtypes[i] = static_cast<DbTypes>(dbt[i]);
7651 schemas_[title] = dbtypes;
7652}
7653
7654hid_t Hdf5Back::CreateFLStrType(int n) {
7658 opened_types_.insert(str_type);
7659 return str_type;
7660}
7661
7662std::string Hdf5Back::Name() {
7663 return path_;
7664}
7665
7666void Hdf5Back::CreateTable(Datum* d) {
7667 using std::set;
7668 using std::string;
7669 using std::vector;
7670 using std::list;
7671 using std::pair;
7672 using std::map;
7673 Datum::Vals vals = d->vals();
7674 hsize_t nvals = vals.size();
7675 Datum::Shape shape;
7676 Datum::Shapes shapes = d->shapes();
7677
7678 herr_t status;
7679 size_t dst_size = 0;
7680 size_t* dst_offset = new size_t[nvals];
7681 size_t* dst_sizes = new size_t[nvals];
7683 DbTypes* dbtypes = new DbTypes[nvals];
7684 const char* field_names[nvals];
7685 for (int i = 0; i < nvals; ++i) {
7686 dst_offset[i] = dst_size;
7687 field_names[i] = vals[i].first;
7688 const std::type_info& valtype = vals[i].second.type();
7689 if(valtype==typeid(std::map<std::string, std::map<std::string, double>>)){
7690 shape=shapes[i];
7691 if(shape.empty()||shape[0]<1&&shape[1]<1&&shape[2]<1&&shape[3]<1){
7695 item_type1key=sha1_type_;
7698 item_type2key=sha1_type_;
7705 item_type1val=sha1_type_;
7706 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
7708 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
7709
7710 }
7715 item_type0=sha1_type_;
7716 if(vldts_.count(VL_MAP_VL_STRING_VL_MAP_VL_STRING_DOUBLE)==0){
7718 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VL_MAP_VL_STRING_DOUBLE]);
7719
7720 }
7722 field_types[i]=sha1_type_;
7723
7724 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]>=1&&shape[3]<1){
7727 hsize_t shape01=shape[0];
7729 item_type1key=CreateFLStrType(shape[1]);
7731 hsize_t shape02=shape[2];
7733 item_type2key=sha1_type_;
7742 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]));
7744 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
7746 dst_sizes[i]=((shape[1]+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]))*shape[0]);
7748 opened_types_.insert(item_type2valcompound);
7749 opened_types_.insert(item_type1val);
7750 opened_types_.insert(item_type1compound);
7751 opened_types_.insert(field_types[i]);
7752
7753 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]<1&&shape[3]>=1){
7756 hsize_t shape01=shape[0];
7758 item_type1key=CreateFLStrType(shape[1]);
7761 item_type2key=sha1_type_;
7768 item_type1val=sha1_type_;
7769 if(vldts_.count(VL_MAP_STRING_DOUBLE)==0){
7771 opened_types_.insert(vldts_[VL_MAP_STRING_DOUBLE]);
7772
7773 }
7777 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
7779 dst_sizes[i]=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
7781 opened_types_.insert(item_type2valcompound);
7782 opened_types_.insert(item_type1val);
7783 opened_types_.insert(item_type1compound);
7784 opened_types_.insert(field_types[i]);
7785
7786 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]<1&&shape[3]<1){
7789 hsize_t shape01=shape[0];
7791 item_type1key=CreateFLStrType(shape[1]);
7794 item_type2key=sha1_type_;
7801 item_type1val=sha1_type_;
7802 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
7804 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
7805
7806 }
7810 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
7812 dst_sizes[i]=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
7814 opened_types_.insert(item_type2valcompound);
7815 opened_types_.insert(item_type1val);
7816 opened_types_.insert(item_type1compound);
7817 opened_types_.insert(field_types[i]);
7818
7819 }else if(shape[0]>=1&&shape[1]<1&&shape[2]>=1&&shape[3]>=1){
7822 hsize_t shape01=shape[0];
7824 item_type1key=sha1_type_;
7826 hsize_t shape02=shape[2];
7828 item_type2key=CreateFLStrType(shape[3]);
7832 item_type2valcompound=H5Tcreate(H5T_COMPOUND, shape[3]+sizeof(double));
7834 H5Tinsert(item_type2valcompound, "val", 0+shape[3], item_type2val);
7837 item_type1compound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((shape[3]+sizeof(double))*shape[2]));
7841 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((shape[3]+sizeof(double))*shape[2]))*shape[0]);
7843 opened_types_.insert(item_type2valcompound);
7844 opened_types_.insert(item_type1val);
7845 opened_types_.insert(item_type1compound);
7846 opened_types_.insert(field_types[i]);
7847
7848 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1&&shape[3]>=1){
7851 hsize_t shape01=shape[0];
7853 item_type1key=sha1_type_;
7856 item_type2key=sha1_type_;
7863 item_type1val=sha1_type_;
7864 if(vldts_.count(VL_MAP_STRING_DOUBLE)==0){
7866 opened_types_.insert(vldts_[VL_MAP_STRING_DOUBLE]);
7867
7868 }
7876 opened_types_.insert(item_type2valcompound);
7877 opened_types_.insert(item_type1val);
7878 opened_types_.insert(item_type1compound);
7879 opened_types_.insert(field_types[i]);
7880
7881 }else if(shape[0]>=1&&shape[1]<1&&shape[2]>=1&&shape[3]<1){
7884 hsize_t shape01=shape[0];
7886 item_type1key=sha1_type_;
7888 hsize_t shape02=shape[2];
7890 item_type2key=sha1_type_;
7903 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]))*shape[0]);
7905 opened_types_.insert(item_type2valcompound);
7906 opened_types_.insert(item_type1val);
7907 opened_types_.insert(item_type1compound);
7908 opened_types_.insert(field_types[i]);
7909
7910 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1&&shape[3]<1){
7913 hsize_t shape01=shape[0];
7915 item_type1key=sha1_type_;
7918 item_type2key=sha1_type_;
7925 item_type1val=sha1_type_;
7926 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
7928 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
7929
7930 }
7938 opened_types_.insert(item_type2valcompound);
7939 opened_types_.insert(item_type1val);
7940 opened_types_.insert(item_type1compound);
7941 opened_types_.insert(field_types[i]);
7942
7943 }else if(shape[0]<1&&shape[1]>=1&&shape[2]>=1&&shape[3]>=1){
7947 item_type1key=sha1_type_;
7949 hsize_t shape02=shape[2];
7951 item_type2key=sha1_type_;
7958 item_type1val=sha1_type_;
7959 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
7961 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
7962
7963 }
7968 item_type0=sha1_type_;
7969 if(vldts_.count(VL_MAP_STRING_MAP_STRING_DOUBLE)==0){
7971 opened_types_.insert(vldts_[VL_MAP_STRING_MAP_STRING_DOUBLE]);
7972
7973 }
7975 field_types[i]=sha1_type_;
7976
7977 }else if(shape[0]<1&&shape[1]<1&&shape[2]>=1&&shape[3]>=1){
7981 item_type1key=sha1_type_;
7983 hsize_t shape02=shape[2];
7985 item_type2key=sha1_type_;
7992 item_type1val=sha1_type_;
7993 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
7995 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
7996
7997 }
8002 item_type0=sha1_type_;
8003 if(vldts_.count(VL_MAP_VL_STRING_MAP_STRING_DOUBLE)==0){
8005 opened_types_.insert(vldts_[VL_MAP_VL_STRING_MAP_STRING_DOUBLE]);
8006
8007 }
8009 field_types[i]=sha1_type_;
8010
8011 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1&&shape[3]>=1){
8015 item_type1key=sha1_type_;
8018 item_type2key=sha1_type_;
8025 item_type1val=sha1_type_;
8026 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
8028 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
8029
8030 }
8035 item_type0=sha1_type_;
8036 if(vldts_.count(VL_MAP_STRING_VL_MAP_STRING_DOUBLE)==0){
8038 opened_types_.insert(vldts_[VL_MAP_STRING_VL_MAP_STRING_DOUBLE]);
8039
8040 }
8042 field_types[i]=sha1_type_;
8043
8044 }else if(shape[0]<1&&shape[1]>=1&&shape[2]>=1&&shape[3]<1){
8048 item_type1key=sha1_type_;
8050 hsize_t shape02=shape[2];
8052 item_type2key=sha1_type_;
8059 item_type1val=sha1_type_;
8060 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
8062 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
8063
8064 }
8069 item_type0=sha1_type_;
8070 if(vldts_.count(VL_MAP_STRING_MAP_VL_STRING_DOUBLE)==0){
8072 opened_types_.insert(vldts_[VL_MAP_STRING_MAP_VL_STRING_DOUBLE]);
8073
8074 }
8076 field_types[i]=sha1_type_;
8077
8078 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1&&shape[3]<1){
8082 item_type1key=sha1_type_;
8085 item_type2key=sha1_type_;
8092 item_type1val=sha1_type_;
8093 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
8095 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
8096
8097 }
8102 item_type0=sha1_type_;
8103 if(vldts_.count(VL_MAP_STRING_VL_MAP_VL_STRING_DOUBLE)==0){
8105 opened_types_.insert(vldts_[VL_MAP_STRING_VL_MAP_VL_STRING_DOUBLE]);
8106
8107 }
8109 field_types[i]=sha1_type_;
8110
8111 }else if(shape[0]<1&&shape[1]<1&&shape[2]>=1&&shape[3]<1){
8115 item_type1key=sha1_type_;
8117 hsize_t shape02=shape[2];
8119 item_type2key=sha1_type_;
8126 item_type1val=sha1_type_;
8127 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
8129 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
8130
8131 }
8136 item_type0=sha1_type_;
8137 if(vldts_.count(VL_MAP_VL_STRING_MAP_VL_STRING_DOUBLE)==0){
8139 opened_types_.insert(vldts_[VL_MAP_VL_STRING_MAP_VL_STRING_DOUBLE]);
8140
8141 }
8143 field_types[i]=sha1_type_;
8144
8145 }else if(shape[0]<1&&shape[1]<1&&shape[2]<1&&shape[3]>=1){
8149 item_type1key=sha1_type_;
8152 item_type2key=sha1_type_;
8159 item_type1val=sha1_type_;
8160 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
8162 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
8163
8164 }
8169 item_type0=sha1_type_;
8170 if(vldts_.count(VL_MAP_VL_STRING_VL_MAP_STRING_DOUBLE)==0){
8172 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VL_MAP_STRING_DOUBLE]);
8173
8174 }
8176 field_types[i]=sha1_type_;
8177
8178 }else{
8181 hsize_t shape01=shape[0];
8183 item_type1key=CreateFLStrType(shape[1]);
8185 hsize_t shape02=shape[2];
8187 item_type2key=CreateFLStrType(shape[3]);
8191 item_type2valcompound=H5Tcreate(H5T_COMPOUND, shape[3]+sizeof(double));
8193 H5Tinsert(item_type2valcompound, "val", 0+shape[3], item_type2val);
8196 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((shape[3]+sizeof(double))*shape[2]));
8198 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
8200 dst_sizes[i]=((shape[1]+((shape[3]+sizeof(double))*shape[2]))*shape[0]);
8202 opened_types_.insert(item_type2valcompound);
8203 opened_types_.insert(item_type1val);
8204 opened_types_.insert(item_type1compound);
8205 opened_types_.insert(field_types[i]);
8206
8207 }
8208
8209 }else if(valtype==typeid(bool)){
8210 shape=shapes[i];
8211 dbtypes[i]=BOOL;
8214 dst_sizes[i]=sizeof(char);
8216
8217 }else if(valtype==typeid(int)){
8218 shape=shapes[i];
8219 dbtypes[i]=INT;
8222 dst_sizes[i]=sizeof(int);
8224
8225 }else if(valtype==typeid(float)){
8226 shape=shapes[i];
8227 dbtypes[i]=FLOAT;
8230 dst_sizes[i]=sizeof(float);
8232
8233 }else if(valtype==typeid(double)){
8234 shape=shapes[i];
8235 dbtypes[i]=DOUBLE;
8238 dst_sizes[i]=sizeof(double);
8240
8241 }else if(valtype==typeid(std::string)){
8242 shape=shapes[i];
8243 if(shape.empty()||shape[0]<1){
8244 dbtypes[i]=VL_STRING;
8246 item_type0=sha1_type_;
8248 field_types[i]=sha1_type_;
8249
8250 }else{
8251 dbtypes[i]=STRING;
8253 H5Tset_size(field_types[i], shape[0]);
8255 opened_types_.insert(field_types[i]);
8256 dst_sizes[i]=sizeof(char)*shape[0];
8257
8258 }
8259
8260 }else if(valtype==typeid(cyclus::Blob)){
8261 shape=shapes[i];
8262 dbtypes[i]=BLOB;
8263 field_types[i]=sha1_type_;
8265
8266 }else if(valtype==typeid(boost::uuids::uuid)){
8267 shape=shapes[i];
8268 dbtypes[i]=UUID;
8270 item_type0=uuid_type_;
8273
8274 }else if(valtype==typeid(std::vector<int>)){
8275 shape=shapes[i];
8276 if(shape.empty()||shape[0]<1){
8281 item_type0=sha1_type_;
8282 if(vldts_.count(VL_VECTOR_INT)==0){
8284 opened_types_.insert(vldts_[VL_VECTOR_INT]);
8285
8286 }
8288 field_types[i]=sha1_type_;
8289
8290 }else{
8293 hsize_t shape01=shape[0];
8297 dst_sizes[i]=((sizeof(int))*shape[0]);
8299 opened_types_.insert(field_types[i]);
8300
8301 }
8302
8303 }else if(valtype==typeid(std::vector<float>)){
8304 shape=shapes[i];
8305 if(shape.empty()||shape[0]<1){
8310 item_type0=sha1_type_;
8311 if(vldts_.count(VL_VECTOR_FLOAT)==0){
8313 opened_types_.insert(vldts_[VL_VECTOR_FLOAT]);
8314
8315 }
8317 field_types[i]=sha1_type_;
8318
8319 }else{
8322 hsize_t shape01=shape[0];
8326 dst_sizes[i]=((sizeof(float))*shape[0]);
8328 opened_types_.insert(field_types[i]);
8329
8330 }
8331
8332 }else if(valtype==typeid(std::vector<double>)){
8333 shape=shapes[i];
8334 if(shape.empty()||shape[0]<1){
8339 item_type0=sha1_type_;
8340 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
8342 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
8343
8344 }
8346 field_types[i]=sha1_type_;
8347
8348 }else{
8351 hsize_t shape01=shape[0];
8355 dst_sizes[i]=((sizeof(double))*shape[0]);
8357 opened_types_.insert(field_types[i]);
8358
8359 }
8360
8361 }else if(valtype==typeid(std::vector<std::string>)){
8362 shape=shapes[i];
8363 if(shape.empty()||shape[0]<1&&shape[1]<1){
8367 item_type1elem=sha1_type_;
8368 item_type0=sha1_type_;
8369 if(vldts_.count(VL_VECTOR_VL_STRING)==0){
8371 opened_types_.insert(vldts_[VL_VECTOR_VL_STRING]);
8372
8373 }
8375 field_types[i]=sha1_type_;
8376
8377 }else if(shape[0]<1&&shape[1]>=1){
8381 item_type1elem=sha1_type_;
8382 item_type0=sha1_type_;
8383 if(vldts_.count(VL_VECTOR_STRING)==0){
8385 opened_types_.insert(vldts_[VL_VECTOR_STRING]);
8386
8387 }
8389 field_types[i]=sha1_type_;
8390
8391 }else if(shape[0]>=1&&shape[1]<1){
8394 hsize_t shape01=shape[0];
8396 item_type1elem=sha1_type_;
8398 dst_sizes[i]=((CYCLUS_SHA1_SIZE)*shape[0]);
8400 opened_types_.insert(field_types[i]);
8401
8402 }else{
8405 hsize_t shape01=shape[0];
8407 item_type1elem=CreateFLStrType(shape[1]);
8409 dst_sizes[i]=((shape[1])*shape[0]);
8411 opened_types_.insert(field_types[i]);
8412
8413 }
8414
8415 }else if(valtype==typeid(std::vector<cyclus::Blob>)){
8416 shape=shapes[i];
8417 if(shape.empty()||shape[0]<1&&shape[1]<1){
8421 item_type1elem=sha1_type_;
8422 item_type0=sha1_type_;
8423 if(vldts_.count(VL_VECTOR_BLOB)==0){
8425 opened_types_.insert(vldts_[VL_VECTOR_BLOB]);
8426
8427 }
8429 field_types[i]=sha1_type_;
8430
8431 }else{
8434 hsize_t shape01=shape[0];
8436 item_type1elem=sha1_type_;
8438 dst_sizes[i]=((CYCLUS_SHA1_SIZE)*shape[0]);
8440 opened_types_.insert(field_types[i]);
8441
8442 }
8443
8444 }else if(valtype==typeid(std::vector<boost::uuids::uuid>)){
8445 shape=shapes[i];
8446 if(shape.empty()||shape[0]<1){
8450 item_type1elem=uuid_type_;
8451 item_type0=sha1_type_;
8452 if(vldts_.count(VL_VECTOR_UUID)==0){
8454 opened_types_.insert(vldts_[VL_VECTOR_UUID]);
8455
8456 }
8458 field_types[i]=sha1_type_;
8459
8460 }else{
8463 hsize_t shape01=shape[0];
8465 item_type1elem=uuid_type_;
8467 dst_sizes[i]=((CYCLUS_UUID_SIZE)*shape[0]);
8469 opened_types_.insert(field_types[i]);
8470
8471 }
8472
8473 }else if(valtype==typeid(std::set<int>)){
8474 shape=shapes[i];
8475 if(shape.empty()||shape[0]<1){
8480 item_type0=sha1_type_;
8481 if(vldts_.count(VL_SET_INT)==0){
8483 opened_types_.insert(vldts_[VL_SET_INT]);
8484
8485 }
8487 field_types[i]=sha1_type_;
8488
8489 }else{
8490 dbtypes[i]=SET_INT;
8492 hsize_t shape01=shape[0];
8496 dst_sizes[i]=((sizeof(int))*shape[0]);
8498 opened_types_.insert(field_types[i]);
8499
8500 }
8501
8502 }else if(valtype==typeid(std::set<float>)){
8503 shape=shapes[i];
8504 if(shape.empty()||shape[0]<1){
8509 item_type0=sha1_type_;
8510 if(vldts_.count(VL_SET_FLOAT)==0){
8512 opened_types_.insert(vldts_[VL_SET_FLOAT]);
8513
8514 }
8516 field_types[i]=sha1_type_;
8517
8518 }else{
8519 dbtypes[i]=SET_FLOAT;
8521 hsize_t shape01=shape[0];
8525 dst_sizes[i]=((sizeof(float))*shape[0]);
8527 opened_types_.insert(field_types[i]);
8528
8529 }
8530
8531 }else if(valtype==typeid(std::set<double>)){
8532 shape=shapes[i];
8533 if(shape.empty()||shape[0]<1){
8538 item_type0=sha1_type_;
8539 if(vldts_.count(VL_SET_DOUBLE)==0){
8541 opened_types_.insert(vldts_[VL_SET_DOUBLE]);
8542
8543 }
8545 field_types[i]=sha1_type_;
8546
8547 }else{
8550 hsize_t shape01=shape[0];
8554 dst_sizes[i]=((sizeof(double))*shape[0]);
8556 opened_types_.insert(field_types[i]);
8557
8558 }
8559
8560 }else if(valtype==typeid(std::set<std::string>)){
8561 shape=shapes[i];
8562 if(shape.empty()||shape[0]<1&&shape[1]<1){
8566 item_type1elem=sha1_type_;
8567 item_type0=sha1_type_;
8568 if(vldts_.count(VL_SET_VL_STRING)==0){
8570 opened_types_.insert(vldts_[VL_SET_VL_STRING]);
8571
8572 }
8574 field_types[i]=sha1_type_;
8575
8576 }else if(shape[0]<1&&shape[1]>=1){
8580 item_type1elem=sha1_type_;
8581 item_type0=sha1_type_;
8582 if(vldts_.count(VL_SET_STRING)==0){
8584 opened_types_.insert(vldts_[VL_SET_STRING]);
8585
8586 }
8588 field_types[i]=sha1_type_;
8589
8590 }else if(shape[0]>=1&&shape[1]<1){
8593 hsize_t shape01=shape[0];
8595 item_type1elem=sha1_type_;
8597 dst_sizes[i]=((CYCLUS_SHA1_SIZE)*shape[0]);
8599 opened_types_.insert(field_types[i]);
8600
8601 }else{
8604 hsize_t shape01=shape[0];
8606 item_type1elem=CreateFLStrType(shape[1]);
8608 dst_sizes[i]=((shape[1])*shape[0]);
8610 opened_types_.insert(field_types[i]);
8611
8612 }
8613
8614 }else if(valtype==typeid(std::set<cyclus::Blob>)){
8615 shape=shapes[i];
8616 if(shape.empty()||shape[0]<1&&shape[1]<1){
8620 item_type1elem=sha1_type_;
8621 item_type0=sha1_type_;
8622 if(vldts_.count(VL_SET_BLOB)==0){
8624 opened_types_.insert(vldts_[VL_SET_BLOB]);
8625
8626 }
8628 field_types[i]=sha1_type_;
8629
8630 }else{
8631 dbtypes[i]=SET_BLOB;
8633 hsize_t shape01=shape[0];
8635 item_type1elem=sha1_type_;
8637 dst_sizes[i]=((CYCLUS_SHA1_SIZE)*shape[0]);
8639 opened_types_.insert(field_types[i]);
8640
8641 }
8642
8643 }else if(valtype==typeid(std::set<boost::uuids::uuid>)){
8644 shape=shapes[i];
8645 if(shape.empty()||shape[0]<1){
8649 item_type1elem=uuid_type_;
8650 item_type0=sha1_type_;
8651 if(vldts_.count(VL_SET_UUID)==0){
8653 opened_types_.insert(vldts_[VL_SET_UUID]);
8654
8655 }
8657 field_types[i]=sha1_type_;
8658
8659 }else{
8660 dbtypes[i]=SET_UUID;
8662 hsize_t shape01=shape[0];
8664 item_type1elem=uuid_type_;
8666 dst_sizes[i]=((CYCLUS_UUID_SIZE)*shape[0]);
8668 opened_types_.insert(field_types[i]);
8669
8670 }
8671
8672 }else if(valtype==typeid(std::list<bool>)){
8673 shape=shapes[i];
8674 if(shape.empty()||shape[0]<1){
8679 item_type0=sha1_type_;
8680 if(vldts_.count(VL_LIST_BOOL)==0){
8682 opened_types_.insert(vldts_[VL_LIST_BOOL]);
8683
8684 }
8686 field_types[i]=sha1_type_;
8687
8688 }else{
8689 dbtypes[i]=LIST_BOOL;
8691 hsize_t shape01=shape[0];
8695 dst_sizes[i]=((sizeof(char))*shape[0]);
8697 opened_types_.insert(field_types[i]);
8698
8699 }
8700
8701 }else if(valtype==typeid(std::list<int>)){
8702 shape=shapes[i];
8703 if(shape.empty()||shape[0]<1){
8708 item_type0=sha1_type_;
8709 if(vldts_.count(VL_LIST_INT)==0){
8711 opened_types_.insert(vldts_[VL_LIST_INT]);
8712
8713 }
8715 field_types[i]=sha1_type_;
8716
8717 }else{
8718 dbtypes[i]=LIST_INT;
8720 hsize_t shape01=shape[0];
8724 dst_sizes[i]=((sizeof(int))*shape[0]);
8726 opened_types_.insert(field_types[i]);
8727
8728 }
8729
8730 }else if(valtype==typeid(std::list<float>)){
8731 shape=shapes[i];
8732 if(shape.empty()||shape[0]<1){
8737 item_type0=sha1_type_;
8738 if(vldts_.count(VL_LIST_FLOAT)==0){
8740 opened_types_.insert(vldts_[VL_LIST_FLOAT]);
8741
8742 }
8744 field_types[i]=sha1_type_;
8745
8746 }else{
8749 hsize_t shape01=shape[0];
8753 dst_sizes[i]=((sizeof(float))*shape[0]);
8755 opened_types_.insert(field_types[i]);
8756
8757 }
8758
8759 }else if(valtype==typeid(std::list<double>)){
8760 shape=shapes[i];
8761 if(shape.empty()||shape[0]<1){
8766 item_type0=sha1_type_;
8767 if(vldts_.count(VL_LIST_DOUBLE)==0){
8769 opened_types_.insert(vldts_[VL_LIST_DOUBLE]);
8770
8771 }
8773 field_types[i]=sha1_type_;
8774
8775 }else{
8778 hsize_t shape01=shape[0];
8782 dst_sizes[i]=((sizeof(double))*shape[0]);
8784 opened_types_.insert(field_types[i]);
8785
8786 }
8787
8788 }else if(valtype==typeid(std::list<std::string>)){
8789 shape=shapes[i];
8790 if(shape.empty()||shape[0]<1&&shape[1]<1){
8794 item_type1elem=sha1_type_;
8795 item_type0=sha1_type_;
8796 if(vldts_.count(VL_LIST_VL_STRING)==0){
8798 opened_types_.insert(vldts_[VL_LIST_VL_STRING]);
8799
8800 }
8802 field_types[i]=sha1_type_;
8803
8804 }else if(shape[0]<1&&shape[1]>=1){
8808 item_type1elem=sha1_type_;
8809 item_type0=sha1_type_;
8810 if(vldts_.count(VL_LIST_STRING)==0){
8812 opened_types_.insert(vldts_[VL_LIST_STRING]);
8813
8814 }
8816 field_types[i]=sha1_type_;
8817
8818 }else if(shape[0]>=1&&shape[1]<1){
8821 hsize_t shape01=shape[0];
8823 item_type1elem=sha1_type_;
8825 dst_sizes[i]=((CYCLUS_SHA1_SIZE)*shape[0]);
8827 opened_types_.insert(field_types[i]);
8828
8829 }else{
8832 hsize_t shape01=shape[0];
8834 item_type1elem=CreateFLStrType(shape[1]);
8836 dst_sizes[i]=((shape[1])*shape[0]);
8838 opened_types_.insert(field_types[i]);
8839
8840 }
8841
8842 }else if(valtype==typeid(std::list<cyclus::Blob>)){
8843 shape=shapes[i];
8844 if(shape.empty()||shape[0]<1&&shape[1]<1){
8848 item_type1elem=sha1_type_;
8849 item_type0=sha1_type_;
8850 if(vldts_.count(VL_LIST_BLOB)==0){
8852 opened_types_.insert(vldts_[VL_LIST_BLOB]);
8853
8854 }
8856 field_types[i]=sha1_type_;
8857
8858 }else{
8859 dbtypes[i]=LIST_BLOB;
8861 hsize_t shape01=shape[0];
8863 item_type1elem=sha1_type_;
8865 dst_sizes[i]=((CYCLUS_SHA1_SIZE)*shape[0]);
8867 opened_types_.insert(field_types[i]);
8868
8869 }
8870
8871 }else if(valtype==typeid(std::list<boost::uuids::uuid>)){
8872 shape=shapes[i];
8873 if(shape.empty()||shape[0]<1){
8877 item_type1elem=uuid_type_;
8878 item_type0=sha1_type_;
8879 if(vldts_.count(VL_LIST_UUID)==0){
8881 opened_types_.insert(vldts_[VL_LIST_UUID]);
8882
8883 }
8885 field_types[i]=sha1_type_;
8886
8887 }else{
8888 dbtypes[i]=LIST_UUID;
8890 hsize_t shape01=shape[0];
8892 item_type1elem=uuid_type_;
8894 dst_sizes[i]=((CYCLUS_UUID_SIZE)*shape[0]);
8896 opened_types_.insert(field_types[i]);
8897
8898 }
8899
8900 }else if(valtype==typeid(std::pair<int, bool>)){
8901 shape=shapes[i];
8909 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(char));
8911 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type1second);
8912 dst_sizes[i]=((sizeof(int)+sizeof(char)));
8914 opened_types_.insert(field_types[i]);
8915
8916 }else if(valtype==typeid(std::pair<int, int>)){
8917 shape=shapes[i];
8925 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(int));
8927 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type1second);
8928 dst_sizes[i]=((sizeof(int)+sizeof(int)));
8930 opened_types_.insert(field_types[i]);
8931
8932 }else if(valtype==typeid(std::pair<int, float>)){
8933 shape=shapes[i];
8941 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(float));
8943 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type1second);
8944 dst_sizes[i]=((sizeof(int)+sizeof(float)));
8946 opened_types_.insert(field_types[i]);
8947
8948 }else if(valtype==typeid(std::pair<int, double>)){
8949 shape=shapes[i];
8957 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
8959 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type1second);
8960 dst_sizes[i]=((sizeof(int)+sizeof(double)));
8962 opened_types_.insert(field_types[i]);
8963
8964 }else if(valtype==typeid(std::pair<int, std::string>)){
8965 shape=shapes[i];
8966 if(shape.empty()||shape[2]<1){
8972 item_type1second=sha1_type_;
8976 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type1second);
8977 dst_sizes[i]=((sizeof(int)+CYCLUS_SHA1_SIZE));
8979 opened_types_.insert(field_types[i]);
8980
8981 }else{
8987 item_type1second=CreateFLStrType(shape[2]);
8989 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+shape[2]);
8991 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type1second);
8992 dst_sizes[i]=((sizeof(int)+shape[2]));
8994 opened_types_.insert(field_types[i]);
8995
8996 }
8997
8998 }else if(valtype==typeid(std::pair<int, cyclus::Blob>)){
8999 shape=shapes[i];
9005 item_type1second=sha1_type_;
9009 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type1second);
9010 dst_sizes[i]=((sizeof(int)+CYCLUS_SHA1_SIZE));
9012 opened_types_.insert(field_types[i]);
9013
9014 }else if(valtype==typeid(std::pair<int, boost::uuids::uuid>)){
9015 shape=shapes[i];
9021 item_type1second=uuid_type_;
9025 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type1second);
9026 dst_sizes[i]=((sizeof(int)+CYCLUS_UUID_SIZE));
9028 opened_types_.insert(field_types[i]);
9029
9030 }else if(valtype==typeid(std::pair<std::string, bool>)){
9031 shape=shapes[i];
9032 if(shape.empty()||shape[1]<1){
9036 item_type1first=sha1_type_;
9043 dst_sizes[i]=((CYCLUS_SHA1_SIZE+sizeof(char)));
9045 opened_types_.insert(field_types[i]);
9046
9047 }else{
9051 item_type1first=CreateFLStrType(shape[1]);
9055 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+sizeof(char));
9057 H5Tinsert(item_type1compound, "second", 0+shape[1], item_type1second);
9058 dst_sizes[i]=((shape[1]+sizeof(char)));
9060 opened_types_.insert(field_types[i]);
9061
9062 }
9063
9064 }else if(valtype==typeid(std::pair<std::string, int>)){
9065 shape=shapes[i];
9066 if(shape.empty()||shape[1]<1){
9070 item_type1first=sha1_type_;
9077 dst_sizes[i]=((CYCLUS_SHA1_SIZE+sizeof(int)));
9079 opened_types_.insert(field_types[i]);
9080
9081 }else{
9085 item_type1first=CreateFLStrType(shape[1]);
9089 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+sizeof(int));
9091 H5Tinsert(item_type1compound, "second", 0+shape[1], item_type1second);
9092 dst_sizes[i]=((shape[1]+sizeof(int)));
9094 opened_types_.insert(field_types[i]);
9095
9096 }
9097
9098 }else if(valtype==typeid(std::pair<std::string, float>)){
9099 shape=shapes[i];
9100 if(shape.empty()||shape[1]<1){
9104 item_type1first=sha1_type_;
9111 dst_sizes[i]=((CYCLUS_SHA1_SIZE+sizeof(float)));
9113 opened_types_.insert(field_types[i]);
9114
9115 }else{
9119 item_type1first=CreateFLStrType(shape[1]);
9123 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+sizeof(float));
9125 H5Tinsert(item_type1compound, "second", 0+shape[1], item_type1second);
9126 dst_sizes[i]=((shape[1]+sizeof(float)));
9128 opened_types_.insert(field_types[i]);
9129
9130 }
9131
9132 }else if(valtype==typeid(std::pair<std::string, double>)){
9133 shape=shapes[i];
9134 if(shape.empty()||shape[1]<1){
9138 item_type1first=sha1_type_;
9145 dst_sizes[i]=((CYCLUS_SHA1_SIZE+sizeof(double)));
9147 opened_types_.insert(field_types[i]);
9148
9149 }else{
9153 item_type1first=CreateFLStrType(shape[1]);
9157 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+sizeof(double));
9159 H5Tinsert(item_type1compound, "second", 0+shape[1], item_type1second);
9160 dst_sizes[i]=((shape[1]+sizeof(double)));
9162 opened_types_.insert(field_types[i]);
9163
9164 }
9165
9166 }else if(valtype==typeid(std::pair<std::string, std::string>)){
9167 shape=shapes[i];
9168 if(shape.empty()||shape[1]<1&&shape[2]<1){
9172 item_type1first=sha1_type_;
9174 item_type1second=sha1_type_;
9181 opened_types_.insert(field_types[i]);
9182
9183 }else if(shape[1]>=1&&shape[2]<1){
9187 item_type1first=CreateFLStrType(shape[1]);
9189 item_type1second=sha1_type_;
9193 H5Tinsert(item_type1compound, "second", 0+shape[1], item_type1second);
9194 dst_sizes[i]=((shape[1]+CYCLUS_SHA1_SIZE));
9196 opened_types_.insert(field_types[i]);
9197
9198 }else if(shape[1]<1&&shape[2]>=1){
9202 item_type1first=sha1_type_;
9204 item_type1second=CreateFLStrType(shape[2]);
9209 dst_sizes[i]=((CYCLUS_SHA1_SIZE+shape[2]));
9211 opened_types_.insert(field_types[i]);
9212
9213 }else{
9217 item_type1first=CreateFLStrType(shape[1]);
9219 item_type1second=CreateFLStrType(shape[2]);
9221 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+shape[2]);
9223 H5Tinsert(item_type1compound, "second", 0+shape[1], item_type1second);
9224 dst_sizes[i]=((shape[1]+shape[2]));
9226 opened_types_.insert(field_types[i]);
9227
9228 }
9229
9230 }else if(valtype==typeid(std::pair<std::string, cyclus::Blob>)){
9231 shape=shapes[i];
9232 if(shape.empty()||shape[1]<1&&shape[2]<1){
9236 item_type1first=sha1_type_;
9238 item_type1second=sha1_type_;
9245 opened_types_.insert(field_types[i]);
9246
9247 }else{
9251 item_type1first=CreateFLStrType(shape[1]);
9253 item_type1second=sha1_type_;
9257 H5Tinsert(item_type1compound, "second", 0+shape[1], item_type1second);
9258 dst_sizes[i]=((shape[1]+CYCLUS_SHA1_SIZE));
9260 opened_types_.insert(field_types[i]);
9261
9262 }
9263
9264 }else if(valtype==typeid(std::pair<std::string, boost::uuids::uuid>)){
9265 shape=shapes[i];
9266 if(shape.empty()||shape[1]<1){
9270 item_type1first=sha1_type_;
9272 item_type1second=uuid_type_;
9279 opened_types_.insert(field_types[i]);
9280
9281 }else{
9285 item_type1first=CreateFLStrType(shape[1]);
9287 item_type1second=uuid_type_;
9291 H5Tinsert(item_type1compound, "second", 0+shape[1], item_type1second);
9292 dst_sizes[i]=((shape[1]+CYCLUS_UUID_SIZE));
9294 opened_types_.insert(field_types[i]);
9295
9296 }
9297
9298 }else if(valtype==typeid(std::map<int, bool>)){
9299 shape=shapes[i];
9300 if(shape.empty()||shape[0]<1){
9308 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(char));
9310 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9311 item_type0=sha1_type_;
9312 if(vldts_.count(VL_MAP_INT_BOOL)==0){
9314 opened_types_.insert(vldts_[VL_MAP_INT_BOOL]);
9315
9316 }
9318 field_types[i]=sha1_type_;
9319
9320 }else{
9323 hsize_t shape01=shape[0];
9329 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(char));
9331 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9333 dst_sizes[i]=((sizeof(int)+sizeof(char))*shape[0]);
9335 opened_types_.insert(item_type1compound);
9336 opened_types_.insert(field_types[i]);
9337
9338 }
9339
9340 }else if(valtype==typeid(std::map<int, int>)){
9341 shape=shapes[i];
9342 if(shape.empty()||shape[0]<1){
9350 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(int));
9352 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9353 item_type0=sha1_type_;
9354 if(vldts_.count(VL_MAP_INT_INT)==0){
9356 opened_types_.insert(vldts_[VL_MAP_INT_INT]);
9357
9358 }
9360 field_types[i]=sha1_type_;
9361
9362 }else{
9365 hsize_t shape01=shape[0];
9371 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(int));
9373 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9375 dst_sizes[i]=((sizeof(int)+sizeof(int))*shape[0]);
9377 opened_types_.insert(item_type1compound);
9378 opened_types_.insert(field_types[i]);
9379
9380 }
9381
9382 }else if(valtype==typeid(std::map<int, float>)){
9383 shape=shapes[i];
9384 if(shape.empty()||shape[0]<1){
9392 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(float));
9394 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9395 item_type0=sha1_type_;
9396 if(vldts_.count(VL_MAP_INT_FLOAT)==0){
9398 opened_types_.insert(vldts_[VL_MAP_INT_FLOAT]);
9399
9400 }
9402 field_types[i]=sha1_type_;
9403
9404 }else{
9407 hsize_t shape01=shape[0];
9413 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(float));
9415 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9417 dst_sizes[i]=((sizeof(int)+sizeof(float))*shape[0]);
9419 opened_types_.insert(item_type1compound);
9420 opened_types_.insert(field_types[i]);
9421
9422 }
9423
9424 }else if(valtype==typeid(std::map<int, double>)){
9425 shape=shapes[i];
9426 if(shape.empty()||shape[0]<1){
9434 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
9436 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9437 item_type0=sha1_type_;
9438 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
9440 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
9441
9442 }
9444 field_types[i]=sha1_type_;
9445
9446 }else{
9449 hsize_t shape01=shape[0];
9455 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
9457 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9459 dst_sizes[i]=((sizeof(int)+sizeof(double))*shape[0]);
9461 opened_types_.insert(item_type1compound);
9462 opened_types_.insert(field_types[i]);
9463
9464 }
9465
9466 }else if(valtype==typeid(std::map<int, std::string>)){
9467 shape=shapes[i];
9468 if(shape.empty()||shape[0]<1&&shape[2]<1){
9474 item_type1val=sha1_type_;
9478 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9479 item_type0=sha1_type_;
9480 if(vldts_.count(VL_MAP_INT_VL_STRING)==0){
9482 opened_types_.insert(vldts_[VL_MAP_INT_VL_STRING]);
9483
9484 }
9486 field_types[i]=sha1_type_;
9487
9488 }else if(shape[0]<1&&shape[2]>=1){
9494 item_type1val=sha1_type_;
9498 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9499 item_type0=sha1_type_;
9500 if(vldts_.count(VL_MAP_INT_STRING)==0){
9502 opened_types_.insert(vldts_[VL_MAP_INT_STRING]);
9503
9504 }
9506 field_types[i]=sha1_type_;
9507
9508 }else if(shape[0]>=1&&shape[2]<1){
9511 hsize_t shape01=shape[0];
9515 item_type1val=sha1_type_;
9519 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9521 dst_sizes[i]=((sizeof(int)+CYCLUS_SHA1_SIZE)*shape[0]);
9523 opened_types_.insert(item_type1compound);
9524 opened_types_.insert(field_types[i]);
9525
9526 }else{
9529 hsize_t shape01=shape[0];
9533 item_type1val=CreateFLStrType(shape[2]);
9535 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+shape[2]);
9537 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9539 dst_sizes[i]=((sizeof(int)+shape[2])*shape[0]);
9541 opened_types_.insert(item_type1compound);
9542 opened_types_.insert(field_types[i]);
9543
9544 }
9545
9546 }else if(valtype==typeid(std::map<int, cyclus::Blob>)){
9547 shape=shapes[i];
9548 if(shape.empty()||shape[0]<1&&shape[2]<1){
9554 item_type1val=sha1_type_;
9558 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9559 item_type0=sha1_type_;
9560 if(vldts_.count(VL_MAP_INT_BLOB)==0){
9562 opened_types_.insert(vldts_[VL_MAP_INT_BLOB]);
9563
9564 }
9566 field_types[i]=sha1_type_;
9567
9568 }else{
9571 hsize_t shape01=shape[0];
9575 item_type1val=sha1_type_;
9579 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9581 dst_sizes[i]=((sizeof(int)+CYCLUS_SHA1_SIZE)*shape[0]);
9583 opened_types_.insert(item_type1compound);
9584 opened_types_.insert(field_types[i]);
9585
9586 }
9587
9588 }else if(valtype==typeid(std::map<int, boost::uuids::uuid>)){
9589 shape=shapes[i];
9590 if(shape.empty()||shape[0]<1){
9596 item_type1val=uuid_type_;
9600 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9601 item_type0=sha1_type_;
9602 if(vldts_.count(VL_MAP_INT_UUID)==0){
9604 opened_types_.insert(vldts_[VL_MAP_INT_UUID]);
9605
9606 }
9608 field_types[i]=sha1_type_;
9609
9610 }else{
9613 hsize_t shape01=shape[0];
9617 item_type1val=uuid_type_;
9621 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
9623 dst_sizes[i]=((sizeof(int)+CYCLUS_UUID_SIZE)*shape[0]);
9625 opened_types_.insert(item_type1compound);
9626 opened_types_.insert(field_types[i]);
9627
9628 }
9629
9630 }else if(valtype==typeid(std::map<std::string, bool>)){
9631 shape=shapes[i];
9632 if(shape.empty()||shape[0]<1&&shape[1]<1){
9636 item_type1key=sha1_type_;
9643 item_type0=sha1_type_;
9644 if(vldts_.count(VL_MAP_VL_STRING_BOOL)==0){
9646 opened_types_.insert(vldts_[VL_MAP_VL_STRING_BOOL]);
9647
9648 }
9650 field_types[i]=sha1_type_;
9651
9652 }else if(shape[0]<1&&shape[1]>=1){
9656 item_type1key=sha1_type_;
9663 item_type0=sha1_type_;
9664 if(vldts_.count(VL_MAP_STRING_BOOL)==0){
9666 opened_types_.insert(vldts_[VL_MAP_STRING_BOOL]);
9667
9668 }
9670 field_types[i]=sha1_type_;
9671
9672 }else if(shape[0]>=1&&shape[1]<1){
9675 hsize_t shape01=shape[0];
9677 item_type1key=sha1_type_;
9685 dst_sizes[i]=((CYCLUS_SHA1_SIZE+sizeof(char))*shape[0]);
9687 opened_types_.insert(item_type1compound);
9688 opened_types_.insert(field_types[i]);
9689
9690 }else{
9693 hsize_t shape01=shape[0];
9695 item_type1key=CreateFLStrType(shape[1]);
9699 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+sizeof(char));
9701 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
9703 dst_sizes[i]=((shape[1]+sizeof(char))*shape[0]);
9705 opened_types_.insert(item_type1compound);
9706 opened_types_.insert(field_types[i]);
9707
9708 }
9709
9710 }else if(valtype==typeid(std::map<std::string, int>)){
9711 shape=shapes[i];
9712 if(shape.empty()||shape[0]<1&&shape[1]<1){
9716 item_type1key=sha1_type_;
9723 item_type0=sha1_type_;
9724 if(vldts_.count(VL_MAP_VL_STRING_INT)==0){
9726 opened_types_.insert(vldts_[VL_MAP_VL_STRING_INT]);
9727
9728 }
9730 field_types[i]=sha1_type_;
9731
9732 }else if(shape[0]<1&&shape[1]>=1){
9736 item_type1key=sha1_type_;
9743 item_type0=sha1_type_;
9744 if(vldts_.count(VL_MAP_STRING_INT)==0){
9746 opened_types_.insert(vldts_[VL_MAP_STRING_INT]);
9747
9748 }
9750 field_types[i]=sha1_type_;
9751
9752 }else if(shape[0]>=1&&shape[1]<1){
9755 hsize_t shape01=shape[0];
9757 item_type1key=sha1_type_;
9765 dst_sizes[i]=((CYCLUS_SHA1_SIZE+sizeof(int))*shape[0]);
9767 opened_types_.insert(item_type1compound);
9768 opened_types_.insert(field_types[i]);
9769
9770 }else{
9773 hsize_t shape01=shape[0];
9775 item_type1key=CreateFLStrType(shape[1]);
9779 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+sizeof(int));
9781 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
9783 dst_sizes[i]=((shape[1]+sizeof(int))*shape[0]);
9785 opened_types_.insert(item_type1compound);
9786 opened_types_.insert(field_types[i]);
9787
9788 }
9789
9790 }else if(valtype==typeid(std::map<std::string, float>)){
9791 shape=shapes[i];
9792 if(shape.empty()||shape[0]<1&&shape[1]<1){
9796 item_type1key=sha1_type_;
9803 item_type0=sha1_type_;
9804 if(vldts_.count(VL_MAP_VL_STRING_FLOAT)==0){
9806 opened_types_.insert(vldts_[VL_MAP_VL_STRING_FLOAT]);
9807
9808 }
9810 field_types[i]=sha1_type_;
9811
9812 }else if(shape[0]<1&&shape[1]>=1){
9816 item_type1key=sha1_type_;
9823 item_type0=sha1_type_;
9824 if(vldts_.count(VL_MAP_STRING_FLOAT)==0){
9826 opened_types_.insert(vldts_[VL_MAP_STRING_FLOAT]);
9827
9828 }
9830 field_types[i]=sha1_type_;
9831
9832 }else if(shape[0]>=1&&shape[1]<1){
9835 hsize_t shape01=shape[0];
9837 item_type1key=sha1_type_;
9845 dst_sizes[i]=((CYCLUS_SHA1_SIZE+sizeof(float))*shape[0]);
9847 opened_types_.insert(item_type1compound);
9848 opened_types_.insert(field_types[i]);
9849
9850 }else{
9853 hsize_t shape01=shape[0];
9855 item_type1key=CreateFLStrType(shape[1]);
9859 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+sizeof(float));
9861 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
9863 dst_sizes[i]=((shape[1]+sizeof(float))*shape[0]);
9865 opened_types_.insert(item_type1compound);
9866 opened_types_.insert(field_types[i]);
9867
9868 }
9869
9870 }else if(valtype==typeid(std::map<std::string, double>)){
9871 shape=shapes[i];
9872 if(shape.empty()||shape[0]<1&&shape[1]<1){
9876 item_type1key=sha1_type_;
9883 item_type0=sha1_type_;
9884 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
9886 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
9887
9888 }
9890 field_types[i]=sha1_type_;
9891
9892 }else if(shape[0]<1&&shape[1]>=1){
9896 item_type1key=sha1_type_;
9903 item_type0=sha1_type_;
9904 if(vldts_.count(VL_MAP_STRING_DOUBLE)==0){
9906 opened_types_.insert(vldts_[VL_MAP_STRING_DOUBLE]);
9907
9908 }
9910 field_types[i]=sha1_type_;
9911
9912 }else if(shape[0]>=1&&shape[1]<1){
9915 hsize_t shape01=shape[0];
9917 item_type1key=sha1_type_;
9925 dst_sizes[i]=((CYCLUS_SHA1_SIZE+sizeof(double))*shape[0]);
9927 opened_types_.insert(item_type1compound);
9928 opened_types_.insert(field_types[i]);
9929
9930 }else{
9933 hsize_t shape01=shape[0];
9935 item_type1key=CreateFLStrType(shape[1]);
9939 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+sizeof(double));
9941 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
9943 dst_sizes[i]=((shape[1]+sizeof(double))*shape[0]);
9945 opened_types_.insert(item_type1compound);
9946 opened_types_.insert(field_types[i]);
9947
9948 }
9949
9950 }else if(valtype==typeid(std::map<std::string, std::string>)){
9951 shape=shapes[i];
9952 if(shape.empty()||shape[0]<1&&shape[1]<1&&shape[2]<1){
9956 item_type1key=sha1_type_;
9958 item_type1val=sha1_type_;
9963 item_type0=sha1_type_;
9964 if(vldts_.count(VL_MAP_VL_STRING_VL_STRING)==0){
9966 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VL_STRING]);
9967
9968 }
9970 field_types[i]=sha1_type_;
9971
9972 }else if(shape[0]<1&&shape[1]>=1&&shape[2]>=1){
9976 item_type1key=sha1_type_;
9978 item_type1val=sha1_type_;
9983 item_type0=sha1_type_;
9984 if(vldts_.count(VL_MAP_STRING_STRING)==0){
9986 opened_types_.insert(vldts_[VL_MAP_STRING_STRING]);
9987
9988 }
9990 field_types[i]=sha1_type_;
9991
9992 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]<1){
9995 hsize_t shape01=shape[0];
9997 item_type1key=CreateFLStrType(shape[1]);
9999 item_type1val=sha1_type_;
10003 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
10005 dst_sizes[i]=((shape[1]+CYCLUS_SHA1_SIZE)*shape[0]);
10007 opened_types_.insert(item_type1compound);
10008 opened_types_.insert(field_types[i]);
10009
10010 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1){
10014 item_type1key=sha1_type_;
10016 item_type1val=sha1_type_;
10021 item_type0=sha1_type_;
10022 if(vldts_.count(VL_MAP_STRING_VL_STRING)==0){
10024 opened_types_.insert(vldts_[VL_MAP_STRING_VL_STRING]);
10025
10026 }
10028 field_types[i]=sha1_type_;
10029
10030 }else if(shape[0]>=1&&shape[1]<1&&shape[2]>=1){
10033 hsize_t shape01=shape[0];
10035 item_type1key=sha1_type_;
10037 item_type1val=CreateFLStrType(shape[2]);
10043 dst_sizes[i]=((CYCLUS_SHA1_SIZE+shape[2])*shape[0]);
10045 opened_types_.insert(item_type1compound);
10046 opened_types_.insert(field_types[i]);
10047
10048 }else if(shape[0]<1&&shape[1]<1&&shape[2]>=1){
10052 item_type1key=sha1_type_;
10054 item_type1val=sha1_type_;
10059 item_type0=sha1_type_;
10060 if(vldts_.count(VL_MAP_VL_STRING_STRING)==0){
10062 opened_types_.insert(vldts_[VL_MAP_VL_STRING_STRING]);
10063
10064 }
10066 field_types[i]=sha1_type_;
10067
10068 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1){
10071 hsize_t shape01=shape[0];
10073 item_type1key=sha1_type_;
10075 item_type1val=sha1_type_;
10083 opened_types_.insert(item_type1compound);
10084 opened_types_.insert(field_types[i]);
10085
10086 }else{
10089 hsize_t shape01=shape[0];
10091 item_type1key=CreateFLStrType(shape[1]);
10093 item_type1val=CreateFLStrType(shape[2]);
10095 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+shape[2]);
10097 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
10099 dst_sizes[i]=((shape[1]+shape[2])*shape[0]);
10101 opened_types_.insert(item_type1compound);
10102 opened_types_.insert(field_types[i]);
10103
10104 }
10105
10106 }else if(valtype==typeid(std::map<std::string, cyclus::Blob>)){
10107 shape=shapes[i];
10108 if(shape.empty()||shape[0]<1&&shape[1]<1&&shape[2]<1){
10112 item_type1key=sha1_type_;
10114 item_type1val=sha1_type_;
10119 item_type0=sha1_type_;
10120 if(vldts_.count(VL_MAP_VL_STRING_BLOB)==0){
10122 opened_types_.insert(vldts_[VL_MAP_VL_STRING_BLOB]);
10123
10124 }
10126 field_types[i]=sha1_type_;
10127
10128 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1){
10132 item_type1key=sha1_type_;
10134 item_type1val=sha1_type_;
10139 item_type0=sha1_type_;
10140 if(vldts_.count(VL_MAP_STRING_BLOB)==0){
10142 opened_types_.insert(vldts_[VL_MAP_STRING_BLOB]);
10143
10144 }
10146 field_types[i]=sha1_type_;
10147
10148 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1){
10151 hsize_t shape01=shape[0];
10153 item_type1key=sha1_type_;
10155 item_type1val=sha1_type_;
10163 opened_types_.insert(item_type1compound);
10164 opened_types_.insert(field_types[i]);
10165
10166 }else{
10169 hsize_t shape01=shape[0];
10171 item_type1key=CreateFLStrType(shape[1]);
10173 item_type1val=sha1_type_;
10177 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
10179 dst_sizes[i]=((shape[1]+CYCLUS_SHA1_SIZE)*shape[0]);
10181 opened_types_.insert(item_type1compound);
10182 opened_types_.insert(field_types[i]);
10183
10184 }
10185
10186 }else if(valtype==typeid(std::map<std::string, boost::uuids::uuid>)){
10187 shape=shapes[i];
10188 if(shape.empty()||shape[0]<1&&shape[1]<1){
10192 item_type1key=sha1_type_;
10194 item_type1val=uuid_type_;
10199 item_type0=sha1_type_;
10200 if(vldts_.count(VL_MAP_VL_STRING_UUID)==0){
10202 opened_types_.insert(vldts_[VL_MAP_VL_STRING_UUID]);
10203
10204 }
10206 field_types[i]=sha1_type_;
10207
10208 }else if(shape[0]<1&&shape[1]>=1){
10212 item_type1key=sha1_type_;
10214 item_type1val=uuid_type_;
10219 item_type0=sha1_type_;
10220 if(vldts_.count(VL_MAP_STRING_UUID)==0){
10222 opened_types_.insert(vldts_[VL_MAP_STRING_UUID]);
10223
10224 }
10226 field_types[i]=sha1_type_;
10227
10228 }else if(shape[0]>=1&&shape[1]<1){
10231 hsize_t shape01=shape[0];
10233 item_type1key=sha1_type_;
10235 item_type1val=uuid_type_;
10243 opened_types_.insert(item_type1compound);
10244 opened_types_.insert(field_types[i]);
10245
10246 }else{
10249 hsize_t shape01=shape[0];
10251 item_type1key=CreateFLStrType(shape[1]);
10253 item_type1val=uuid_type_;
10257 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
10259 dst_sizes[i]=((shape[1]+CYCLUS_UUID_SIZE)*shape[0]);
10261 opened_types_.insert(item_type1compound);
10262 opened_types_.insert(field_types[i]);
10263
10264 }
10265
10266 }else if(valtype==typeid(std::map<std::pair<int, std::string>, double>)){
10267 shape=shapes[i];
10268 if(shape.empty()||shape[0]<1&&shape[3]<1){
10275 item_type2second=sha1_type_;
10279 H5Tinsert(item_type2keycompound, "second", 0+sizeof(int), item_type2second);
10283 item_type1compound=H5Tcreate(H5T_COMPOUND, ((sizeof(int)+CYCLUS_SHA1_SIZE))+sizeof(double));
10285 H5Tinsert(item_type1compound, "val", 0+((sizeof(int)+CYCLUS_SHA1_SIZE)), item_type1val);
10286 item_type0=sha1_type_;
10287 if(vldts_.count(VL_MAP_PAIR_INT_VL_STRING_DOUBLE)==0){
10289 opened_types_.insert(vldts_[VL_MAP_PAIR_INT_VL_STRING_DOUBLE]);
10290
10291 }
10293 field_types[i]=sha1_type_;
10294
10295 }else if(shape[0]<1&&shape[3]>=1){
10302 item_type2second=sha1_type_;
10306 H5Tinsert(item_type2keycompound, "second", 0+sizeof(int), item_type2second);
10310 item_type1compound=H5Tcreate(H5T_COMPOUND, ((sizeof(int)+CYCLUS_SHA1_SIZE))+sizeof(double));
10312 H5Tinsert(item_type1compound, "val", 0+((sizeof(int)+CYCLUS_SHA1_SIZE)), item_type1val);
10313 item_type0=sha1_type_;
10314 if(vldts_.count(VL_MAP_PAIR_INT_STRING_DOUBLE)==0){
10316 opened_types_.insert(vldts_[VL_MAP_PAIR_INT_STRING_DOUBLE]);
10317
10318 }
10320 field_types[i]=sha1_type_;
10321
10322 }else if(shape[0]>=1&&shape[3]<1){
10325 hsize_t shape01=shape[0];
10330 item_type2second=sha1_type_;
10334 H5Tinsert(item_type2keycompound, "second", 0+sizeof(int), item_type2second);
10338 item_type1compound=H5Tcreate(H5T_COMPOUND, ((sizeof(int)+CYCLUS_SHA1_SIZE))+sizeof(double));
10340 H5Tinsert(item_type1compound, "val", 0+((sizeof(int)+CYCLUS_SHA1_SIZE)), item_type1val);
10342 dst_sizes[i]=((((sizeof(int)+CYCLUS_SHA1_SIZE))+sizeof(double))*shape[0]);
10344 opened_types_.insert(item_type2keycompound);
10345 opened_types_.insert(item_type1compound);
10346 opened_types_.insert(field_types[i]);
10347
10348 }else{
10351 hsize_t shape01=shape[0];
10356 item_type2second=CreateFLStrType(shape[3]);
10358 item_type2keycompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+shape[3]);
10360 H5Tinsert(item_type2keycompound, "second", 0+sizeof(int), item_type2second);
10364 item_type1compound=H5Tcreate(H5T_COMPOUND, ((sizeof(int)+shape[3]))+sizeof(double));
10366 H5Tinsert(item_type1compound, "val", 0+((sizeof(int)+shape[3])), item_type1val);
10368 dst_sizes[i]=((((sizeof(int)+shape[3]))+sizeof(double))*shape[0]);
10370 opened_types_.insert(item_type2keycompound);
10371 opened_types_.insert(item_type1compound);
10372 opened_types_.insert(field_types[i]);
10373
10374 }
10375
10376 }else if(valtype==typeid(std::map<std::string, std::vector<double>>)){
10377 shape=shapes[i];
10378 if(shape.empty()||shape[0]<1&&shape[1]<1&&shape[2]<1){
10382 item_type1key=sha1_type_;
10386 item_type1val=sha1_type_;
10387 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
10389 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
10390
10391 }
10396 item_type0=sha1_type_;
10397 if(vldts_.count(VL_MAP_VL_STRING_VL_VECTOR_DOUBLE)==0){
10399 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VL_VECTOR_DOUBLE]);
10400
10401 }
10403 field_types[i]=sha1_type_;
10404
10405 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]<1){
10408 hsize_t shape01=shape[0];
10410 item_type1key=CreateFLStrType(shape[1]);
10414 item_type1val=sha1_type_;
10415 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
10417 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
10418
10419 }
10423 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
10425 dst_sizes[i]=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
10427 opened_types_.insert(item_type1val);
10428 opened_types_.insert(item_type1compound);
10429 opened_types_.insert(field_types[i]);
10430
10431 }else if(shape[0]<1&&shape[1]>=1&&shape[2]>=1){
10435 item_type1key=sha1_type_;
10437 hsize_t shape02=shape[2];
10440 item_type1val=sha1_type_;
10441 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
10443 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
10444
10445 }
10450 item_type0=sha1_type_;
10451 if(vldts_.count(VL_MAP_STRING_VECTOR_DOUBLE)==0){
10453 opened_types_.insert(vldts_[VL_MAP_STRING_VECTOR_DOUBLE]);
10454
10455 }
10457 field_types[i]=sha1_type_;
10458
10459 }else if(shape[0]>=1&&shape[1]<1&&shape[2]>=1){
10462 hsize_t shape01=shape[0];
10464 item_type1key=sha1_type_;
10466 hsize_t shape02=shape[2];
10471 item_type1compound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((sizeof(double))*shape[2]));
10475 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[2]))*shape[0]);
10477 opened_types_.insert(item_type1val);
10478 opened_types_.insert(item_type1compound);
10479 opened_types_.insert(field_types[i]);
10480
10481 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1){
10484 hsize_t shape01=shape[0];
10486 item_type1key=sha1_type_;
10490 item_type1val=sha1_type_;
10491 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
10493 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
10494
10495 }
10503 opened_types_.insert(item_type1val);
10504 opened_types_.insert(item_type1compound);
10505 opened_types_.insert(field_types[i]);
10506
10507 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1){
10511 item_type1key=sha1_type_;
10515 item_type1val=sha1_type_;
10516 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
10518 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
10519
10520 }
10525 item_type0=sha1_type_;
10526 if(vldts_.count(VL_MAP_STRING_VL_VECTOR_DOUBLE)==0){
10528 opened_types_.insert(vldts_[VL_MAP_STRING_VL_VECTOR_DOUBLE]);
10529
10530 }
10532 field_types[i]=sha1_type_;
10533
10534 }else if(shape[0]<1&&shape[1]<1&&shape[2]>=1){
10538 item_type1key=sha1_type_;
10540 hsize_t shape02=shape[2];
10543 item_type1val=sha1_type_;
10544 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
10546 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
10547
10548 }
10553 item_type0=sha1_type_;
10554 if(vldts_.count(VL_MAP_VL_STRING_VECTOR_DOUBLE)==0){
10556 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VECTOR_DOUBLE]);
10557
10558 }
10560 field_types[i]=sha1_type_;
10561
10562 }else{
10565 hsize_t shape01=shape[0];
10567 item_type1key=CreateFLStrType(shape[1]);
10569 hsize_t shape02=shape[2];
10574 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((sizeof(double))*shape[2]));
10576 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
10578 dst_sizes[i]=((shape[1]+((sizeof(double))*shape[2]))*shape[0]);
10580 opened_types_.insert(item_type1val);
10581 opened_types_.insert(item_type1compound);
10582 opened_types_.insert(field_types[i]);
10583
10584 }
10585
10586 }else if(valtype==typeid(std::map<std::string, std::map<int, double>>)){
10587 shape=shapes[i];
10588 if(shape.empty()||shape[0]<1&&shape[1]<1&&shape[2]<1){
10592 item_type1key=sha1_type_;
10599 item_type2valcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10601 H5Tinsert(item_type2valcompound, "val", 0+sizeof(int), item_type2val);
10602 item_type1val=sha1_type_;
10603 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
10605 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
10606
10607 }
10612 item_type0=sha1_type_;
10613 if(vldts_.count(VL_MAP_VL_STRING_VL_MAP_INT_DOUBLE)==0){
10615 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VL_MAP_INT_DOUBLE]);
10616
10617 }
10619 field_types[i]=sha1_type_;
10620
10621 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]<1){
10624 hsize_t shape01=shape[0];
10626 item_type1key=CreateFLStrType(shape[1]);
10633 item_type2valcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10635 H5Tinsert(item_type2valcompound, "val", 0+sizeof(int), item_type2val);
10636 item_type1val=sha1_type_;
10637 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
10639 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
10640
10641 }
10645 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
10647 dst_sizes[i]=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
10649 opened_types_.insert(item_type2valcompound);
10650 opened_types_.insert(item_type1val);
10651 opened_types_.insert(item_type1compound);
10652 opened_types_.insert(field_types[i]);
10653
10654 }else if(shape[0]<1&&shape[1]>=1&&shape[2]>=1){
10658 item_type1key=sha1_type_;
10660 hsize_t shape02=shape[2];
10666 item_type2valcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10668 H5Tinsert(item_type2valcompound, "val", 0+sizeof(int), item_type2val);
10669 item_type1val=sha1_type_;
10670 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
10672 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
10673
10674 }
10679 item_type0=sha1_type_;
10680 if(vldts_.count(VL_MAP_STRING_MAP_INT_DOUBLE)==0){
10682 opened_types_.insert(vldts_[VL_MAP_STRING_MAP_INT_DOUBLE]);
10683
10684 }
10686 field_types[i]=sha1_type_;
10687
10688 }else if(shape[0]>=1&&shape[1]<1&&shape[2]>=1){
10691 hsize_t shape01=shape[0];
10693 item_type1key=sha1_type_;
10695 hsize_t shape02=shape[2];
10701 item_type2valcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10703 H5Tinsert(item_type2valcompound, "val", 0+sizeof(int), item_type2val);
10706 item_type1compound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((sizeof(int)+sizeof(double))*shape[2]));
10710 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((sizeof(int)+sizeof(double))*shape[2]))*shape[0]);
10712 opened_types_.insert(item_type2valcompound);
10713 opened_types_.insert(item_type1val);
10714 opened_types_.insert(item_type1compound);
10715 opened_types_.insert(field_types[i]);
10716
10717 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1){
10720 hsize_t shape01=shape[0];
10722 item_type1key=sha1_type_;
10729 item_type2valcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10731 H5Tinsert(item_type2valcompound, "val", 0+sizeof(int), item_type2val);
10732 item_type1val=sha1_type_;
10733 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
10735 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
10736
10737 }
10745 opened_types_.insert(item_type2valcompound);
10746 opened_types_.insert(item_type1val);
10747 opened_types_.insert(item_type1compound);
10748 opened_types_.insert(field_types[i]);
10749
10750 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1){
10754 item_type1key=sha1_type_;
10761 item_type2valcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10763 H5Tinsert(item_type2valcompound, "val", 0+sizeof(int), item_type2val);
10764 item_type1val=sha1_type_;
10765 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
10767 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
10768
10769 }
10774 item_type0=sha1_type_;
10775 if(vldts_.count(VL_MAP_STRING_VL_MAP_INT_DOUBLE)==0){
10777 opened_types_.insert(vldts_[VL_MAP_STRING_VL_MAP_INT_DOUBLE]);
10778
10779 }
10781 field_types[i]=sha1_type_;
10782
10783 }else if(shape[0]<1&&shape[1]<1&&shape[2]>=1){
10787 item_type1key=sha1_type_;
10789 hsize_t shape02=shape[2];
10795 item_type2valcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10797 H5Tinsert(item_type2valcompound, "val", 0+sizeof(int), item_type2val);
10798 item_type1val=sha1_type_;
10799 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
10801 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
10802
10803 }
10808 item_type0=sha1_type_;
10809 if(vldts_.count(VL_MAP_VL_STRING_MAP_INT_DOUBLE)==0){
10811 opened_types_.insert(vldts_[VL_MAP_VL_STRING_MAP_INT_DOUBLE]);
10812
10813 }
10815 field_types[i]=sha1_type_;
10816
10817 }else{
10820 hsize_t shape01=shape[0];
10822 item_type1key=CreateFLStrType(shape[1]);
10824 hsize_t shape02=shape[2];
10830 item_type2valcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10832 H5Tinsert(item_type2valcompound, "val", 0+sizeof(int), item_type2val);
10835 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((sizeof(int)+sizeof(double))*shape[2]));
10837 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
10839 dst_sizes[i]=((shape[1]+((sizeof(int)+sizeof(double))*shape[2]))*shape[0]);
10841 opened_types_.insert(item_type2valcompound);
10842 opened_types_.insert(item_type1val);
10843 opened_types_.insert(item_type1compound);
10844 opened_types_.insert(field_types[i]);
10845
10846 }
10847
10848 }else if(valtype==typeid(std::map<std::string, std::pair<double, std::map<int, double>>>)){
10849 shape=shapes[i];
10850 if(shape.empty()||shape[0]<1&&shape[1]<1&&shape[4]<1){
10854 item_type1key=sha1_type_;
10864 item_type3secondcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10866 H5Tinsert(item_type3secondcompound, "val", 0+sizeof(int), item_type3val);
10867 item_type2second=sha1_type_;
10868 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
10870 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
10871
10872 }
10876 H5Tinsert(item_type2valcompound, "second", 0+sizeof(double), item_type2second);
10881 item_type0=sha1_type_;
10884 opened_types_.insert(vldts_[VL_MAP_VL_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE]);
10885
10886 }
10888 field_types[i]=sha1_type_;
10889
10890 }else if(shape[0]<1&&shape[1]>=1&&shape[4]>=1){
10894 item_type1key=sha1_type_;
10899 hsize_t shape03=shape[4];
10905 item_type3secondcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10907 H5Tinsert(item_type3secondcompound, "val", 0+sizeof(int), item_type3val);
10908 item_type2second=sha1_type_;
10909 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
10911 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
10912
10913 }
10917 H5Tinsert(item_type2valcompound, "second", 0+sizeof(double), item_type2second);
10922 item_type0=sha1_type_;
10923 if(vldts_.count(VL_MAP_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE)==0){
10925 opened_types_.insert(vldts_[VL_MAP_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE]);
10926
10927 }
10929 field_types[i]=sha1_type_;
10930
10931 }else if(shape[0]>=1&&shape[1]<1&&shape[4]>=1){
10934 hsize_t shape01=shape[0];
10936 item_type1key=sha1_type_;
10941 hsize_t shape03=shape[4];
10947 item_type3secondcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10949 H5Tinsert(item_type3secondcompound, "val", 0+sizeof(int), item_type3val);
10952 item_type2valcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+((sizeof(int)+sizeof(double))*shape[4]));
10954 H5Tinsert(item_type2valcompound, "second", 0+sizeof(double), item_type2second);
10956 item_type1compound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((sizeof(double)+((sizeof(int)+sizeof(double))*shape[4]))));
10960 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((sizeof(double)+((sizeof(int)+sizeof(double))*shape[4]))))*shape[0]);
10962 opened_types_.insert(item_type3secondcompound);
10963 opened_types_.insert(item_type2second);
10964 opened_types_.insert(item_type2valcompound);
10965 opened_types_.insert(item_type1compound);
10966 opened_types_.insert(field_types[i]);
10967
10968 }else if(shape[0]>=1&&shape[1]>=1&&shape[4]<1){
10971 hsize_t shape01=shape[0];
10973 item_type1key=CreateFLStrType(shape[1]);
10983 item_type3secondcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
10985 H5Tinsert(item_type3secondcompound, "val", 0+sizeof(int), item_type3val);
10986 item_type2second=sha1_type_;
10987 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
10989 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
10990
10991 }
10995 H5Tinsert(item_type2valcompound, "second", 0+sizeof(double), item_type2second);
10997 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((sizeof(double)+(CYCLUS_SHA1_SIZE))));
11001 dst_sizes[i]=((shape[1]+((sizeof(double)+(CYCLUS_SHA1_SIZE))))*shape[0]);
11003 opened_types_.insert(item_type3secondcompound);
11004 opened_types_.insert(item_type2second);
11005 opened_types_.insert(item_type2valcompound);
11006 opened_types_.insert(item_type1compound);
11007 opened_types_.insert(field_types[i]);
11008
11009 }else if(shape[0]<1&&shape[1]<1&&shape[4]>=1){
11013 item_type1key=sha1_type_;
11018 hsize_t shape03=shape[4];
11024 item_type3secondcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
11026 H5Tinsert(item_type3secondcompound, "val", 0+sizeof(int), item_type3val);
11027 item_type2second=sha1_type_;
11028 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
11030 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
11031
11032 }
11036 H5Tinsert(item_type2valcompound, "second", 0+sizeof(double), item_type2second);
11041 item_type0=sha1_type_;
11044 opened_types_.insert(vldts_[VL_MAP_VL_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE]);
11045
11046 }
11048 field_types[i]=sha1_type_;
11049
11050 }else if(shape[0]<1&&shape[1]>=1&&shape[4]<1){
11054 item_type1key=sha1_type_;
11064 item_type3secondcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
11066 H5Tinsert(item_type3secondcompound, "val", 0+sizeof(int), item_type3val);
11067 item_type2second=sha1_type_;
11068 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
11070 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
11071
11072 }
11076 H5Tinsert(item_type2valcompound, "second", 0+sizeof(double), item_type2second);
11081 item_type0=sha1_type_;
11084 opened_types_.insert(vldts_[VL_MAP_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE]);
11085
11086 }
11088 field_types[i]=sha1_type_;
11089
11090 }else if(shape[0]>=1&&shape[1]<1&&shape[4]<1){
11093 hsize_t shape01=shape[0];
11095 item_type1key=sha1_type_;
11105 item_type3secondcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
11107 H5Tinsert(item_type3secondcompound, "val", 0+sizeof(int), item_type3val);
11108 item_type2second=sha1_type_;
11109 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
11111 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
11112
11113 }
11117 H5Tinsert(item_type2valcompound, "second", 0+sizeof(double), item_type2second);
11123 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((sizeof(double)+(CYCLUS_SHA1_SIZE))))*shape[0]);
11125 opened_types_.insert(item_type3secondcompound);
11126 opened_types_.insert(item_type2second);
11127 opened_types_.insert(item_type2valcompound);
11128 opened_types_.insert(item_type1compound);
11129 opened_types_.insert(field_types[i]);
11130
11131 }else{
11134 hsize_t shape01=shape[0];
11136 item_type1key=CreateFLStrType(shape[1]);
11141 hsize_t shape03=shape[4];
11147 item_type3secondcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
11149 H5Tinsert(item_type3secondcompound, "val", 0+sizeof(int), item_type3val);
11152 item_type2valcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+((sizeof(int)+sizeof(double))*shape[4]));
11154 H5Tinsert(item_type2valcompound, "second", 0+sizeof(double), item_type2second);
11156 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((sizeof(double)+((sizeof(int)+sizeof(double))*shape[4]))));
11160 dst_sizes[i]=((shape[1]+((sizeof(double)+((sizeof(int)+sizeof(double))*shape[4]))))*shape[0]);
11162 opened_types_.insert(item_type3secondcompound);
11163 opened_types_.insert(item_type2second);
11164 opened_types_.insert(item_type2valcompound);
11165 opened_types_.insert(item_type1compound);
11166 opened_types_.insert(field_types[i]);
11167
11168 }
11169
11170 }else if(valtype==typeid(std::map<int, std::map<std::string, double>>)){
11171 shape=shapes[i];
11172 if(shape.empty()||shape[0]<1&&shape[2]<1&&shape[3]<1){
11179 item_type2key=sha1_type_;
11186 item_type1val=sha1_type_;
11187 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
11189 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
11190
11191 }
11195 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
11196 item_type0=sha1_type_;
11197 if(vldts_.count(VL_MAP_INT_VL_MAP_VL_STRING_DOUBLE)==0){
11199 opened_types_.insert(vldts_[VL_MAP_INT_VL_MAP_VL_STRING_DOUBLE]);
11200
11201 }
11203 field_types[i]=sha1_type_;
11204
11205 }else if(shape[0]>=1&&shape[2]>=1&&shape[3]<1){
11208 hsize_t shape01=shape[0];
11212 hsize_t shape02=shape[2];
11214 item_type2key=sha1_type_;
11223 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]));
11225 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
11227 dst_sizes[i]=((sizeof(int)+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]))*shape[0]);
11229 opened_types_.insert(item_type2valcompound);
11230 opened_types_.insert(item_type1val);
11231 opened_types_.insert(item_type1compound);
11232 opened_types_.insert(field_types[i]);
11233
11234 }else if(shape[0]<1&&shape[2]>=1&&shape[3]>=1){
11240 hsize_t shape02=shape[2];
11242 item_type2key=sha1_type_;
11249 item_type1val=sha1_type_;
11250 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
11252 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
11253
11254 }
11258 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
11259 item_type0=sha1_type_;
11260 if(vldts_.count(VL_MAP_INT_MAP_STRING_DOUBLE)==0){
11262 opened_types_.insert(vldts_[VL_MAP_INT_MAP_STRING_DOUBLE]);
11263
11264 }
11266 field_types[i]=sha1_type_;
11267
11268 }else if(shape[0]<1&&shape[2]>=1&&shape[3]<1){
11274 hsize_t shape02=shape[2];
11276 item_type2key=sha1_type_;
11283 item_type1val=sha1_type_;
11284 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
11286 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
11287
11288 }
11292 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
11293 item_type0=sha1_type_;
11294 if(vldts_.count(VL_MAP_INT_MAP_VL_STRING_DOUBLE)==0){
11296 opened_types_.insert(vldts_[VL_MAP_INT_MAP_VL_STRING_DOUBLE]);
11297
11298 }
11300 field_types[i]=sha1_type_;
11301
11302 }else if(shape[0]>=1&&shape[2]<1&&shape[3]>=1){
11305 hsize_t shape01=shape[0];
11310 item_type2key=sha1_type_;
11317 item_type1val=sha1_type_;
11318 if(vldts_.count(VL_MAP_STRING_DOUBLE)==0){
11320 opened_types_.insert(vldts_[VL_MAP_STRING_DOUBLE]);
11321
11322 }
11326 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
11328 dst_sizes[i]=((sizeof(int)+(CYCLUS_SHA1_SIZE))*shape[0]);
11330 opened_types_.insert(item_type2valcompound);
11331 opened_types_.insert(item_type1val);
11332 opened_types_.insert(item_type1compound);
11333 opened_types_.insert(field_types[i]);
11334
11335 }else if(shape[0]>=1&&shape[2]<1&&shape[3]<1){
11338 hsize_t shape01=shape[0];
11343 item_type2key=sha1_type_;
11350 item_type1val=sha1_type_;
11351 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
11353 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
11354
11355 }
11359 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
11361 dst_sizes[i]=((sizeof(int)+(CYCLUS_SHA1_SIZE))*shape[0]);
11363 opened_types_.insert(item_type2valcompound);
11364 opened_types_.insert(item_type1val);
11365 opened_types_.insert(item_type1compound);
11366 opened_types_.insert(field_types[i]);
11367
11368 }else if(shape[0]<1&&shape[2]<1&&shape[3]>=1){
11375 item_type2key=sha1_type_;
11382 item_type1val=sha1_type_;
11383 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
11385 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
11386
11387 }
11391 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
11392 item_type0=sha1_type_;
11393 if(vldts_.count(VL_MAP_INT_VL_MAP_STRING_DOUBLE)==0){
11395 opened_types_.insert(vldts_[VL_MAP_INT_VL_MAP_STRING_DOUBLE]);
11396
11397 }
11399 field_types[i]=sha1_type_;
11400
11401 }else{
11404 hsize_t shape01=shape[0];
11408 hsize_t shape02=shape[2];
11410 item_type2key=CreateFLStrType(shape[3]);
11414 item_type2valcompound=H5Tcreate(H5T_COMPOUND, shape[3]+sizeof(double));
11416 H5Tinsert(item_type2valcompound, "val", 0+shape[3], item_type2val);
11419 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+((shape[3]+sizeof(double))*shape[2]));
11421 H5Tinsert(item_type1compound, "val", 0+sizeof(int), item_type1val);
11423 dst_sizes[i]=((sizeof(int)+((shape[3]+sizeof(double))*shape[2]))*shape[0]);
11425 opened_types_.insert(item_type2valcompound);
11426 opened_types_.insert(item_type1val);
11427 opened_types_.insert(item_type1compound);
11428 opened_types_.insert(field_types[i]);
11429
11430 }
11431
11432 }else if(valtype==typeid(std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>)){
11433 shape=shapes[i];
11434 if(shape.empty()||shape[0]<1&&shape[1]<1&&shape[2]<1&&shape[6]<1&&shape[7]<1){
11438 item_type1key=sha1_type_;
11445 item_type4first=sha1_type_;
11447 item_type4second=sha1_type_;
11456 item_type1val=sha1_type_;
11459 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
11460
11461 }
11466 item_type0=sha1_type_;
11470
11471 }
11473 field_types[i]=sha1_type_;
11474
11475 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]>=1&&shape[6]>=1&&shape[7]<1){
11478 hsize_t shape01=shape[0];
11480 item_type1key=CreateFLStrType(shape[1]);
11482 hsize_t shape02=shape[2];
11488 item_type4first=CreateFLStrType(shape[6]);
11490 item_type4second=sha1_type_;
11494 H5Tinsert(item_type4secondcompound, "second", 0+shape[6], item_type4second);
11501 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE)))))*shape[2]));
11503 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
11505 dst_sizes[i]=((shape[1]+((((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE)))))*shape[2]))*shape[0]);
11507 opened_types_.insert(item_type4secondcompound);
11508 opened_types_.insert(item_type3elemcompound);
11509 opened_types_.insert(item_type1val);
11510 opened_types_.insert(item_type1compound);
11511 opened_types_.insert(field_types[i]);
11512
11513 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]>=1&&shape[6]<1&&shape[7]>=1){
11516 hsize_t shape01=shape[0];
11518 item_type1key=CreateFLStrType(shape[1]);
11520 hsize_t shape02=shape[2];
11526 item_type4first=sha1_type_;
11528 item_type4second=CreateFLStrType(shape[7]);
11539 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7])))))*shape[2]));
11541 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
11543 dst_sizes[i]=((shape[1]+((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7])))))*shape[2]))*shape[0]);
11545 opened_types_.insert(item_type4secondcompound);
11546 opened_types_.insert(item_type3elemcompound);
11547 opened_types_.insert(item_type1val);
11548 opened_types_.insert(item_type1compound);
11549 opened_types_.insert(field_types[i]);
11550
11551 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]>=1&&shape[6]<1&&shape[7]<1){
11554 hsize_t shape01=shape[0];
11556 item_type1key=CreateFLStrType(shape[1]);
11558 hsize_t shape02=shape[2];
11564 item_type4first=sha1_type_;
11566 item_type4second=sha1_type_;
11577 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)))))*shape[2]));
11579 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
11581 dst_sizes[i]=((shape[1]+((((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)))))*shape[2]))*shape[0]);
11583 opened_types_.insert(item_type4secondcompound);
11584 opened_types_.insert(item_type3elemcompound);
11585 opened_types_.insert(item_type1val);
11586 opened_types_.insert(item_type1compound);
11587 opened_types_.insert(field_types[i]);
11588
11589 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]<1&&shape[6]>=1&&shape[7]>=1){
11592 hsize_t shape01=shape[0];
11594 item_type1key=CreateFLStrType(shape[1]);
11601 item_type4first=sha1_type_;
11603 item_type4second=sha1_type_;
11612 item_type1val=sha1_type_;
11613 if(vldts_.count(VL_VECTOR_PAIR_INT_PAIR_STRING_STRING)==0){
11615 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_STRING_STRING]);
11616
11617 }
11621 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
11623 dst_sizes[i]=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
11625 opened_types_.insert(item_type4secondcompound);
11626 opened_types_.insert(item_type3elemcompound);
11627 opened_types_.insert(item_type1val);
11628 opened_types_.insert(item_type1compound);
11629 opened_types_.insert(field_types[i]);
11630
11631 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]<1&&shape[6]>=1&&shape[7]<1){
11634 hsize_t shape01=shape[0];
11636 item_type1key=CreateFLStrType(shape[1]);
11643 item_type4first=sha1_type_;
11645 item_type4second=sha1_type_;
11654 item_type1val=sha1_type_;
11655 if(vldts_.count(VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING)==0){
11657 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING]);
11658
11659 }
11663 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
11665 dst_sizes[i]=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
11667 opened_types_.insert(item_type4secondcompound);
11668 opened_types_.insert(item_type3elemcompound);
11669 opened_types_.insert(item_type1val);
11670 opened_types_.insert(item_type1compound);
11671 opened_types_.insert(field_types[i]);
11672
11673 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]<1&&shape[6]<1&&shape[7]>=1){
11676 hsize_t shape01=shape[0];
11678 item_type1key=CreateFLStrType(shape[1]);
11685 item_type4first=sha1_type_;
11687 item_type4second=sha1_type_;
11696 item_type1val=sha1_type_;
11697 if(vldts_.count(VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING)==0){
11699 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING]);
11700
11701 }
11705 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
11707 dst_sizes[i]=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
11709 opened_types_.insert(item_type4secondcompound);
11710 opened_types_.insert(item_type3elemcompound);
11711 opened_types_.insert(item_type1val);
11712 opened_types_.insert(item_type1compound);
11713 opened_types_.insert(field_types[i]);
11714
11715 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]<1&&shape[6]<1&&shape[7]<1){
11718 hsize_t shape01=shape[0];
11720 item_type1key=CreateFLStrType(shape[1]);
11727 item_type4first=sha1_type_;
11729 item_type4second=sha1_type_;
11738 item_type1val=sha1_type_;
11741 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
11742
11743 }
11747 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
11749 dst_sizes[i]=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
11751 opened_types_.insert(item_type4secondcompound);
11752 opened_types_.insert(item_type3elemcompound);
11753 opened_types_.insert(item_type1val);
11754 opened_types_.insert(item_type1compound);
11755 opened_types_.insert(field_types[i]);
11756
11757 }else if(shape[0]>=1&&shape[1]<1&&shape[2]>=1&&shape[6]>=1&&shape[7]>=1){
11760 hsize_t shape01=shape[0];
11762 item_type1key=sha1_type_;
11764 hsize_t shape02=shape[2];
11770 item_type4first=CreateFLStrType(shape[6]);
11772 item_type4second=CreateFLStrType(shape[7]);
11776 H5Tinsert(item_type4secondcompound, "second", 0+shape[6], item_type4second);
11778 item_type3elemcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+((shape[6]+shape[7])));
11783 item_type1compound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((((sizeof(int)+((shape[6]+shape[7])))))*shape[2]));
11787 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((((sizeof(int)+((shape[6]+shape[7])))))*shape[2]))*shape[0]);
11789 opened_types_.insert(item_type4secondcompound);
11790 opened_types_.insert(item_type3elemcompound);
11791 opened_types_.insert(item_type1val);
11792 opened_types_.insert(item_type1compound);
11793 opened_types_.insert(field_types[i]);
11794
11795 }else if(shape[0]>=1&&shape[1]<1&&shape[2]>=1&&shape[6]>=1&&shape[7]<1){
11798 hsize_t shape01=shape[0];
11800 item_type1key=sha1_type_;
11802 hsize_t shape02=shape[2];
11808 item_type4first=CreateFLStrType(shape[6]);
11810 item_type4second=sha1_type_;
11814 H5Tinsert(item_type4secondcompound, "second", 0+shape[6], item_type4second);
11821 item_type1compound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE)))))*shape[2]));
11825 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE)))))*shape[2]))*shape[0]);
11827 opened_types_.insert(item_type4secondcompound);
11828 opened_types_.insert(item_type3elemcompound);
11829 opened_types_.insert(item_type1val);
11830 opened_types_.insert(item_type1compound);
11831 opened_types_.insert(field_types[i]);
11832
11833 }else if(shape[0]>=1&&shape[1]<1&&shape[2]>=1&&shape[6]<1&&shape[7]>=1){
11836 hsize_t shape01=shape[0];
11838 item_type1key=sha1_type_;
11840 hsize_t shape02=shape[2];
11846 item_type4first=sha1_type_;
11848 item_type4second=CreateFLStrType(shape[7]);
11859 item_type1compound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7])))))*shape[2]));
11863 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7])))))*shape[2]))*shape[0]);
11865 opened_types_.insert(item_type4secondcompound);
11866 opened_types_.insert(item_type3elemcompound);
11867 opened_types_.insert(item_type1val);
11868 opened_types_.insert(item_type1compound);
11869 opened_types_.insert(field_types[i]);
11870
11871 }else if(shape[0]>=1&&shape[1]<1&&shape[2]>=1&&shape[6]<1&&shape[7]<1){
11874 hsize_t shape01=shape[0];
11876 item_type1key=sha1_type_;
11878 hsize_t shape02=shape[2];
11884 item_type4first=sha1_type_;
11886 item_type4second=sha1_type_;
11901 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)))))*shape[2]))*shape[0]);
11903 opened_types_.insert(item_type4secondcompound);
11904 opened_types_.insert(item_type3elemcompound);
11905 opened_types_.insert(item_type1val);
11906 opened_types_.insert(item_type1compound);
11907 opened_types_.insert(field_types[i]);
11908
11909 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1&&shape[6]>=1&&shape[7]>=1){
11912 hsize_t shape01=shape[0];
11914 item_type1key=sha1_type_;
11921 item_type4first=sha1_type_;
11923 item_type4second=sha1_type_;
11932 item_type1val=sha1_type_;
11933 if(vldts_.count(VL_VECTOR_PAIR_INT_PAIR_STRING_STRING)==0){
11935 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_STRING_STRING]);
11936
11937 }
11945 opened_types_.insert(item_type4secondcompound);
11946 opened_types_.insert(item_type3elemcompound);
11947 opened_types_.insert(item_type1val);
11948 opened_types_.insert(item_type1compound);
11949 opened_types_.insert(field_types[i]);
11950
11951 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1&&shape[6]>=1&&shape[7]<1){
11954 hsize_t shape01=shape[0];
11956 item_type1key=sha1_type_;
11963 item_type4first=sha1_type_;
11965 item_type4second=sha1_type_;
11974 item_type1val=sha1_type_;
11975 if(vldts_.count(VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING)==0){
11977 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING]);
11978
11979 }
11987 opened_types_.insert(item_type4secondcompound);
11988 opened_types_.insert(item_type3elemcompound);
11989 opened_types_.insert(item_type1val);
11990 opened_types_.insert(item_type1compound);
11991 opened_types_.insert(field_types[i]);
11992
11993 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1&&shape[6]<1&&shape[7]>=1){
11996 hsize_t shape01=shape[0];
11998 item_type1key=sha1_type_;
12005 item_type4first=sha1_type_;
12007 item_type4second=sha1_type_;
12016 item_type1val=sha1_type_;
12017 if(vldts_.count(VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING)==0){
12019 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING]);
12020
12021 }
12029 opened_types_.insert(item_type4secondcompound);
12030 opened_types_.insert(item_type3elemcompound);
12031 opened_types_.insert(item_type1val);
12032 opened_types_.insert(item_type1compound);
12033 opened_types_.insert(field_types[i]);
12034
12035 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1&&shape[6]<1&&shape[7]<1){
12038 hsize_t shape01=shape[0];
12040 item_type1key=sha1_type_;
12047 item_type4first=sha1_type_;
12049 item_type4second=sha1_type_;
12058 item_type1val=sha1_type_;
12061 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12062
12063 }
12071 opened_types_.insert(item_type4secondcompound);
12072 opened_types_.insert(item_type3elemcompound);
12073 opened_types_.insert(item_type1val);
12074 opened_types_.insert(item_type1compound);
12075 opened_types_.insert(field_types[i]);
12076
12077 }else if(shape[0]<1&&shape[1]>=1&&shape[2]>=1&&shape[6]>=1&&shape[7]>=1){
12081 item_type1key=sha1_type_;
12083 hsize_t shape02=shape[2];
12089 item_type4first=sha1_type_;
12091 item_type4second=sha1_type_;
12100 item_type1val=sha1_type_;
12103 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12104
12105 }
12110 item_type0=sha1_type_;
12113 opened_types_.insert(vldts_[VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_STRING_STRING]);
12114
12115 }
12117 field_types[i]=sha1_type_;
12118
12119 }else if(shape[0]<1&&shape[1]>=1&&shape[2]>=1&&shape[6]>=1&&shape[7]<1){
12123 item_type1key=sha1_type_;
12125 hsize_t shape02=shape[2];
12131 item_type4first=sha1_type_;
12133 item_type4second=sha1_type_;
12142 item_type1val=sha1_type_;
12145 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12146
12147 }
12152 item_type0=sha1_type_;
12155 opened_types_.insert(vldts_[VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING]);
12156
12157 }
12159 field_types[i]=sha1_type_;
12160
12161 }else if(shape[0]<1&&shape[1]>=1&&shape[2]>=1&&shape[6]<1&&shape[7]>=1){
12165 item_type1key=sha1_type_;
12167 hsize_t shape02=shape[2];
12173 item_type4first=sha1_type_;
12175 item_type4second=sha1_type_;
12184 item_type1val=sha1_type_;
12187 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12188
12189 }
12194 item_type0=sha1_type_;
12197 opened_types_.insert(vldts_[VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING]);
12198
12199 }
12201 field_types[i]=sha1_type_;
12202
12203 }else if(shape[0]<1&&shape[1]>=1&&shape[2]>=1&&shape[6]<1&&shape[7]<1){
12207 item_type1key=sha1_type_;
12209 hsize_t shape02=shape[2];
12215 item_type4first=sha1_type_;
12217 item_type4second=sha1_type_;
12226 item_type1val=sha1_type_;
12229 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12230
12231 }
12236 item_type0=sha1_type_;
12239 opened_types_.insert(vldts_[VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12240
12241 }
12243 field_types[i]=sha1_type_;
12244
12245 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1&&shape[6]>=1&&shape[7]>=1){
12249 item_type1key=sha1_type_;
12256 item_type4first=sha1_type_;
12258 item_type4second=sha1_type_;
12267 item_type1val=sha1_type_;
12270 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12271
12272 }
12277 item_type0=sha1_type_;
12280 opened_types_.insert(vldts_[VL_MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_STRING]);
12281
12282 }
12284 field_types[i]=sha1_type_;
12285
12286 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1&&shape[6]>=1&&shape[7]<1){
12290 item_type1key=sha1_type_;
12297 item_type4first=sha1_type_;
12299 item_type4second=sha1_type_;
12308 item_type1val=sha1_type_;
12311 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12312
12313 }
12318 item_type0=sha1_type_;
12321 opened_types_.insert(vldts_[VL_MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING]);
12322
12323 }
12325 field_types[i]=sha1_type_;
12326
12327 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1&&shape[6]<1&&shape[7]>=1){
12331 item_type1key=sha1_type_;
12338 item_type4first=sha1_type_;
12340 item_type4second=sha1_type_;
12349 item_type1val=sha1_type_;
12352 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12353
12354 }
12359 item_type0=sha1_type_;
12362 opened_types_.insert(vldts_[VL_MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING]);
12363
12364 }
12366 field_types[i]=sha1_type_;
12367
12368 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1&&shape[6]<1&&shape[7]<1){
12372 item_type1key=sha1_type_;
12379 item_type4first=sha1_type_;
12381 item_type4second=sha1_type_;
12390 item_type1val=sha1_type_;
12393 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12394
12395 }
12400 item_type0=sha1_type_;
12404
12405 }
12407 field_types[i]=sha1_type_;
12408
12409 }else if(shape[0]<1&&shape[1]<1&&shape[2]>=1&&shape[6]>=1&&shape[7]>=1){
12413 item_type1key=sha1_type_;
12415 hsize_t shape02=shape[2];
12421 item_type4first=sha1_type_;
12423 item_type4second=sha1_type_;
12432 item_type1val=sha1_type_;
12435 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12436
12437 }
12442 item_type0=sha1_type_;
12445 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_STRING_STRING]);
12446
12447 }
12449 field_types[i]=sha1_type_;
12450
12451 }else if(shape[0]<1&&shape[1]<1&&shape[2]>=1&&shape[6]>=1&&shape[7]<1){
12455 item_type1key=sha1_type_;
12457 hsize_t shape02=shape[2];
12463 item_type4first=sha1_type_;
12465 item_type4second=sha1_type_;
12474 item_type1val=sha1_type_;
12477 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12478
12479 }
12484 item_type0=sha1_type_;
12487 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING]);
12488
12489 }
12491 field_types[i]=sha1_type_;
12492
12493 }else if(shape[0]<1&&shape[1]<1&&shape[2]>=1&&shape[6]<1&&shape[7]>=1){
12497 item_type1key=sha1_type_;
12499 hsize_t shape02=shape[2];
12505 item_type4first=sha1_type_;
12507 item_type4second=sha1_type_;
12516 item_type1val=sha1_type_;
12519 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12520
12521 }
12526 item_type0=sha1_type_;
12529 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING]);
12530
12531 }
12533 field_types[i]=sha1_type_;
12534
12535 }else if(shape[0]<1&&shape[1]<1&&shape[2]>=1&&shape[6]<1&&shape[7]<1){
12539 item_type1key=sha1_type_;
12541 hsize_t shape02=shape[2];
12547 item_type4first=sha1_type_;
12549 item_type4second=sha1_type_;
12558 item_type1val=sha1_type_;
12561 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12562
12563 }
12568 item_type0=sha1_type_;
12572
12573 }
12575 field_types[i]=sha1_type_;
12576
12577 }else if(shape[0]<1&&shape[1]<1&&shape[2]<1&&shape[6]>=1&&shape[7]>=1){
12581 item_type1key=sha1_type_;
12588 item_type4first=sha1_type_;
12590 item_type4second=sha1_type_;
12599 item_type1val=sha1_type_;
12602 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12603
12604 }
12609 item_type0=sha1_type_;
12612 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_STRING]);
12613
12614 }
12616 field_types[i]=sha1_type_;
12617
12618 }else if(shape[0]<1&&shape[1]<1&&shape[2]<1&&shape[6]>=1&&shape[7]<1){
12622 item_type1key=sha1_type_;
12629 item_type4first=sha1_type_;
12631 item_type4second=sha1_type_;
12640 item_type1val=sha1_type_;
12643 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12644
12645 }
12650 item_type0=sha1_type_;
12654
12655 }
12657 field_types[i]=sha1_type_;
12658
12659 }else if(shape[0]<1&&shape[1]<1&&shape[2]<1&&shape[6]<1&&shape[7]>=1){
12663 item_type1key=sha1_type_;
12670 item_type4first=sha1_type_;
12672 item_type4second=sha1_type_;
12681 item_type1val=sha1_type_;
12684 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
12685
12686 }
12691 item_type0=sha1_type_;
12695
12696 }
12698 field_types[i]=sha1_type_;
12699
12700 }else{
12703 hsize_t shape01=shape[0];
12705 item_type1key=CreateFLStrType(shape[1]);
12707 hsize_t shape02=shape[2];
12713 item_type4first=CreateFLStrType(shape[6]);
12715 item_type4second=CreateFLStrType(shape[7]);
12719 H5Tinsert(item_type4secondcompound, "second", 0+shape[6], item_type4second);
12721 item_type3elemcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+((shape[6]+shape[7])));
12726 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((((sizeof(int)+((shape[6]+shape[7])))))*shape[2]));
12728 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
12730 dst_sizes[i]=((shape[1]+((((sizeof(int)+((shape[6]+shape[7])))))*shape[2]))*shape[0]);
12732 opened_types_.insert(item_type4secondcompound);
12733 opened_types_.insert(item_type3elemcompound);
12734 opened_types_.insert(item_type1val);
12735 opened_types_.insert(item_type1compound);
12736 opened_types_.insert(field_types[i]);
12737
12738 }
12739
12740 }else if(valtype==typeid(std::list<std::pair<int, int>>)){
12741 shape=shapes[i];
12742 if(shape.empty()||shape[0]<1){
12751 item_type2elemcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(int));
12753 H5Tinsert(item_type2elemcompound, "second", 0+sizeof(int), item_type2second);
12754 item_type0=sha1_type_;
12755 if(vldts_.count(VL_LIST_PAIR_INT_INT)==0){
12757 opened_types_.insert(vldts_[VL_LIST_PAIR_INT_INT]);
12758
12759 }
12761 field_types[i]=sha1_type_;
12762
12763 }else{
12766 hsize_t shape01=shape[0];
12773 item_type2elemcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(int));
12775 H5Tinsert(item_type2elemcompound, "second", 0+sizeof(int), item_type2second);
12777 dst_sizes[i]=((((sizeof(int)+sizeof(int))))*shape[0]);
12779 opened_types_.insert(item_type2elemcompound);
12780 opened_types_.insert(field_types[i]);
12781
12782 }
12783
12784 }else if(valtype==typeid(std::map<std::string, std::pair<std::string, std::vector<double>>>)){
12785 shape=shapes[i];
12786 if(shape.empty()||shape[0]<1&&shape[1]<1&&shape[3]<1&&shape[4]<1){
12790 item_type1key=sha1_type_;
12793 item_type2first=sha1_type_;
12797 item_type2second=sha1_type_;
12798 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
12800 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
12801
12802 }
12811 item_type0=sha1_type_;
12814 opened_types_.insert(vldts_[VL_MAP_VL_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE]);
12815
12816 }
12818 field_types[i]=sha1_type_;
12819
12820 }else if(shape[0]>=1&&shape[1]>=1&&shape[3]>=1&&shape[4]<1){
12823 hsize_t shape01=shape[0];
12825 item_type1key=CreateFLStrType(shape[1]);
12828 item_type2first=CreateFLStrType(shape[3]);
12832 item_type2second=sha1_type_;
12833 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
12835 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
12836
12837 }
12841 H5Tinsert(item_type2valcompound, "second", 0+shape[3], item_type2second);
12847 dst_sizes[i]=((shape[1]+((shape[3]+(CYCLUS_SHA1_SIZE))))*shape[0]);
12849 opened_types_.insert(item_type2second);
12850 opened_types_.insert(item_type2valcompound);
12851 opened_types_.insert(item_type1compound);
12852 opened_types_.insert(field_types[i]);
12853
12854 }else if(shape[0]>=1&&shape[1]>=1&&shape[3]<1&&shape[4]>=1){
12857 hsize_t shape01=shape[0];
12859 item_type1key=CreateFLStrType(shape[1]);
12862 item_type2first=sha1_type_;
12864 hsize_t shape03=shape[4];
12869 item_type2valcompound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((sizeof(double))*shape[4]));
12873 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[4]))));
12877 dst_sizes[i]=((shape[1]+((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[4]))))*shape[0]);
12879 opened_types_.insert(item_type2second);
12880 opened_types_.insert(item_type2valcompound);
12881 opened_types_.insert(item_type1compound);
12882 opened_types_.insert(field_types[i]);
12883
12884 }else if(shape[0]>=1&&shape[1]>=1&&shape[3]<1&&shape[4]<1){
12887 hsize_t shape01=shape[0];
12889 item_type1key=CreateFLStrType(shape[1]);
12892 item_type2first=sha1_type_;
12896 item_type2second=sha1_type_;
12897 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
12899 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
12900
12901 }
12911 dst_sizes[i]=((shape[1]+((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))))*shape[0]);
12913 opened_types_.insert(item_type2second);
12914 opened_types_.insert(item_type2valcompound);
12915 opened_types_.insert(item_type1compound);
12916 opened_types_.insert(field_types[i]);
12917
12918 }else if(shape[0]>=1&&shape[1]<1&&shape[3]>=1&&shape[4]>=1){
12921 hsize_t shape01=shape[0];
12923 item_type1key=sha1_type_;
12926 item_type2first=CreateFLStrType(shape[3]);
12928 hsize_t shape03=shape[4];
12933 item_type2valcompound=H5Tcreate(H5T_COMPOUND, shape[3]+((sizeof(double))*shape[4]));
12935 H5Tinsert(item_type2valcompound, "second", 0+shape[3], item_type2second);
12937 item_type1compound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((shape[3]+((sizeof(double))*shape[4]))));
12941 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((shape[3]+((sizeof(double))*shape[4]))))*shape[0]);
12943 opened_types_.insert(item_type2second);
12944 opened_types_.insert(item_type2valcompound);
12945 opened_types_.insert(item_type1compound);
12946 opened_types_.insert(field_types[i]);
12947
12948 }else if(shape[0]>=1&&shape[1]<1&&shape[3]<1&&shape[4]>=1){
12951 hsize_t shape01=shape[0];
12953 item_type1key=sha1_type_;
12956 item_type2first=sha1_type_;
12958 hsize_t shape03=shape[4];
12963 item_type2valcompound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((sizeof(double))*shape[4]));
12971 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[4]))))*shape[0]);
12973 opened_types_.insert(item_type2second);
12974 opened_types_.insert(item_type2valcompound);
12975 opened_types_.insert(item_type1compound);
12976 opened_types_.insert(field_types[i]);
12977
12978 }else if(shape[0]>=1&&shape[1]<1&&shape[3]>=1&&shape[4]<1){
12981 hsize_t shape01=shape[0];
12983 item_type1key=sha1_type_;
12986 item_type2first=CreateFLStrType(shape[3]);
12990 item_type2second=sha1_type_;
12991 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
12993 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
12994
12995 }
12999 H5Tinsert(item_type2valcompound, "second", 0+shape[3], item_type2second);
13005 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((shape[3]+(CYCLUS_SHA1_SIZE))))*shape[0]);
13007 opened_types_.insert(item_type2second);
13008 opened_types_.insert(item_type2valcompound);
13009 opened_types_.insert(item_type1compound);
13010 opened_types_.insert(field_types[i]);
13011
13012 }else if(shape[0]>=1&&shape[1]<1&&shape[3]<1&&shape[4]<1){
13015 hsize_t shape01=shape[0];
13017 item_type1key=sha1_type_;
13020 item_type2first=sha1_type_;
13024 item_type2second=sha1_type_;
13025 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
13027 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
13028
13029 }
13041 opened_types_.insert(item_type2second);
13042 opened_types_.insert(item_type2valcompound);
13043 opened_types_.insert(item_type1compound);
13044 opened_types_.insert(field_types[i]);
13045
13046 }else if(shape[0]<1&&shape[1]>=1&&shape[3]>=1&&shape[4]>=1){
13050 item_type1key=sha1_type_;
13053 item_type2first=sha1_type_;
13055 hsize_t shape03=shape[4];
13058 item_type2second=sha1_type_;
13059 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
13061 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
13062
13063 }
13072 item_type0=sha1_type_;
13073 if(vldts_.count(VL_MAP_STRING_PAIR_STRING_VECTOR_DOUBLE)==0){
13075 opened_types_.insert(vldts_[VL_MAP_STRING_PAIR_STRING_VECTOR_DOUBLE]);
13076
13077 }
13079 field_types[i]=sha1_type_;
13080
13081 }else if(shape[0]<1&&shape[1]<1&&shape[3]>=1&&shape[4]>=1){
13085 item_type1key=sha1_type_;
13088 item_type2first=sha1_type_;
13090 hsize_t shape03=shape[4];
13093 item_type2second=sha1_type_;
13094 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
13096 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
13097
13098 }
13107 item_type0=sha1_type_;
13108 if(vldts_.count(VL_MAP_VL_STRING_PAIR_STRING_VECTOR_DOUBLE)==0){
13110 opened_types_.insert(vldts_[VL_MAP_VL_STRING_PAIR_STRING_VECTOR_DOUBLE]);
13111
13112 }
13114 field_types[i]=sha1_type_;
13115
13116 }else if(shape[0]<1&&shape[1]>=1&&shape[3]<1&&shape[4]>=1){
13120 item_type1key=sha1_type_;
13123 item_type2first=sha1_type_;
13125 hsize_t shape03=shape[4];
13128 item_type2second=sha1_type_;
13129 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
13131 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
13132
13133 }
13142 item_type0=sha1_type_;
13143 if(vldts_.count(VL_MAP_STRING_PAIR_VL_STRING_VECTOR_DOUBLE)==0){
13145 opened_types_.insert(vldts_[VL_MAP_STRING_PAIR_VL_STRING_VECTOR_DOUBLE]);
13146
13147 }
13149 field_types[i]=sha1_type_;
13150
13151 }else if(shape[0]<1&&shape[1]>=1&&shape[3]>=1&&shape[4]<1){
13155 item_type1key=sha1_type_;
13158 item_type2first=sha1_type_;
13162 item_type2second=sha1_type_;
13163 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
13165 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
13166
13167 }
13176 item_type0=sha1_type_;
13177 if(vldts_.count(VL_MAP_STRING_PAIR_STRING_VL_VECTOR_DOUBLE)==0){
13179 opened_types_.insert(vldts_[VL_MAP_STRING_PAIR_STRING_VL_VECTOR_DOUBLE]);
13180
13181 }
13183 field_types[i]=sha1_type_;
13184
13185 }else if(shape[0]<1&&shape[1]<1&&shape[3]<1&&shape[4]>=1){
13189 item_type1key=sha1_type_;
13192 item_type2first=sha1_type_;
13194 hsize_t shape03=shape[4];
13197 item_type2second=sha1_type_;
13198 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
13200 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
13201
13202 }
13211 item_type0=sha1_type_;
13214 opened_types_.insert(vldts_[VL_MAP_VL_STRING_PAIR_VL_STRING_VECTOR_DOUBLE]);
13215
13216 }
13218 field_types[i]=sha1_type_;
13219
13220 }else if(shape[0]<1&&shape[1]<1&&shape[3]>=1&&shape[4]<1){
13224 item_type1key=sha1_type_;
13227 item_type2first=sha1_type_;
13231 item_type2second=sha1_type_;
13232 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
13234 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
13235
13236 }
13245 item_type0=sha1_type_;
13248 opened_types_.insert(vldts_[VL_MAP_VL_STRING_PAIR_STRING_VL_VECTOR_DOUBLE]);
13249
13250 }
13252 field_types[i]=sha1_type_;
13253
13254 }else if(shape[0]<1&&shape[1]>=1&&shape[3]<1&&shape[4]<1){
13258 item_type1key=sha1_type_;
13261 item_type2first=sha1_type_;
13265 item_type2second=sha1_type_;
13266 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
13268 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
13269
13270 }
13279 item_type0=sha1_type_;
13282 opened_types_.insert(vldts_[VL_MAP_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE]);
13283
13284 }
13286 field_types[i]=sha1_type_;
13287
13288 }else{
13291 hsize_t shape01=shape[0];
13293 item_type1key=CreateFLStrType(shape[1]);
13296 item_type2first=CreateFLStrType(shape[3]);
13298 hsize_t shape03=shape[4];
13303 item_type2valcompound=H5Tcreate(H5T_COMPOUND, shape[3]+((sizeof(double))*shape[4]));
13305 H5Tinsert(item_type2valcompound, "second", 0+shape[3], item_type2second);
13307 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((shape[3]+((sizeof(double))*shape[4]))));
13311 dst_sizes[i]=((shape[1]+((shape[3]+((sizeof(double))*shape[4]))))*shape[0]);
13313 opened_types_.insert(item_type2second);
13314 opened_types_.insert(item_type2valcompound);
13315 opened_types_.insert(item_type1compound);
13316 opened_types_.insert(field_types[i]);
13317
13318 }
13319
13320 }else if(valtype==typeid(std::map<std::string, std::map<std::string, int>>)){
13321 shape=shapes[i];
13322 if(shape.empty()||shape[0]<1&&shape[1]<1&&shape[2]<1&&shape[3]<1){
13326 item_type1key=sha1_type_;
13329 item_type2key=sha1_type_;
13336 item_type1val=sha1_type_;
13337 if(vldts_.count(VL_MAP_VL_STRING_INT)==0){
13339 opened_types_.insert(vldts_[VL_MAP_VL_STRING_INT]);
13340
13341 }
13346 item_type0=sha1_type_;
13347 if(vldts_.count(VL_MAP_VL_STRING_VL_MAP_VL_STRING_INT)==0){
13349 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VL_MAP_VL_STRING_INT]);
13350
13351 }
13353 field_types[i]=sha1_type_;
13354
13355 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]>=1&&shape[3]<1){
13358 hsize_t shape01=shape[0];
13360 item_type1key=CreateFLStrType(shape[1]);
13362 hsize_t shape02=shape[2];
13364 item_type2key=sha1_type_;
13373 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((CYCLUS_SHA1_SIZE+sizeof(int))*shape[2]));
13375 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
13377 dst_sizes[i]=((shape[1]+((CYCLUS_SHA1_SIZE+sizeof(int))*shape[2]))*shape[0]);
13379 opened_types_.insert(item_type2valcompound);
13380 opened_types_.insert(item_type1val);
13381 opened_types_.insert(item_type1compound);
13382 opened_types_.insert(field_types[i]);
13383
13384 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]<1&&shape[3]>=1){
13387 hsize_t shape01=shape[0];
13389 item_type1key=CreateFLStrType(shape[1]);
13392 item_type2key=sha1_type_;
13399 item_type1val=sha1_type_;
13400 if(vldts_.count(VL_MAP_STRING_INT)==0){
13402 opened_types_.insert(vldts_[VL_MAP_STRING_INT]);
13403
13404 }
13408 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
13410 dst_sizes[i]=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
13412 opened_types_.insert(item_type2valcompound);
13413 opened_types_.insert(item_type1val);
13414 opened_types_.insert(item_type1compound);
13415 opened_types_.insert(field_types[i]);
13416
13417 }else if(shape[0]>=1&&shape[1]>=1&&shape[2]<1&&shape[3]<1){
13420 hsize_t shape01=shape[0];
13422 item_type1key=CreateFLStrType(shape[1]);
13425 item_type2key=sha1_type_;
13432 item_type1val=sha1_type_;
13433 if(vldts_.count(VL_MAP_VL_STRING_INT)==0){
13435 opened_types_.insert(vldts_[VL_MAP_VL_STRING_INT]);
13436
13437 }
13441 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
13443 dst_sizes[i]=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
13445 opened_types_.insert(item_type2valcompound);
13446 opened_types_.insert(item_type1val);
13447 opened_types_.insert(item_type1compound);
13448 opened_types_.insert(field_types[i]);
13449
13450 }else if(shape[0]>=1&&shape[1]<1&&shape[2]>=1&&shape[3]>=1){
13453 hsize_t shape01=shape[0];
13455 item_type1key=sha1_type_;
13457 hsize_t shape02=shape[2];
13459 item_type2key=CreateFLStrType(shape[3]);
13463 item_type2valcompound=H5Tcreate(H5T_COMPOUND, shape[3]+sizeof(int));
13465 H5Tinsert(item_type2valcompound, "val", 0+shape[3], item_type2val);
13468 item_type1compound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((shape[3]+sizeof(int))*shape[2]));
13472 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((shape[3]+sizeof(int))*shape[2]))*shape[0]);
13474 opened_types_.insert(item_type2valcompound);
13475 opened_types_.insert(item_type1val);
13476 opened_types_.insert(item_type1compound);
13477 opened_types_.insert(field_types[i]);
13478
13479 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1&&shape[3]>=1){
13482 hsize_t shape01=shape[0];
13484 item_type1key=sha1_type_;
13487 item_type2key=sha1_type_;
13494 item_type1val=sha1_type_;
13495 if(vldts_.count(VL_MAP_STRING_INT)==0){
13497 opened_types_.insert(vldts_[VL_MAP_STRING_INT]);
13498
13499 }
13507 opened_types_.insert(item_type2valcompound);
13508 opened_types_.insert(item_type1val);
13509 opened_types_.insert(item_type1compound);
13510 opened_types_.insert(field_types[i]);
13511
13512 }else if(shape[0]>=1&&shape[1]<1&&shape[2]>=1&&shape[3]<1){
13515 hsize_t shape01=shape[0];
13517 item_type1key=sha1_type_;
13519 hsize_t shape02=shape[2];
13521 item_type2key=sha1_type_;
13534 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((CYCLUS_SHA1_SIZE+sizeof(int))*shape[2]))*shape[0]);
13536 opened_types_.insert(item_type2valcompound);
13537 opened_types_.insert(item_type1val);
13538 opened_types_.insert(item_type1compound);
13539 opened_types_.insert(field_types[i]);
13540
13541 }else if(shape[0]>=1&&shape[1]<1&&shape[2]<1&&shape[3]<1){
13544 hsize_t shape01=shape[0];
13546 item_type1key=sha1_type_;
13549 item_type2key=sha1_type_;
13556 item_type1val=sha1_type_;
13557 if(vldts_.count(VL_MAP_VL_STRING_INT)==0){
13559 opened_types_.insert(vldts_[VL_MAP_VL_STRING_INT]);
13560
13561 }
13569 opened_types_.insert(item_type2valcompound);
13570 opened_types_.insert(item_type1val);
13571 opened_types_.insert(item_type1compound);
13572 opened_types_.insert(field_types[i]);
13573
13574 }else if(shape[0]<1&&shape[1]>=1&&shape[2]>=1&&shape[3]>=1){
13578 item_type1key=sha1_type_;
13580 hsize_t shape02=shape[2];
13582 item_type2key=sha1_type_;
13589 item_type1val=sha1_type_;
13590 if(vldts_.count(VL_MAP_VL_STRING_INT)==0){
13592 opened_types_.insert(vldts_[VL_MAP_VL_STRING_INT]);
13593
13594 }
13599 item_type0=sha1_type_;
13600 if(vldts_.count(VL_MAP_STRING_MAP_STRING_INT)==0){
13602 opened_types_.insert(vldts_[VL_MAP_STRING_MAP_STRING_INT]);
13603
13604 }
13606 field_types[i]=sha1_type_;
13607
13608 }else if(shape[0]<1&&shape[1]<1&&shape[2]>=1&&shape[3]>=1){
13612 item_type1key=sha1_type_;
13614 hsize_t shape02=shape[2];
13616 item_type2key=sha1_type_;
13623 item_type1val=sha1_type_;
13624 if(vldts_.count(VL_MAP_VL_STRING_INT)==0){
13626 opened_types_.insert(vldts_[VL_MAP_VL_STRING_INT]);
13627
13628 }
13633 item_type0=sha1_type_;
13634 if(vldts_.count(VL_MAP_VL_STRING_MAP_STRING_INT)==0){
13636 opened_types_.insert(vldts_[VL_MAP_VL_STRING_MAP_STRING_INT]);
13637
13638 }
13640 field_types[i]=sha1_type_;
13641
13642 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1&&shape[3]>=1){
13646 item_type1key=sha1_type_;
13649 item_type2key=sha1_type_;
13656 item_type1val=sha1_type_;
13657 if(vldts_.count(VL_MAP_VL_STRING_INT)==0){
13659 opened_types_.insert(vldts_[VL_MAP_VL_STRING_INT]);
13660
13661 }
13666 item_type0=sha1_type_;
13667 if(vldts_.count(VL_MAP_STRING_VL_MAP_STRING_INT)==0){
13669 opened_types_.insert(vldts_[VL_MAP_STRING_VL_MAP_STRING_INT]);
13670
13671 }
13673 field_types[i]=sha1_type_;
13674
13675 }else if(shape[0]<1&&shape[1]>=1&&shape[2]>=1&&shape[3]<1){
13679 item_type1key=sha1_type_;
13681 hsize_t shape02=shape[2];
13683 item_type2key=sha1_type_;
13690 item_type1val=sha1_type_;
13691 if(vldts_.count(VL_MAP_VL_STRING_INT)==0){
13693 opened_types_.insert(vldts_[VL_MAP_VL_STRING_INT]);
13694
13695 }
13700 item_type0=sha1_type_;
13701 if(vldts_.count(VL_MAP_STRING_MAP_VL_STRING_INT)==0){
13703 opened_types_.insert(vldts_[VL_MAP_STRING_MAP_VL_STRING_INT]);
13704
13705 }
13707 field_types[i]=sha1_type_;
13708
13709 }else if(shape[0]<1&&shape[1]>=1&&shape[2]<1&&shape[3]<1){
13713 item_type1key=sha1_type_;
13716 item_type2key=sha1_type_;
13723 item_type1val=sha1_type_;
13724 if(vldts_.count(VL_MAP_VL_STRING_INT)==0){
13726 opened_types_.insert(vldts_[VL_MAP_VL_STRING_INT]);
13727
13728 }
13733 item_type0=sha1_type_;
13734 if(vldts_.count(VL_MAP_STRING_VL_MAP_VL_STRING_INT)==0){
13736 opened_types_.insert(vldts_[VL_MAP_STRING_VL_MAP_VL_STRING_INT]);
13737
13738 }
13740 field_types[i]=sha1_type_;
13741
13742 }else if(shape[0]<1&&shape[1]<1&&shape[2]>=1&&shape[3]<1){
13746 item_type1key=sha1_type_;
13748 hsize_t shape02=shape[2];
13750 item_type2key=sha1_type_;
13757 item_type1val=sha1_type_;
13758 if(vldts_.count(VL_MAP_VL_STRING_INT)==0){
13760 opened_types_.insert(vldts_[VL_MAP_VL_STRING_INT]);
13761
13762 }
13767 item_type0=sha1_type_;
13768 if(vldts_.count(VL_MAP_VL_STRING_MAP_VL_STRING_INT)==0){
13770 opened_types_.insert(vldts_[VL_MAP_VL_STRING_MAP_VL_STRING_INT]);
13771
13772 }
13774 field_types[i]=sha1_type_;
13775
13776 }else if(shape[0]<1&&shape[1]<1&&shape[2]<1&&shape[3]>=1){
13780 item_type1key=sha1_type_;
13783 item_type2key=sha1_type_;
13790 item_type1val=sha1_type_;
13791 if(vldts_.count(VL_MAP_VL_STRING_INT)==0){
13793 opened_types_.insert(vldts_[VL_MAP_VL_STRING_INT]);
13794
13795 }
13800 item_type0=sha1_type_;
13801 if(vldts_.count(VL_MAP_VL_STRING_VL_MAP_STRING_INT)==0){
13803 opened_types_.insert(vldts_[VL_MAP_VL_STRING_VL_MAP_STRING_INT]);
13804
13805 }
13807 field_types[i]=sha1_type_;
13808
13809 }else{
13812 hsize_t shape01=shape[0];
13814 item_type1key=CreateFLStrType(shape[1]);
13816 hsize_t shape02=shape[2];
13818 item_type2key=CreateFLStrType(shape[3]);
13822 item_type2valcompound=H5Tcreate(H5T_COMPOUND, shape[3]+sizeof(int));
13824 H5Tinsert(item_type2valcompound, "val", 0+shape[3], item_type2val);
13827 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((shape[3]+sizeof(int))*shape[2]));
13829 H5Tinsert(item_type1compound, "val", 0+shape[1], item_type1val);
13831 dst_sizes[i]=((shape[1]+((shape[3]+sizeof(int))*shape[2]))*shape[0]);
13833 opened_types_.insert(item_type2valcompound);
13834 opened_types_.insert(item_type1val);
13835 opened_types_.insert(item_type1compound);
13836 opened_types_.insert(field_types[i]);
13837
13838 }
13839
13840 }else if(valtype==typeid(std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>)){
13841 shape=shapes[i];
13842 if(shape.empty()||shape[0]<1&&shape[5]<1&&shape[6]<1){
13852 item_type3firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
13854 H5Tinsert(item_type3firstcompound, "second", 0+sizeof(double), item_type3second);
13857 item_type3key=sha1_type_;
13864 item_type2second=sha1_type_;
13865 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
13867 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
13868
13869 }
13871 item_type2elemcompound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE));
13873 H5Tinsert(item_type2elemcompound, "second", 0+((sizeof(double)+sizeof(double))), item_type2second);
13874 item_type0=sha1_type_;
13878
13879 }
13881 field_types[i]=sha1_type_;
13882
13883 }else if(shape[0]>=1&&shape[5]>=1&&shape[6]<1){
13886 hsize_t shape01=shape[0];
13894 item_type3firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
13896 H5Tinsert(item_type3firstcompound, "second", 0+sizeof(double), item_type3second);
13898 hsize_t shape03=shape[5];
13900 item_type3key=sha1_type_;
13909 item_type2elemcompound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[5]));
13911 H5Tinsert(item_type2elemcompound, "second", 0+((sizeof(double)+sizeof(double))), item_type2second);
13913 dst_sizes[i]=((((((sizeof(double)+sizeof(double)))+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[5]))))*shape[0]);
13915 opened_types_.insert(item_type3firstcompound);
13916 opened_types_.insert(item_type3secondcompound);
13917 opened_types_.insert(item_type2second);
13918 opened_types_.insert(item_type2elemcompound);
13919 opened_types_.insert(field_types[i]);
13920
13921 }else if(shape[0]>=1&&shape[5]<1&&shape[6]>=1){
13924 hsize_t shape01=shape[0];
13932 item_type3firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
13934 H5Tinsert(item_type3firstcompound, "second", 0+sizeof(double), item_type3second);
13937 item_type3key=sha1_type_;
13944 item_type2second=sha1_type_;
13945 if(vldts_.count(VL_MAP_STRING_DOUBLE)==0){
13947 opened_types_.insert(vldts_[VL_MAP_STRING_DOUBLE]);
13948
13949 }
13951 item_type2elemcompound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE));
13953 H5Tinsert(item_type2elemcompound, "second", 0+((sizeof(double)+sizeof(double))), item_type2second);
13955 dst_sizes[i]=((((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE))))*shape[0]);
13957 opened_types_.insert(item_type3firstcompound);
13958 opened_types_.insert(item_type3secondcompound);
13959 opened_types_.insert(item_type2second);
13960 opened_types_.insert(item_type2elemcompound);
13961 opened_types_.insert(field_types[i]);
13962
13963 }else if(shape[0]>=1&&shape[5]<1&&shape[6]<1){
13966 hsize_t shape01=shape[0];
13974 item_type3firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
13976 H5Tinsert(item_type3firstcompound, "second", 0+sizeof(double), item_type3second);
13979 item_type3key=sha1_type_;
13986 item_type2second=sha1_type_;
13987 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
13989 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
13990
13991 }
13993 item_type2elemcompound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE));
13995 H5Tinsert(item_type2elemcompound, "second", 0+((sizeof(double)+sizeof(double))), item_type2second);
13997 dst_sizes[i]=((((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE))))*shape[0]);
13999 opened_types_.insert(item_type3firstcompound);
14000 opened_types_.insert(item_type3secondcompound);
14001 opened_types_.insert(item_type2second);
14002 opened_types_.insert(item_type2elemcompound);
14003 opened_types_.insert(field_types[i]);
14004
14005 }else if(shape[0]<1&&shape[5]>=1&&shape[6]>=1){
14015 item_type3firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
14017 H5Tinsert(item_type3firstcompound, "second", 0+sizeof(double), item_type3second);
14019 hsize_t shape03=shape[5];
14021 item_type3key=sha1_type_;
14028 item_type2second=sha1_type_;
14029 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
14031 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
14032
14033 }
14035 item_type2elemcompound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE));
14037 H5Tinsert(item_type2elemcompound, "second", 0+((sizeof(double)+sizeof(double))), item_type2second);
14038 item_type0=sha1_type_;
14041 opened_types_.insert(vldts_[VL_VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_MAP_STRING_DOUBLE]);
14042
14043 }
14045 field_types[i]=sha1_type_;
14046
14047 }else if(shape[0]<1&&shape[5]>=1&&shape[6]<1){
14057 item_type3firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
14059 H5Tinsert(item_type3firstcompound, "second", 0+sizeof(double), item_type3second);
14061 hsize_t shape03=shape[5];
14063 item_type3key=sha1_type_;
14070 item_type2second=sha1_type_;
14071 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
14073 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
14074
14075 }
14077 item_type2elemcompound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE));
14079 H5Tinsert(item_type2elemcompound, "second", 0+((sizeof(double)+sizeof(double))), item_type2second);
14080 item_type0=sha1_type_;
14083 opened_types_.insert(vldts_[VL_VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_MAP_VL_STRING_DOUBLE]);
14084
14085 }
14087 field_types[i]=sha1_type_;
14088
14089 }else if(shape[0]<1&&shape[5]<1&&shape[6]>=1){
14099 item_type3firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
14101 H5Tinsert(item_type3firstcompound, "second", 0+sizeof(double), item_type3second);
14104 item_type3key=sha1_type_;
14111 item_type2second=sha1_type_;
14112 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
14114 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
14115
14116 }
14118 item_type2elemcompound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE));
14120 H5Tinsert(item_type2elemcompound, "second", 0+((sizeof(double)+sizeof(double))), item_type2second);
14121 item_type0=sha1_type_;
14124 opened_types_.insert(vldts_[VL_VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_STRING_DOUBLE]);
14125
14126 }
14128 field_types[i]=sha1_type_;
14129
14130 }else{
14133 hsize_t shape01=shape[0];
14141 item_type3firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
14143 H5Tinsert(item_type3firstcompound, "second", 0+sizeof(double), item_type3second);
14145 hsize_t shape03=shape[5];
14147 item_type3key=CreateFLStrType(shape[6]);
14151 item_type3secondcompound=H5Tcreate(H5T_COMPOUND, shape[6]+sizeof(double));
14156 item_type2elemcompound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+((shape[6]+sizeof(double))*shape[5]));
14158 H5Tinsert(item_type2elemcompound, "second", 0+((sizeof(double)+sizeof(double))), item_type2second);
14160 dst_sizes[i]=((((((sizeof(double)+sizeof(double)))+((shape[6]+sizeof(double))*shape[5]))))*shape[0]);
14162 opened_types_.insert(item_type3firstcompound);
14163 opened_types_.insert(item_type3secondcompound);
14164 opened_types_.insert(item_type2second);
14165 opened_types_.insert(item_type2elemcompound);
14166 opened_types_.insert(field_types[i]);
14167
14168 }
14169
14170 }else if(valtype==typeid(std::pair<int, std::pair<std::string, std::string>>)){
14171 shape=shapes[i];
14172 if(shape.empty()||shape[3]<1&&shape[4]<1){
14179 item_type2first=sha1_type_;
14181 item_type2second=sha1_type_;
14189 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type2secondcompound);
14192 opened_types_.insert(item_type2secondcompound);
14193 opened_types_.insert(field_types[i]);
14194
14195 }else if(shape[3]<1&&shape[4]>=1){
14202 item_type2first=sha1_type_;
14204 item_type2second=CreateFLStrType(shape[4]);
14210 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+((CYCLUS_SHA1_SIZE+shape[4])));
14212 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type2secondcompound);
14213 dst_sizes[i]=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[4]))));
14215 opened_types_.insert(item_type2secondcompound);
14216 opened_types_.insert(field_types[i]);
14217
14218 }else if(shape[3]>=1&&shape[4]<1){
14225 item_type2first=CreateFLStrType(shape[3]);
14227 item_type2second=sha1_type_;
14231 H5Tinsert(item_type2secondcompound, "second", 0+shape[3], item_type2second);
14233 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+((shape[3]+CYCLUS_SHA1_SIZE)));
14235 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type2secondcompound);
14236 dst_sizes[i]=((sizeof(int)+((shape[3]+CYCLUS_SHA1_SIZE))));
14238 opened_types_.insert(item_type2secondcompound);
14239 opened_types_.insert(field_types[i]);
14240
14241 }else{
14248 item_type2first=CreateFLStrType(shape[3]);
14250 item_type2second=CreateFLStrType(shape[4]);
14254 H5Tinsert(item_type2secondcompound, "second", 0+shape[3], item_type2second);
14256 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(int)+((shape[3]+shape[4])));
14258 H5Tinsert(item_type1compound, "second", 0+sizeof(int), item_type2secondcompound);
14259 dst_sizes[i]=((sizeof(int)+((shape[3]+shape[4]))));
14261 opened_types_.insert(item_type2secondcompound);
14262 opened_types_.insert(field_types[i]);
14263
14264 }
14265
14266 }else if(valtype==typeid(std::pair<double, double>)){
14267 shape=shapes[i];
14275 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
14277 H5Tinsert(item_type1compound, "second", 0+sizeof(double), item_type1second);
14278 dst_sizes[i]=((sizeof(double)+sizeof(double)));
14280 opened_types_.insert(field_types[i]);
14281
14282 }else if(valtype==typeid(std::pair<std::pair<double, double>, std::map<std::string, double>>)){
14283 shape=shapes[i];
14284 if(shape.empty()||shape[4]<1&&shape[5]<1){
14293 item_type2firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
14295 H5Tinsert(item_type2firstcompound, "second", 0+sizeof(double), item_type2second);
14298 item_type2key=sha1_type_;
14305 item_type1second=sha1_type_;
14306 if(vldts_.count(VL_MAP_VL_STRING_DOUBLE)==0){
14308 opened_types_.insert(vldts_[VL_MAP_VL_STRING_DOUBLE]);
14309
14310 }
14312 item_type1compound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE));
14314 H5Tinsert(item_type1compound, "second", 0+((sizeof(double)+sizeof(double))), item_type1second);
14315 dst_sizes[i]=((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE)));
14317 opened_types_.insert(item_type2firstcompound);
14318 opened_types_.insert(item_type2secondcompound);
14319 opened_types_.insert(item_type1second);
14320 opened_types_.insert(field_types[i]);
14321
14322 }else if(shape[4]>=1&&shape[5]<1){
14331 item_type2firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
14333 H5Tinsert(item_type2firstcompound, "second", 0+sizeof(double), item_type2second);
14335 hsize_t shape02=shape[4];
14337 item_type2key=sha1_type_;
14346 item_type1compound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[4]));
14348 H5Tinsert(item_type1compound, "second", 0+((sizeof(double)+sizeof(double))), item_type1second);
14349 dst_sizes[i]=((((sizeof(double)+sizeof(double)))+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[4])));
14351 opened_types_.insert(item_type2firstcompound);
14352 opened_types_.insert(item_type2secondcompound);
14353 opened_types_.insert(item_type1second);
14354 opened_types_.insert(field_types[i]);
14355
14356 }else if(shape[4]<1&&shape[5]>=1){
14365 item_type2firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
14367 H5Tinsert(item_type2firstcompound, "second", 0+sizeof(double), item_type2second);
14370 item_type2key=sha1_type_;
14377 item_type1second=sha1_type_;
14378 if(vldts_.count(VL_MAP_STRING_DOUBLE)==0){
14380 opened_types_.insert(vldts_[VL_MAP_STRING_DOUBLE]);
14381
14382 }
14384 item_type1compound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE));
14386 H5Tinsert(item_type1compound, "second", 0+((sizeof(double)+sizeof(double))), item_type1second);
14387 dst_sizes[i]=((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE)));
14389 opened_types_.insert(item_type2firstcompound);
14390 opened_types_.insert(item_type2secondcompound);
14391 opened_types_.insert(item_type1second);
14392 opened_types_.insert(field_types[i]);
14393
14394 }else{
14403 item_type2firstcompound=H5Tcreate(H5T_COMPOUND, sizeof(double)+sizeof(double));
14405 H5Tinsert(item_type2firstcompound, "second", 0+sizeof(double), item_type2second);
14407 hsize_t shape02=shape[4];
14409 item_type2key=CreateFLStrType(shape[5]);
14413 item_type2secondcompound=H5Tcreate(H5T_COMPOUND, shape[5]+sizeof(double));
14418 item_type1compound=H5Tcreate(H5T_COMPOUND, ((sizeof(double)+sizeof(double)))+((shape[5]+sizeof(double))*shape[4]));
14420 H5Tinsert(item_type1compound, "second", 0+((sizeof(double)+sizeof(double))), item_type1second);
14421 dst_sizes[i]=((((sizeof(double)+sizeof(double)))+((shape[5]+sizeof(double))*shape[4])));
14423 opened_types_.insert(item_type2firstcompound);
14424 opened_types_.insert(item_type2secondcompound);
14425 opened_types_.insert(item_type1second);
14426 opened_types_.insert(field_types[i]);
14427
14428 }
14429
14430 }else if(valtype==typeid(std::pair<double, std::map<int, double>>)){
14431 shape=shapes[i];
14432 if(shape.empty()||shape[2]<1){
14443 item_type2secondcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
14445 H5Tinsert(item_type2secondcompound, "val", 0+sizeof(int), item_type2val);
14446 item_type1second=sha1_type_;
14447 if(vldts_.count(VL_MAP_INT_DOUBLE)==0){
14449 opened_types_.insert(vldts_[VL_MAP_INT_DOUBLE]);
14450
14451 }
14455 H5Tinsert(item_type1compound, "second", 0+sizeof(double), item_type1second);
14456 dst_sizes[i]=((sizeof(double)+(CYCLUS_SHA1_SIZE)));
14458 opened_types_.insert(item_type2secondcompound);
14459 opened_types_.insert(item_type1second);
14460 opened_types_.insert(field_types[i]);
14461
14462 }else{
14468 hsize_t shape02=shape[2];
14474 item_type2secondcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+sizeof(double));
14476 H5Tinsert(item_type2secondcompound, "val", 0+sizeof(int), item_type2val);
14479 item_type1compound=H5Tcreate(H5T_COMPOUND, sizeof(double)+((sizeof(int)+sizeof(double))*shape[2]));
14481 H5Tinsert(item_type1compound, "second", 0+sizeof(double), item_type1second);
14482 dst_sizes[i]=((sizeof(double)+((sizeof(int)+sizeof(double))*shape[2])));
14484 opened_types_.insert(item_type2secondcompound);
14485 opened_types_.insert(item_type1second);
14486 opened_types_.insert(field_types[i]);
14487
14488 }
14489
14490 }else if(valtype==typeid(std::vector<std::pair<int, std::pair<std::string, std::string>>>)){
14491 shape=shapes[i];
14492 if(shape.empty()||shape[0]<1&&shape[4]<1&&shape[5]<1){
14500 item_type3first=sha1_type_;
14502 item_type3second=sha1_type_;
14511 item_type0=sha1_type_;
14514 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING]);
14515
14516 }
14518 field_types[i]=sha1_type_;
14519
14520 }else if(shape[0]>=1&&shape[4]<1&&shape[5]>=1){
14523 hsize_t shape01=shape[0];
14529 item_type3first=sha1_type_;
14531 item_type3second=CreateFLStrType(shape[5]);
14541 dst_sizes[i]=((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[5])))))*shape[0]);
14543 opened_types_.insert(item_type3secondcompound);
14544 opened_types_.insert(item_type2elemcompound);
14545 opened_types_.insert(field_types[i]);
14546
14547 }else if(shape[0]>=1&&shape[4]>=1&&shape[5]<1){
14550 hsize_t shape01=shape[0];
14556 item_type3first=CreateFLStrType(shape[4]);
14558 item_type3second=sha1_type_;
14562 H5Tinsert(item_type3secondcompound, "second", 0+shape[4], item_type3second);
14568 dst_sizes[i]=((((sizeof(int)+((shape[4]+CYCLUS_SHA1_SIZE)))))*shape[0]);
14570 opened_types_.insert(item_type3secondcompound);
14571 opened_types_.insert(item_type2elemcompound);
14572 opened_types_.insert(field_types[i]);
14573
14574 }else if(shape[0]>=1&&shape[4]<1&&shape[5]<1){
14577 hsize_t shape01=shape[0];
14583 item_type3first=sha1_type_;
14585 item_type3second=sha1_type_;
14595 dst_sizes[i]=((((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)))))*shape[0]);
14597 opened_types_.insert(item_type3secondcompound);
14598 opened_types_.insert(item_type2elemcompound);
14599 opened_types_.insert(field_types[i]);
14600
14601 }else if(shape[0]<1&&shape[4]>=1&&shape[5]>=1){
14609 item_type3first=sha1_type_;
14611 item_type3second=sha1_type_;
14620 item_type0=sha1_type_;
14621 if(vldts_.count(VL_VECTOR_PAIR_INT_PAIR_STRING_STRING)==0){
14623 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_STRING_STRING]);
14624
14625 }
14627 field_types[i]=sha1_type_;
14628
14629 }else if(shape[0]<1&&shape[4]<1&&shape[5]>=1){
14637 item_type3first=sha1_type_;
14639 item_type3second=sha1_type_;
14648 item_type0=sha1_type_;
14649 if(vldts_.count(VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING)==0){
14651 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING]);
14652
14653 }
14655 field_types[i]=sha1_type_;
14656
14657 }else if(shape[0]<1&&shape[4]>=1&&shape[5]<1){
14665 item_type3first=sha1_type_;
14667 item_type3second=sha1_type_;
14676 item_type0=sha1_type_;
14677 if(vldts_.count(VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING)==0){
14679 opened_types_.insert(vldts_[VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING]);
14680
14681 }
14683 field_types[i]=sha1_type_;
14684
14685 }else{
14688 hsize_t shape01=shape[0];
14694 item_type3first=CreateFLStrType(shape[4]);
14696 item_type3second=CreateFLStrType(shape[5]);
14700 H5Tinsert(item_type3secondcompound, "second", 0+shape[4], item_type3second);
14702 item_type2elemcompound=H5Tcreate(H5T_COMPOUND, sizeof(int)+((shape[4]+shape[5])));
14706 dst_sizes[i]=((((sizeof(int)+((shape[4]+shape[5])))))*shape[0]);
14708 opened_types_.insert(item_type3secondcompound);
14709 opened_types_.insert(item_type2elemcompound);
14710 opened_types_.insert(field_types[i]);
14711
14712 }
14713
14714 }else if(valtype==typeid(std::pair<std::string, std::vector<double>>)){
14715 shape=shapes[i];
14716 if(shape.empty()||shape[1]<1&&shape[2]<1){
14720 item_type1first=sha1_type_;
14724 item_type1second=sha1_type_;
14725 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
14727 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
14728
14729 }
14736 opened_types_.insert(item_type1second);
14737 opened_types_.insert(field_types[i]);
14738
14739 }else if(shape[1]<1&&shape[2]>=1){
14743 item_type1first=sha1_type_;
14745 hsize_t shape02=shape[2];
14750 item_type1compound=H5Tcreate(H5T_COMPOUND, CYCLUS_SHA1_SIZE+((sizeof(double))*shape[2]));
14753 dst_sizes[i]=((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[2])));
14755 opened_types_.insert(item_type1second);
14756 opened_types_.insert(field_types[i]);
14757
14758 }else if(shape[1]>=1&&shape[2]<1){
14762 item_type1first=CreateFLStrType(shape[1]);
14766 item_type1second=sha1_type_;
14767 if(vldts_.count(VL_VECTOR_DOUBLE)==0){
14769 opened_types_.insert(vldts_[VL_VECTOR_DOUBLE]);
14770
14771 }
14775 H5Tinsert(item_type1compound, "second", 0+shape[1], item_type1second);
14776 dst_sizes[i]=((shape[1]+(CYCLUS_SHA1_SIZE)));
14778 opened_types_.insert(item_type1second);
14779 opened_types_.insert(field_types[i]);
14780
14781 }else{
14785 item_type1first=CreateFLStrType(shape[1]);
14787 hsize_t shape02=shape[2];
14792 item_type1compound=H5Tcreate(H5T_COMPOUND, shape[1]+((sizeof(double))*shape[2]));
14794 H5Tinsert(item_type1compound, "second", 0+shape[1], item_type1second);
14795 dst_sizes[i]=((shape[1]+((sizeof(double))*shape[2])));
14797 opened_types_.insert(item_type1second);
14798 opened_types_.insert(field_types[i]);
14799
14800 }
14801
14802 }else if(valtype==typeid(std::map<std::pair<std::string, std::string>, int>)){
14803 shape=shapes[i];
14804 if(shape.empty()||shape[0]<1&&shape[2]<1&&shape[3]<1){
14809 item_type2first=sha1_type_;
14811 item_type2second=sha1_type_;
14822 item_type0=sha1_type_;
14823 if(vldts_.count(VL_MAP_PAIR_VL_STRING_VL_STRING_INT)==0){
14825 opened_types_.insert(vldts_[VL_MAP_PAIR_VL_STRING_VL_STRING_INT]);
14826
14827 }
14829 field_types[i]=sha1_type_;
14830
14831 }else if(shape[0]>=1&&shape[2]>=1&&shape[3]<1){
14834 hsize_t shape01=shape[0];
14837 item_type2first=CreateFLStrType(shape[2]);
14839 item_type2second=sha1_type_;
14843 H5Tinsert(item_type2keycompound, "second", 0+shape[2], item_type2second);
14847 item_type1compound=H5Tcreate(H5T_COMPOUND, ((shape[2]+CYCLUS_SHA1_SIZE))+sizeof(int));
14851 dst_sizes[i]=((((shape[2]+CYCLUS_SHA1_SIZE))+sizeof(int))*shape[0]);
14853 opened_types_.insert(item_type2keycompound);
14854 opened_types_.insert(item_type1compound);
14855 opened_types_.insert(field_types[i]);
14856
14857 }else if(shape[0]>=1&&shape[2]<1&&shape[3]>=1){
14860 hsize_t shape01=shape[0];
14863 item_type2first=sha1_type_;
14865 item_type2second=CreateFLStrType(shape[3]);
14873 item_type1compound=H5Tcreate(H5T_COMPOUND, ((CYCLUS_SHA1_SIZE+shape[3]))+sizeof(int));
14877 dst_sizes[i]=((((CYCLUS_SHA1_SIZE+shape[3]))+sizeof(int))*shape[0]);
14879 opened_types_.insert(item_type2keycompound);
14880 opened_types_.insert(item_type1compound);
14881 opened_types_.insert(field_types[i]);
14882
14883 }else if(shape[0]>=1&&shape[2]<1&&shape[3]<1){
14886 hsize_t shape01=shape[0];
14889 item_type2first=sha1_type_;
14891 item_type2second=sha1_type_;
14903 dst_sizes[i]=((((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE))+sizeof(int))*shape[0]);
14905 opened_types_.insert(item_type2keycompound);
14906 opened_types_.insert(item_type1compound);
14907 opened_types_.insert(field_types[i]);
14908
14909 }else if(shape[0]<1&&shape[2]>=1&&shape[3]>=1){
14914 item_type2first=sha1_type_;
14916 item_type2second=sha1_type_;
14927 item_type0=sha1_type_;
14928 if(vldts_.count(VL_MAP_PAIR_STRING_STRING_INT)==0){
14930 opened_types_.insert(vldts_[VL_MAP_PAIR_STRING_STRING_INT]);
14931
14932 }
14934 field_types[i]=sha1_type_;
14935
14936 }else if(shape[0]<1&&shape[2]>=1&&shape[3]<1){
14941 item_type2first=sha1_type_;
14943 item_type2second=sha1_type_;
14954 item_type0=sha1_type_;
14955 if(vldts_.count(VL_MAP_PAIR_STRING_VL_STRING_INT)==0){
14957 opened_types_.insert(vldts_[VL_MAP_PAIR_STRING_VL_STRING_INT]);
14958
14959 }
14961 field_types[i]=sha1_type_;
14962
14963 }else if(shape[0]<1&&shape[2]<1&&shape[3]>=1){
14968 item_type2first=sha1_type_;
14970 item_type2second=sha1_type_;
14981 item_type0=sha1_type_;
14982 if(vldts_.count(VL_MAP_PAIR_VL_STRING_STRING_INT)==0){
14984 opened_types_.insert(vldts_[VL_MAP_PAIR_VL_STRING_STRING_INT]);
14985
14986 }
14988 field_types[i]=sha1_type_;
14989
14990 }else{
14993 hsize_t shape01=shape[0];
14996 item_type2first=CreateFLStrType(shape[2]);
14998 item_type2second=CreateFLStrType(shape[3]);
15000 item_type2keycompound=H5Tcreate(H5T_COMPOUND, shape[2]+shape[3]);
15002 H5Tinsert(item_type2keycompound, "second", 0+shape[2], item_type2second);
15006 item_type1compound=H5Tcreate(H5T_COMPOUND, ((shape[2]+shape[3]))+sizeof(int));
15008 H5Tinsert(item_type1compound, "val", 0+((shape[2]+shape[3])), item_type1val);
15010 dst_sizes[i]=((((shape[2]+shape[3]))+sizeof(int))*shape[0]);
15012 opened_types_.insert(item_type2keycompound);
15013 opened_types_.insert(item_type1compound);
15014 opened_types_.insert(field_types[i]);
15015
15016 }
15017
15018 }else{
15019 throw IOError("the type for column '"+std::string(field_names[i])+"' is not yet supported in HDF5.");
15020 }
15021
15022
15023 dst_size += dst_sizes[i];
15024 }
15025
15026 std::string titlestr = d->title();
15027 const char* title = titlestr.c_str();
15028 int compress = 1;
15029 int chunk_size = 1024;
15030 void* fill_data = NULL;
15031 void* data = NULL;
15032
15033 // Make the table
15034 status = H5TBmake_table(title, file_, title, nvals, 0, dst_size,
15036 fill_data, compress, data);
15037 if (status < 0) {
15038 std::stringstream ss;
15039 ss << "Failed to create HDF5 table:\n" \
15040 << " file " << path_ << "\n" \
15041 << " table " << title << "\n" \
15042 << " chunksize " << chunk_size << "\n" \
15043 << " rowsize " << dst_size << "\n";
15044 for (int i = 0; i < nvals; ++i) {
15045 ss << " #" << i << " " << field_names[i] << "\n" \
15046 << " dbtype: " << dbtypes[i] << "\n" \
15047 << " h5type: " << field_types[i] << "\n" \
15048 << " size: " << dst_sizes[i] << "\n" \
15049 << " offset: " << dst_offset[i] << "\n";
15050 }
15051 throw IOError(ss.str());
15052 }
15053
15054 // add dbtypes attribute
15055 hid_t tb_set = H5Dopen2(file_, title, H5P_DEFAULT);
15057 hid_t dbtypes_attr = H5Acreate2(tb_set, "cyclus_dbtypes", H5T_NATIVE_INT,
15062 for(int i = 0; i < nvals; ++i) {
15063 shape = shapes[i];
15064 hsize_t nshape = shape.size();
15065 // if no shape is present, we set a primitive size of 1.
15066 if(shape.size() == 0) {
15067 nshape = 1;
15068 }
15070 std::vector<int> shape_vector;
15071 for(int j = 0; j < shape.size(); ++j) {
15072 shape_vector.push_back(shape[j]);
15073 }
15074 // default shape value is -1, which denotes primitives
15075 if(shape.size() == 0) {
15076 shape_vector.push_back(-1);
15077 }
15078 std::stringstream col_name;
15079 col_name << "shape" << i;
15085 }
15087
15088 // record everything for later
15089 col_offsets_[d->title()] = dst_offset;
15090 schema_sizes_[d->title()] = dst_size;
15091 col_sizes_[d->title()] = dst_sizes;
15092 schemas_[d->title()] = dbtypes;
15093}
15094
15095std::map<std::string, DbTypes> Hdf5Back::ColumnTypes(std::string table) {
15096 using std::string;
15097 int i;
15098 char* colname;
15099 hid_t dset = H5Dopen2(file_, table.c_str(), H5P_DEFAULT);
15100 hid_t dt = H5Dget_type(dset);
15102 string fieldname;
15103 string fieldtype;
15104 LoadTableTypes(table, dset, ncols);
15105 DbTypes* dbtypes = schemas_[table];
15106
15107 // create return value
15108 std::map<string, DbTypes> rtn;
15109 for (i = 0; i < ncols; ++i) {
15110 colname = H5Tget_member_name(dt, i);
15111 fieldname = string(colname);
15112 free(colname);
15113 rtn[fieldname] = dbtypes[i];
15114 }
15115
15116 // close and return
15117 H5Tclose(dt);
15118 H5Dclose(dset);
15119 return rtn;
15120}
15121
15122std::list<ColumnInfo> Hdf5Back::Schema(std::string table) {
15123 std::list<ColumnInfo> schema;
15124 hid_t tb_set = H5Dopen2(file_, table.c_str(), H5P_DEFAULT);
15126 int i;
15128 LoadTableTypes(table, tb_set, ncols);
15129 DbTypes* dbtypes = schemas_[table];
15130 char * colname;
15131
15132 for (i = 0; i < ncols; ++i) {
15134 std::stringstream attr_name;
15135 attr_name << "shape" << i;
15139 std::vector<int> shape(ndims);
15140 H5Aread(attr_id, H5T_NATIVE_INT, &shape[0]);
15141 std::string colname_str = std::string(colname);
15142 ColumnInfo info = ColumnInfo(table, colname_str, i, dbtypes[i], shape);
15143 schema.push_back(info);
15144 free(colname);
15147 }
15150
15151 return schema;
15152}
15153
15154std::set<std::string> Hdf5Back::Tables() {
15155 using std::set;
15156 using std::string;
15158 hsize_t i;
15159 hsize_t n;
15161 char name[500];
15163 hid_t root = H5Gopen(file_, "/", H5P_DEFAULT);
15165 for (i = 0; i < root_info.nlinks; ++i) {
15167 NULL, 0, H5P_DEFAULT);
15169 name, namelen+1, H5P_DEFAULT);
15170 std::string str_name = std::string(name, namelen);
15171 if (str_name.size() >= 4 && str_name.substr(str_name.size()-4) != "Keys" && str_name.substr(str_name.size()-4) != "Vals") {
15172 rtn.insert(str_name);
15173 } else if (str_name.size() < 4) {
15174 rtn.insert(str_name);
15175 }
15176 }
15177 H5Gclose(root);
15178 return rtn;
15179}
15180
15181void Hdf5Back::WriteGroup(DatumList& group) {
15182 std::string title = group.front()->title();
15183 const char * c_title = title.c_str();
15184
15185 size_t* offsets = col_offsets_[title];
15186 size_t* sizes = col_sizes_[title];
15187 size_t rowsize = schema_sizes_[title];
15188
15189 char* buf = new char[group.size() * rowsize];
15190 FillBuf(title, buf, group, sizes, rowsize);
15191
15192 // We cannot do the simple thing (append_records) here because of a bug in
15193 // H5TB where it stupidly tries to reconstruct the datatype in memory from
15194 // what it read in on disk. This works in most cases but failed where the table
15195 // had a column which is an array of a compound datatype of non-homogenous
15196 // fields (eg MAP_INT_DOUBLE). The fix here just uses the datatype present on
15197 // disk - which is what we wanted anyway!
15198 //herr_t status = H5TBappend_records(file_, title.c_str(), group.size(), rowsize,
15199 // offsets, sizes, buf);
15200 herr_t status;
15201 hid_t dset = H5Dopen2(file_, title.c_str(), H5P_DEFAULT);
15203 hsize_t nrecords_add = group.size();
15206 hsize_t dims[1];
15207 hsize_t offset[1];
15208 hsize_t count[1];
15211 offset[0] = nrecords_orig;
15212 count[0] = nrecords_add;
15213
15214 status = H5Dset_extent(dset, dims);
15216 hid_t memspace = H5Screate_simple(1, count, NULL);
15217 status = H5Sselect_hyperslab(dspace, H5S_SELECT_SET, offset, NULL, count, NULL);
15219
15220 if (status < 0) {
15221 std::stringstream ss;
15222 ss << "Failed to write to the HDF5 table:\n" \
15223 << " file " << path_ << "\n" \
15224 << " table " << title << "\n" \
15225 << " num. rows " << group.size() << "\n"
15226 << " rowsize " << rowsize << "\n";
15227 for (int i = 0; i < group.front()->vals().size(); ++i) {
15228 ss << " # Column " << i << "\n" \
15229 << " dbtype: " << schemas_[title][i] << "\n" \
15230 << " size: " << sizes[i] << "\n" \
15231 << " offset: " << offsets[i] << "\n";
15232 }
15233 throw IOError(ss.str());
15234 }
15235
15238 H5Tclose(dtype);
15239 H5Dclose(dset);
15240 delete[] buf;
15241}
15242
15243template <typename T, DbTypes U>
15244Digest Hdf5Back::VLWrite(const T& x) {
15245 hasher_.Clear();
15246 hasher_.Update(x);
15247 Digest key = hasher_.digest();
15248 hid_t keysds = VLDataset(U, true);
15249 hid_t valsds = VLDataset(U, false);
15250 if (vlkeys_[U].count(key) == 1)
15251 return key;
15252 hvl_t buf = VLValToBuf(x);
15253 AppendVLKey(keysds, U, key);
15254 InsertVLVal(valsds, U, key, buf);
15255 return key;
15256}
15257
15258template <>
15259Digest Hdf5Back::VLWrite<std::string, VL_STRING>(const std::string& x) {
15260 hasher_.Clear();
15261 hasher_.Update(x);
15262 Digest key = hasher_.digest();
15263 hid_t keysds = VLDataset(VL_STRING, true);
15264 hid_t valsds = VLDataset(VL_STRING, false);
15265 if (vlkeys_[VL_STRING].count(key) == 1)
15266 return key;
15267 AppendVLKey(keysds, VL_STRING, key);
15268 InsertVLVal(valsds, VL_STRING, key, x);
15269 return key;
15270}
15271
15272template <>
15273Digest Hdf5Back::VLWrite<Blob, BLOB>(const Blob& x) {
15274 hasher_.Clear();
15275 hasher_.Update(x);
15276 Digest key = hasher_.digest();
15277 hid_t keysds = VLDataset(BLOB, true);
15278 hid_t valsds = VLDataset(BLOB, false);
15279 if (vlkeys_[BLOB].count(key) == 1)
15280 return key;
15281 AppendVLKey(keysds, BLOB, key);
15282 InsertVLVal(valsds, BLOB, key, x.str());
15283 return key;
15284}
15285
15286template<>
15287void Hdf5Back::WriteToBuf<BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15288 const void* val0;
15289 val0=a->castsmallvoid();
15290 size_t item_size0=sizeof(char);
15291 memcpy(buf, val0, column);
15292}
15293template<>
15294void Hdf5Back::WriteToBuf<INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15295 const void* val0;
15296 val0=a->castsmallvoid();
15297 size_t item_size0=sizeof(int);
15298 memcpy(buf, val0, column);
15299}
15300template<>
15301void Hdf5Back::WriteToBuf<FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15302 const void* val0;
15303 val0=a->castsmallvoid();
15304 size_t item_size0=sizeof(float);
15305 memcpy(buf, val0, column);
15306}
15307template<>
15308void Hdf5Back::WriteToBuf<DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15309 const void* val0;
15310 val0=a->castsmallvoid();
15311 size_t item_size0=sizeof(double);
15312 memcpy(buf, val0, column);
15313}
15314template<>
15315void Hdf5Back::WriteToBuf<STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15316 std::string val0=a->cast<std::string>();
15317 size_t item_size0=shape[0];
15318 size_t valuelen0;
15319 valuelen0=std::min(val0.size(), item_size0);
15320 memcpy(buf, val0.c_str(), valuelen0);
15322}
15323template<>
15324void Hdf5Back::WriteToBuf<VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15325 std::string val0=a->cast<std::string>();
15327 hasher_.Clear();
15328 hasher_.Update(val0);
15329 Digest key0 = hasher_.digest();
15330 hid_t keysds0 = VLDataset(VL_STRING, true);
15331 hid_t valsds0 = VLDataset(VL_STRING, false);
15332 if (vlkeys_[VL_STRING].count(key0) != 1) {
15333 AppendVLKey(keysds0, VL_STRING, key0);
15334 InsertVLVal(valsds0, VL_STRING, key0, val0);
15335 }
15337}
15338template<>
15339void Hdf5Back::WriteToBuf<BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15342 hasher_.Clear();
15343 hasher_.Update(val0);
15344 Digest key0 = hasher_.digest();
15345 hid_t keysds0 = VLDataset(BLOB, true);
15346 hid_t valsds0 = VLDataset(BLOB, false);
15347 if (vlkeys_[BLOB].count(key0) != 1) {
15348 AppendVLKey(keysds0, BLOB, key0);
15349 InsertVLVal(valsds0, BLOB, key0, (val0).str());
15350 }
15352}
15353template<>
15354void Hdf5Back::WriteToBuf<UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15355 boost::uuids::uuid val0=a->cast<boost::uuids::uuid>();
15357 memcpy(buf, &(val0), item_size0);
15358}
15359template<>
15360void Hdf5Back::WriteToBuf<VECTOR_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15361 std::vector<int> val0=a->cast<std::vector<int>>();
15362 size_t item_size0=((sizeof(int))*shape[0]);
15363 size_t length0=shape[0];
15364 size_t item_size1elem=sizeof(int);
15366 if(total_item_size0*val0.size()>column){
15367 std::vector<int>::iterator eraseit=val0.begin();
15368 std::advance(eraseit, column/total_item_size0);
15369 val0.erase(eraseit,val0.end());
15370
15371 }
15372 unsigned int count0=0;
15373 std::vector<int>::iterator it0=val0.begin();
15374 for(;it0!=val0.end();++it0){
15376 ++count0;
15377
15378 }
15381
15382 }
15383}
15384template<>
15385void Hdf5Back::WriteToBuf<VL_VECTOR_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15386 std::vector<int> val0=a->cast<std::vector<int>>();
15388 size_t item_size1elem=sizeof(int);
15390 hasher_.Clear();
15391 hasher_.Update(val0);
15392 Digest key0 = hasher_.digest();
15393 hid_t keysds0 = VLDataset(VL_VECTOR_INT, true);
15394 hid_t valsds0 = VLDataset(VL_VECTOR_INT, false);
15395 if (vlkeys_[VL_VECTOR_INT].count(key0) != 1) {
15396 hvl_t buf0 = VLValToBuf(val0);
15397 AppendVLKey(keysds0, VL_VECTOR_INT, key0);
15398 InsertVLVal(valsds0, VL_VECTOR_INT, key0, buf0);
15399 }
15401}
15402template<>
15403void Hdf5Back::WriteToBuf<VECTOR_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15404 std::vector<float> val0=a->cast<std::vector<float>>();
15405 size_t item_size0=((sizeof(float))*shape[0]);
15406 size_t length0=shape[0];
15407 size_t item_size1elem=sizeof(float);
15409 if(total_item_size0*val0.size()>column){
15410 std::vector<float>::iterator eraseit=val0.begin();
15411 std::advance(eraseit, column/total_item_size0);
15412 val0.erase(eraseit,val0.end());
15413
15414 }
15415 unsigned int count0=0;
15416 std::vector<float>::iterator it0=val0.begin();
15417 for(;it0!=val0.end();++it0){
15419 ++count0;
15420
15421 }
15424
15425 }
15426}
15427template<>
15428void Hdf5Back::WriteToBuf<VL_VECTOR_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15429 std::vector<float> val0=a->cast<std::vector<float>>();
15431 size_t item_size1elem=sizeof(float);
15433 hasher_.Clear();
15434 hasher_.Update(val0);
15435 Digest key0 = hasher_.digest();
15436 hid_t keysds0 = VLDataset(VL_VECTOR_FLOAT, true);
15437 hid_t valsds0 = VLDataset(VL_VECTOR_FLOAT, false);
15438 if (vlkeys_[VL_VECTOR_FLOAT].count(key0) != 1) {
15439 hvl_t buf0 = VLValToBuf(val0);
15440 AppendVLKey(keysds0, VL_VECTOR_FLOAT, key0);
15441 InsertVLVal(valsds0, VL_VECTOR_FLOAT, key0, buf0);
15442 }
15444}
15445template<>
15446void Hdf5Back::WriteToBuf<VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15447 std::vector<double> val0=a->cast<std::vector<double>>();
15448 size_t item_size0=((sizeof(double))*shape[0]);
15449 size_t length0=shape[0];
15450 size_t item_size1elem=sizeof(double);
15452 if(total_item_size0*val0.size()>column){
15453 std::vector<double>::iterator eraseit=val0.begin();
15454 std::advance(eraseit, column/total_item_size0);
15455 val0.erase(eraseit,val0.end());
15456
15457 }
15458 unsigned int count0=0;
15459 std::vector<double>::iterator it0=val0.begin();
15460 for(;it0!=val0.end();++it0){
15462 ++count0;
15463
15464 }
15467
15468 }
15469}
15470template<>
15471void Hdf5Back::WriteToBuf<VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15472 std::vector<double> val0=a->cast<std::vector<double>>();
15474 size_t item_size1elem=sizeof(double);
15476 hasher_.Clear();
15477 hasher_.Update(val0);
15478 Digest key0 = hasher_.digest();
15479 hid_t keysds0 = VLDataset(VL_VECTOR_DOUBLE, true);
15480 hid_t valsds0 = VLDataset(VL_VECTOR_DOUBLE, false);
15481 if (vlkeys_[VL_VECTOR_DOUBLE].count(key0) != 1) {
15482 hvl_t buf0 = VLValToBuf(val0);
15483 AppendVLKey(keysds0, VL_VECTOR_DOUBLE, key0);
15484 InsertVLVal(valsds0, VL_VECTOR_DOUBLE, key0, buf0);
15485 }
15487}
15488template<>
15489void Hdf5Back::WriteToBuf<VECTOR_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15490 std::vector<std::string> val0=a->cast<std::vector<std::string>>();
15491 size_t item_size0=((shape[1])*shape[0]);
15492 size_t length0=shape[0];
15493 size_t item_size1elem=shape[1];
15494 size_t valuelen1elem;
15496 if(total_item_size0*val0.size()>column){
15497 std::vector<std::string>::iterator eraseit=val0.begin();
15498 std::advance(eraseit, column/total_item_size0);
15499 val0.erase(eraseit,val0.end());
15500
15501 }
15502 unsigned int count0=0;
15503 std::vector<std::string>::iterator it0=val0.begin();
15504 for(;it0!=val0.end();++it0){
15505 valuelen1elem=std::min(it0->size(), item_size1elem);
15508 ++count0;
15509
15510 }
15513
15514 }
15515}
15516template<>
15517void Hdf5Back::WriteToBuf<VL_VECTOR_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15518 std::vector<std::string> val0=a->cast<std::vector<std::string>>();
15520 size_t item_size1elem=shape[1];
15521 size_t valuelen1elem;
15523 unsigned int count0=0;
15524 std::vector<std::string>::iterator it0=val0.begin();
15525 std::vector<std::string> fixed_val0;
15526 unsigned int pad_count0=0;
15527 for(;it0!=val0.end();++it0){
15528 std::string child1elem=std::string((*it0),0,item_size1elem);
15529 fixed_val0.push_back(child1elem);
15530 ++pad_count0;
15531
15532 }
15533 hasher_.Clear();
15534 hasher_.Update(fixed_val0);
15535 Digest key0 = hasher_.digest();
15536 hid_t keysds0 = VLDataset(VL_VECTOR_STRING, true);
15537 hid_t valsds0 = VLDataset(VL_VECTOR_STRING, false);
15538 if (vlkeys_[VL_VECTOR_STRING].count(key0) != 1) {
15539 hvl_t buf0 = VLValToBuf(fixed_val0);
15540 AppendVLKey(keysds0, VL_VECTOR_STRING, key0);
15541 InsertVLVal(valsds0, VL_VECTOR_STRING, key0, buf0);
15542 }
15544}
15545template<>
15546void Hdf5Back::WriteToBuf<VECTOR_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15547 std::vector<std::string> val0=a->cast<std::vector<std::string>>();
15548 size_t item_size0=((CYCLUS_SHA1_SIZE)*shape[0]);
15549 size_t length0=shape[0];
15552 if(total_item_size0*val0.size()>column){
15553 std::vector<std::string>::iterator eraseit=val0.begin();
15554 std::advance(eraseit, column/total_item_size0);
15555 val0.erase(eraseit,val0.end());
15556
15557 }
15558 unsigned int count0=0;
15559 std::vector<std::string>::iterator it0=val0.begin();
15560 for(;it0!=val0.end();++it0){
15561 hasher_.Clear();
15562 hasher_.Update(*it0);
15563 Digest key1elem = hasher_.digest();
15564 hid_t keysds1elem = VLDataset(VL_STRING, true);
15565 hid_t valsds1elem = VLDataset(VL_STRING, false);
15566 if (vlkeys_[VL_STRING].count(key1elem) != 1) {
15567 AppendVLKey(keysds1elem, VL_STRING, key1elem);
15568 InsertVLVal(valsds1elem, VL_STRING, key1elem, *it0);
15569 }
15571 ++count0;
15572
15573 }
15576
15577 }
15578}
15579template<>
15580void Hdf5Back::WriteToBuf<VL_VECTOR_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15581 std::vector<std::string> val0=a->cast<std::vector<std::string>>();
15585 hasher_.Clear();
15586 hasher_.Update(val0);
15587 Digest key0 = hasher_.digest();
15588 hid_t keysds0 = VLDataset(VL_VECTOR_VL_STRING, true);
15589 hid_t valsds0 = VLDataset(VL_VECTOR_VL_STRING, false);
15590 if (vlkeys_[VL_VECTOR_VL_STRING].count(key0) != 1) {
15591 hvl_t buf0 = VLValToBuf(val0);
15592 AppendVLKey(keysds0, VL_VECTOR_VL_STRING, key0);
15593 InsertVLVal(valsds0, VL_VECTOR_VL_STRING, key0, buf0);
15594 }
15596}
15597template<>
15598void Hdf5Back::WriteToBuf<VECTOR_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15599 std::vector<cyclus::Blob> val0=a->cast<std::vector<cyclus::Blob>>();
15600 size_t item_size0=((CYCLUS_SHA1_SIZE)*shape[0]);
15601 size_t length0=shape[0];
15604 if(total_item_size0*val0.size()>column){
15605 std::vector<cyclus::Blob>::iterator eraseit=val0.begin();
15606 std::advance(eraseit, column/total_item_size0);
15607 val0.erase(eraseit,val0.end());
15608
15609 }
15610 unsigned int count0=0;
15611 std::vector<cyclus::Blob>::iterator it0=val0.begin();
15612 for(;it0!=val0.end();++it0){
15613 hasher_.Clear();
15614 hasher_.Update(*it0);
15615 Digest key1elem = hasher_.digest();
15616 hid_t keysds1elem = VLDataset(BLOB, true);
15617 hid_t valsds1elem = VLDataset(BLOB, false);
15618 if (vlkeys_[BLOB].count(key1elem) != 1) {
15619 AppendVLKey(keysds1elem, BLOB, key1elem);
15620 InsertVLVal(valsds1elem, BLOB, key1elem, (*it0).str());
15621 }
15623 ++count0;
15624
15625 }
15628
15629 }
15630}
15631template<>
15632void Hdf5Back::WriteToBuf<VL_VECTOR_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15633 std::vector<cyclus::Blob> val0=a->cast<std::vector<cyclus::Blob>>();
15637 hasher_.Clear();
15638 hasher_.Update(val0);
15639 Digest key0 = hasher_.digest();
15640 hid_t keysds0 = VLDataset(VL_VECTOR_BLOB, true);
15641 hid_t valsds0 = VLDataset(VL_VECTOR_BLOB, false);
15642 if (vlkeys_[VL_VECTOR_BLOB].count(key0) != 1) {
15643 hvl_t buf0 = VLValToBuf(val0);
15644 AppendVLKey(keysds0, VL_VECTOR_BLOB, key0);
15645 InsertVLVal(valsds0, VL_VECTOR_BLOB, key0, buf0);
15646 }
15648}
15649template<>
15650void Hdf5Back::WriteToBuf<VECTOR_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15651 std::vector<boost::uuids::uuid> val0=a->cast<std::vector<boost::uuids::uuid>>();
15652 size_t item_size0=((CYCLUS_UUID_SIZE)*shape[0]);
15653 size_t length0=shape[0];
15656 if(total_item_size0*val0.size()>column){
15657 std::vector<boost::uuids::uuid>::iterator eraseit=val0.begin();
15658 std::advance(eraseit, column/total_item_size0);
15659 val0.erase(eraseit,val0.end());
15660
15661 }
15662 unsigned int count0=0;
15663 std::vector<boost::uuids::uuid>::iterator it0=val0.begin();
15664 for(;it0!=val0.end();++it0){
15666 ++count0;
15667
15668 }
15671
15672 }
15673}
15674template<>
15675void Hdf5Back::WriteToBuf<VL_VECTOR_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15676 std::vector<boost::uuids::uuid> val0=a->cast<std::vector<boost::uuids::uuid>>();
15680 hasher_.Clear();
15681 hasher_.Update(val0);
15682 Digest key0 = hasher_.digest();
15683 hid_t keysds0 = VLDataset(VL_VECTOR_UUID, true);
15684 hid_t valsds0 = VLDataset(VL_VECTOR_UUID, false);
15685 if (vlkeys_[VL_VECTOR_UUID].count(key0) != 1) {
15686 hvl_t buf0 = VLValToBuf(val0);
15687 AppendVLKey(keysds0, VL_VECTOR_UUID, key0);
15688 InsertVLVal(valsds0, VL_VECTOR_UUID, key0, buf0);
15689 }
15691}
15692template<>
15693void Hdf5Back::WriteToBuf<SET_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15694 std::set<int> val0=a->cast<std::set<int>>();
15695 size_t item_size0=((sizeof(int))*shape[0]);
15696 size_t length0=shape[0];
15697 size_t item_size1elem=sizeof(int);
15699 if(total_item_size0*val0.size()>column){
15700 std::set<int>::iterator eraseit=val0.begin();
15701 std::advance(eraseit, column/total_item_size0);
15702 val0.erase(eraseit,val0.end());
15703
15704 }
15705 unsigned int count0=0;
15706 std::set<int>::iterator it0=val0.begin();
15707 for(;it0!=val0.end();++it0){
15709 ++count0;
15710
15711 }
15714
15715 }
15716}
15717template<>
15718void Hdf5Back::WriteToBuf<VL_SET_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15719 std::set<int> val0=a->cast<std::set<int>>();
15721 size_t item_size1elem=sizeof(int);
15723 hasher_.Clear();
15724 hasher_.Update(val0);
15725 Digest key0 = hasher_.digest();
15726 hid_t keysds0 = VLDataset(VL_SET_INT, true);
15727 hid_t valsds0 = VLDataset(VL_SET_INT, false);
15728 if (vlkeys_[VL_SET_INT].count(key0) != 1) {
15729 hvl_t buf0 = VLValToBuf(val0);
15730 AppendVLKey(keysds0, VL_SET_INT, key0);
15731 InsertVLVal(valsds0, VL_SET_INT, key0, buf0);
15732 }
15734}
15735template<>
15736void Hdf5Back::WriteToBuf<SET_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15737 std::set<float> val0=a->cast<std::set<float>>();
15738 size_t item_size0=((sizeof(float))*shape[0]);
15739 size_t length0=shape[0];
15740 size_t item_size1elem=sizeof(float);
15742 if(total_item_size0*val0.size()>column){
15743 std::set<float>::iterator eraseit=val0.begin();
15744 std::advance(eraseit, column/total_item_size0);
15745 val0.erase(eraseit,val0.end());
15746
15747 }
15748 unsigned int count0=0;
15749 std::set<float>::iterator it0=val0.begin();
15750 for(;it0!=val0.end();++it0){
15752 ++count0;
15753
15754 }
15757
15758 }
15759}
15760template<>
15761void Hdf5Back::WriteToBuf<VL_SET_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15762 std::set<float> val0=a->cast<std::set<float>>();
15764 size_t item_size1elem=sizeof(float);
15766 hasher_.Clear();
15767 hasher_.Update(val0);
15768 Digest key0 = hasher_.digest();
15769 hid_t keysds0 = VLDataset(VL_SET_FLOAT, true);
15770 hid_t valsds0 = VLDataset(VL_SET_FLOAT, false);
15771 if (vlkeys_[VL_SET_FLOAT].count(key0) != 1) {
15772 hvl_t buf0 = VLValToBuf(val0);
15773 AppendVLKey(keysds0, VL_SET_FLOAT, key0);
15774 InsertVLVal(valsds0, VL_SET_FLOAT, key0, buf0);
15775 }
15777}
15778template<>
15779void Hdf5Back::WriteToBuf<SET_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15780 std::set<double> val0=a->cast<std::set<double>>();
15781 size_t item_size0=((sizeof(double))*shape[0]);
15782 size_t length0=shape[0];
15783 size_t item_size1elem=sizeof(double);
15785 if(total_item_size0*val0.size()>column){
15786 std::set<double>::iterator eraseit=val0.begin();
15787 std::advance(eraseit, column/total_item_size0);
15788 val0.erase(eraseit,val0.end());
15789
15790 }
15791 unsigned int count0=0;
15792 std::set<double>::iterator it0=val0.begin();
15793 for(;it0!=val0.end();++it0){
15795 ++count0;
15796
15797 }
15800
15801 }
15802}
15803template<>
15804void Hdf5Back::WriteToBuf<VL_SET_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15805 std::set<double> val0=a->cast<std::set<double>>();
15807 size_t item_size1elem=sizeof(double);
15809 hasher_.Clear();
15810 hasher_.Update(val0);
15811 Digest key0 = hasher_.digest();
15812 hid_t keysds0 = VLDataset(VL_SET_DOUBLE, true);
15813 hid_t valsds0 = VLDataset(VL_SET_DOUBLE, false);
15814 if (vlkeys_[VL_SET_DOUBLE].count(key0) != 1) {
15815 hvl_t buf0 = VLValToBuf(val0);
15816 AppendVLKey(keysds0, VL_SET_DOUBLE, key0);
15817 InsertVLVal(valsds0, VL_SET_DOUBLE, key0, buf0);
15818 }
15820}
15821template<>
15822void Hdf5Back::WriteToBuf<SET_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15823 std::set<std::string> val0=a->cast<std::set<std::string>>();
15824 size_t item_size0=((shape[1])*shape[0]);
15825 size_t length0=shape[0];
15826 size_t item_size1elem=shape[1];
15827 size_t valuelen1elem;
15829 if(total_item_size0*val0.size()>column){
15830 std::set<std::string>::iterator eraseit=val0.begin();
15831 std::advance(eraseit, column/total_item_size0);
15832 val0.erase(eraseit,val0.end());
15833
15834 }
15835 unsigned int count0=0;
15836 std::set<std::string>::iterator it0=val0.begin();
15837 for(;it0!=val0.end();++it0){
15838 valuelen1elem=std::min(it0->size(), item_size1elem);
15841 ++count0;
15842
15843 }
15846
15847 }
15848}
15849template<>
15850void Hdf5Back::WriteToBuf<VL_SET_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15851 std::set<std::string> val0=a->cast<std::set<std::string>>();
15853 size_t item_size1elem=shape[1];
15854 size_t valuelen1elem;
15856 unsigned int count0=0;
15857 std::set<std::string>::iterator it0=val0.begin();
15858 std::set<std::string> fixed_val0;
15859 unsigned int pad_count0=0;
15860 for(;it0!=val0.end();++it0){
15861 std::string child1elem=std::string((*it0),0,item_size1elem);
15862 fixed_val0.insert(child1elem);
15863 ++pad_count0;
15864
15865 }
15866 hasher_.Clear();
15867 hasher_.Update(fixed_val0);
15868 Digest key0 = hasher_.digest();
15869 hid_t keysds0 = VLDataset(VL_SET_STRING, true);
15870 hid_t valsds0 = VLDataset(VL_SET_STRING, false);
15871 if (vlkeys_[VL_SET_STRING].count(key0) != 1) {
15872 hvl_t buf0 = VLValToBuf(fixed_val0);
15873 AppendVLKey(keysds0, VL_SET_STRING, key0);
15874 InsertVLVal(valsds0, VL_SET_STRING, key0, buf0);
15875 }
15877}
15878template<>
15879void Hdf5Back::WriteToBuf<SET_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15880 std::set<std::string> val0=a->cast<std::set<std::string>>();
15881 size_t item_size0=((CYCLUS_SHA1_SIZE)*shape[0]);
15882 size_t length0=shape[0];
15885 if(total_item_size0*val0.size()>column){
15886 std::set<std::string>::iterator eraseit=val0.begin();
15887 std::advance(eraseit, column/total_item_size0);
15888 val0.erase(eraseit,val0.end());
15889
15890 }
15891 unsigned int count0=0;
15892 std::set<std::string>::iterator it0=val0.begin();
15893 for(;it0!=val0.end();++it0){
15894 hasher_.Clear();
15895 hasher_.Update(*it0);
15896 Digest key1elem = hasher_.digest();
15897 hid_t keysds1elem = VLDataset(VL_STRING, true);
15898 hid_t valsds1elem = VLDataset(VL_STRING, false);
15899 if (vlkeys_[VL_STRING].count(key1elem) != 1) {
15900 AppendVLKey(keysds1elem, VL_STRING, key1elem);
15901 InsertVLVal(valsds1elem, VL_STRING, key1elem, *it0);
15902 }
15904 ++count0;
15905
15906 }
15909
15910 }
15911}
15912template<>
15913void Hdf5Back::WriteToBuf<VL_SET_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15914 std::set<std::string> val0=a->cast<std::set<std::string>>();
15918 hasher_.Clear();
15919 hasher_.Update(val0);
15920 Digest key0 = hasher_.digest();
15921 hid_t keysds0 = VLDataset(VL_SET_VL_STRING, true);
15922 hid_t valsds0 = VLDataset(VL_SET_VL_STRING, false);
15923 if (vlkeys_[VL_SET_VL_STRING].count(key0) != 1) {
15924 hvl_t buf0 = VLValToBuf(val0);
15925 AppendVLKey(keysds0, VL_SET_VL_STRING, key0);
15926 InsertVLVal(valsds0, VL_SET_VL_STRING, key0, buf0);
15927 }
15929}
15930template<>
15931void Hdf5Back::WriteToBuf<SET_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15932 std::set<cyclus::Blob> val0=a->cast<std::set<cyclus::Blob>>();
15933 size_t item_size0=((CYCLUS_SHA1_SIZE)*shape[0]);
15934 size_t length0=shape[0];
15937 if(total_item_size0*val0.size()>column){
15938 std::set<cyclus::Blob>::iterator eraseit=val0.begin();
15939 std::advance(eraseit, column/total_item_size0);
15940 val0.erase(eraseit,val0.end());
15941
15942 }
15943 unsigned int count0=0;
15944 std::set<cyclus::Blob>::iterator it0=val0.begin();
15945 for(;it0!=val0.end();++it0){
15946 hasher_.Clear();
15947 hasher_.Update(*it0);
15948 Digest key1elem = hasher_.digest();
15949 hid_t keysds1elem = VLDataset(BLOB, true);
15950 hid_t valsds1elem = VLDataset(BLOB, false);
15951 if (vlkeys_[BLOB].count(key1elem) != 1) {
15952 AppendVLKey(keysds1elem, BLOB, key1elem);
15953 InsertVLVal(valsds1elem, BLOB, key1elem, (*it0).str());
15954 }
15956 ++count0;
15957
15958 }
15961
15962 }
15963}
15964template<>
15965void Hdf5Back::WriteToBuf<VL_SET_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15966 std::set<cyclus::Blob> val0=a->cast<std::set<cyclus::Blob>>();
15970 hasher_.Clear();
15971 hasher_.Update(val0);
15972 Digest key0 = hasher_.digest();
15973 hid_t keysds0 = VLDataset(VL_SET_BLOB, true);
15974 hid_t valsds0 = VLDataset(VL_SET_BLOB, false);
15975 if (vlkeys_[VL_SET_BLOB].count(key0) != 1) {
15976 hvl_t buf0 = VLValToBuf(val0);
15977 AppendVLKey(keysds0, VL_SET_BLOB, key0);
15978 InsertVLVal(valsds0, VL_SET_BLOB, key0, buf0);
15979 }
15981}
15982template<>
15983void Hdf5Back::WriteToBuf<SET_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
15984 std::set<boost::uuids::uuid> val0=a->cast<std::set<boost::uuids::uuid>>();
15985 size_t item_size0=((CYCLUS_UUID_SIZE)*shape[0]);
15986 size_t length0=shape[0];
15989 if(total_item_size0*val0.size()>column){
15990 std::set<boost::uuids::uuid>::iterator eraseit=val0.begin();
15991 std::advance(eraseit, column/total_item_size0);
15992 val0.erase(eraseit,val0.end());
15993
15994 }
15995 unsigned int count0=0;
15996 std::set<boost::uuids::uuid>::iterator it0=val0.begin();
15997 for(;it0!=val0.end();++it0){
15999 ++count0;
16000
16001 }
16004
16005 }
16006}
16007template<>
16008void Hdf5Back::WriteToBuf<VL_SET_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16009 std::set<boost::uuids::uuid> val0=a->cast<std::set<boost::uuids::uuid>>();
16013 hasher_.Clear();
16014 hasher_.Update(val0);
16015 Digest key0 = hasher_.digest();
16016 hid_t keysds0 = VLDataset(VL_SET_UUID, true);
16017 hid_t valsds0 = VLDataset(VL_SET_UUID, false);
16018 if (vlkeys_[VL_SET_UUID].count(key0) != 1) {
16019 hvl_t buf0 = VLValToBuf(val0);
16020 AppendVLKey(keysds0, VL_SET_UUID, key0);
16021 InsertVLVal(valsds0, VL_SET_UUID, key0, buf0);
16022 }
16024}
16025template<>
16026void Hdf5Back::WriteToBuf<LIST_BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16027 std::list<bool> val0=a->cast<std::list<bool>>();
16028 size_t item_size0=((sizeof(char))*shape[0]);
16029 size_t length0=shape[0];
16030 size_t item_size1elem=sizeof(char);
16032 if(total_item_size0*val0.size()>column){
16033 std::list<bool>::iterator eraseit=val0.begin();
16034 std::advance(eraseit, column/total_item_size0);
16035 val0.erase(eraseit,val0.end());
16036
16037 }
16038 unsigned int count0=0;
16039 std::list<bool>::iterator it0=val0.begin();
16040 for(;it0!=val0.end();++it0){
16042 ++count0;
16043
16044 }
16047
16048 }
16049}
16050template<>
16051void Hdf5Back::WriteToBuf<VL_LIST_BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16052 std::list<bool> val0=a->cast<std::list<bool>>();
16054 size_t item_size1elem=sizeof(char);
16056 hasher_.Clear();
16057 hasher_.Update(val0);
16058 Digest key0 = hasher_.digest();
16059 hid_t keysds0 = VLDataset(VL_LIST_BOOL, true);
16060 hid_t valsds0 = VLDataset(VL_LIST_BOOL, false);
16061 if (vlkeys_[VL_LIST_BOOL].count(key0) != 1) {
16062 hvl_t buf0 = VLValToBuf(val0);
16063 AppendVLKey(keysds0, VL_LIST_BOOL, key0);
16064 InsertVLVal(valsds0, VL_LIST_BOOL, key0, buf0);
16065 }
16067}
16068template<>
16069void Hdf5Back::WriteToBuf<LIST_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16070 std::list<int> val0=a->cast<std::list<int>>();
16071 size_t item_size0=((sizeof(int))*shape[0]);
16072 size_t length0=shape[0];
16073 size_t item_size1elem=sizeof(int);
16075 if(total_item_size0*val0.size()>column){
16076 std::list<int>::iterator eraseit=val0.begin();
16077 std::advance(eraseit, column/total_item_size0);
16078 val0.erase(eraseit,val0.end());
16079
16080 }
16081 unsigned int count0=0;
16082 std::list<int>::iterator it0=val0.begin();
16083 for(;it0!=val0.end();++it0){
16085 ++count0;
16086
16087 }
16090
16091 }
16092}
16093template<>
16094void Hdf5Back::WriteToBuf<VL_LIST_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16095 std::list<int> val0=a->cast<std::list<int>>();
16097 size_t item_size1elem=sizeof(int);
16099 hasher_.Clear();
16100 hasher_.Update(val0);
16101 Digest key0 = hasher_.digest();
16102 hid_t keysds0 = VLDataset(VL_LIST_INT, true);
16103 hid_t valsds0 = VLDataset(VL_LIST_INT, false);
16104 if (vlkeys_[VL_LIST_INT].count(key0) != 1) {
16105 hvl_t buf0 = VLValToBuf(val0);
16106 AppendVLKey(keysds0, VL_LIST_INT, key0);
16107 InsertVLVal(valsds0, VL_LIST_INT, key0, buf0);
16108 }
16110}
16111template<>
16112void Hdf5Back::WriteToBuf<LIST_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16113 std::list<float> val0=a->cast<std::list<float>>();
16114 size_t item_size0=((sizeof(float))*shape[0]);
16115 size_t length0=shape[0];
16116 size_t item_size1elem=sizeof(float);
16118 if(total_item_size0*val0.size()>column){
16119 std::list<float>::iterator eraseit=val0.begin();
16120 std::advance(eraseit, column/total_item_size0);
16121 val0.erase(eraseit,val0.end());
16122
16123 }
16124 unsigned int count0=0;
16125 std::list<float>::iterator it0=val0.begin();
16126 for(;it0!=val0.end();++it0){
16128 ++count0;
16129
16130 }
16133
16134 }
16135}
16136template<>
16137void Hdf5Back::WriteToBuf<VL_LIST_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16138 std::list<float> val0=a->cast<std::list<float>>();
16140 size_t item_size1elem=sizeof(float);
16142 hasher_.Clear();
16143 hasher_.Update(val0);
16144 Digest key0 = hasher_.digest();
16145 hid_t keysds0 = VLDataset(VL_LIST_FLOAT, true);
16146 hid_t valsds0 = VLDataset(VL_LIST_FLOAT, false);
16147 if (vlkeys_[VL_LIST_FLOAT].count(key0) != 1) {
16148 hvl_t buf0 = VLValToBuf(val0);
16149 AppendVLKey(keysds0, VL_LIST_FLOAT, key0);
16150 InsertVLVal(valsds0, VL_LIST_FLOAT, key0, buf0);
16151 }
16153}
16154template<>
16155void Hdf5Back::WriteToBuf<LIST_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16156 std::list<double> val0=a->cast<std::list<double>>();
16157 size_t item_size0=((sizeof(double))*shape[0]);
16158 size_t length0=shape[0];
16159 size_t item_size1elem=sizeof(double);
16161 if(total_item_size0*val0.size()>column){
16162 std::list<double>::iterator eraseit=val0.begin();
16163 std::advance(eraseit, column/total_item_size0);
16164 val0.erase(eraseit,val0.end());
16165
16166 }
16167 unsigned int count0=0;
16168 std::list<double>::iterator it0=val0.begin();
16169 for(;it0!=val0.end();++it0){
16171 ++count0;
16172
16173 }
16176
16177 }
16178}
16179template<>
16180void Hdf5Back::WriteToBuf<VL_LIST_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16181 std::list<double> val0=a->cast<std::list<double>>();
16183 size_t item_size1elem=sizeof(double);
16185 hasher_.Clear();
16186 hasher_.Update(val0);
16187 Digest key0 = hasher_.digest();
16188 hid_t keysds0 = VLDataset(VL_LIST_DOUBLE, true);
16189 hid_t valsds0 = VLDataset(VL_LIST_DOUBLE, false);
16190 if (vlkeys_[VL_LIST_DOUBLE].count(key0) != 1) {
16191 hvl_t buf0 = VLValToBuf(val0);
16192 AppendVLKey(keysds0, VL_LIST_DOUBLE, key0);
16193 InsertVLVal(valsds0, VL_LIST_DOUBLE, key0, buf0);
16194 }
16196}
16197template<>
16198void Hdf5Back::WriteToBuf<LIST_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16199 std::list<std::string> val0=a->cast<std::list<std::string>>();
16200 size_t item_size0=((shape[1])*shape[0]);
16201 size_t length0=shape[0];
16202 size_t item_size1elem=shape[1];
16203 size_t valuelen1elem;
16205 if(total_item_size0*val0.size()>column){
16206 std::list<std::string>::iterator eraseit=val0.begin();
16207 std::advance(eraseit, column/total_item_size0);
16208 val0.erase(eraseit,val0.end());
16209
16210 }
16211 unsigned int count0=0;
16212 std::list<std::string>::iterator it0=val0.begin();
16213 for(;it0!=val0.end();++it0){
16214 valuelen1elem=std::min(it0->size(), item_size1elem);
16217 ++count0;
16218
16219 }
16222
16223 }
16224}
16225template<>
16226void Hdf5Back::WriteToBuf<VL_LIST_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16227 std::list<std::string> val0=a->cast<std::list<std::string>>();
16229 size_t item_size1elem=shape[1];
16230 size_t valuelen1elem;
16232 unsigned int count0=0;
16233 std::list<std::string>::iterator it0=val0.begin();
16234 std::list<std::string> fixed_val0;
16235 unsigned int pad_count0=0;
16236 for(;it0!=val0.end();++it0){
16237 std::string child1elem=std::string((*it0),0,item_size1elem);
16238 fixed_val0.push_back(child1elem);
16239 ++pad_count0;
16240
16241 }
16242 hasher_.Clear();
16243 hasher_.Update(fixed_val0);
16244 Digest key0 = hasher_.digest();
16245 hid_t keysds0 = VLDataset(VL_LIST_STRING, true);
16246 hid_t valsds0 = VLDataset(VL_LIST_STRING, false);
16247 if (vlkeys_[VL_LIST_STRING].count(key0) != 1) {
16248 hvl_t buf0 = VLValToBuf(fixed_val0);
16249 AppendVLKey(keysds0, VL_LIST_STRING, key0);
16250 InsertVLVal(valsds0, VL_LIST_STRING, key0, buf0);
16251 }
16253}
16254template<>
16255void Hdf5Back::WriteToBuf<LIST_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16256 std::list<std::string> val0=a->cast<std::list<std::string>>();
16257 size_t item_size0=((CYCLUS_SHA1_SIZE)*shape[0]);
16258 size_t length0=shape[0];
16261 if(total_item_size0*val0.size()>column){
16262 std::list<std::string>::iterator eraseit=val0.begin();
16263 std::advance(eraseit, column/total_item_size0);
16264 val0.erase(eraseit,val0.end());
16265
16266 }
16267 unsigned int count0=0;
16268 std::list<std::string>::iterator it0=val0.begin();
16269 for(;it0!=val0.end();++it0){
16270 hasher_.Clear();
16271 hasher_.Update(*it0);
16272 Digest key1elem = hasher_.digest();
16273 hid_t keysds1elem = VLDataset(VL_STRING, true);
16274 hid_t valsds1elem = VLDataset(VL_STRING, false);
16275 if (vlkeys_[VL_STRING].count(key1elem) != 1) {
16276 AppendVLKey(keysds1elem, VL_STRING, key1elem);
16277 InsertVLVal(valsds1elem, VL_STRING, key1elem, *it0);
16278 }
16280 ++count0;
16281
16282 }
16285
16286 }
16287}
16288template<>
16289void Hdf5Back::WriteToBuf<VL_LIST_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16290 std::list<std::string> val0=a->cast<std::list<std::string>>();
16294 hasher_.Clear();
16295 hasher_.Update(val0);
16296 Digest key0 = hasher_.digest();
16297 hid_t keysds0 = VLDataset(VL_LIST_VL_STRING, true);
16298 hid_t valsds0 = VLDataset(VL_LIST_VL_STRING, false);
16299 if (vlkeys_[VL_LIST_VL_STRING].count(key0) != 1) {
16300 hvl_t buf0 = VLValToBuf(val0);
16301 AppendVLKey(keysds0, VL_LIST_VL_STRING, key0);
16302 InsertVLVal(valsds0, VL_LIST_VL_STRING, key0, buf0);
16303 }
16305}
16306template<>
16307void Hdf5Back::WriteToBuf<LIST_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16308 std::list<cyclus::Blob> val0=a->cast<std::list<cyclus::Blob>>();
16309 size_t item_size0=((CYCLUS_SHA1_SIZE)*shape[0]);
16310 size_t length0=shape[0];
16313 if(total_item_size0*val0.size()>column){
16314 std::list<cyclus::Blob>::iterator eraseit=val0.begin();
16315 std::advance(eraseit, column/total_item_size0);
16316 val0.erase(eraseit,val0.end());
16317
16318 }
16319 unsigned int count0=0;
16320 std::list<cyclus::Blob>::iterator it0=val0.begin();
16321 for(;it0!=val0.end();++it0){
16322 hasher_.Clear();
16323 hasher_.Update(*it0);
16324 Digest key1elem = hasher_.digest();
16325 hid_t keysds1elem = VLDataset(BLOB, true);
16326 hid_t valsds1elem = VLDataset(BLOB, false);
16327 if (vlkeys_[BLOB].count(key1elem) != 1) {
16328 AppendVLKey(keysds1elem, BLOB, key1elem);
16329 InsertVLVal(valsds1elem, BLOB, key1elem, (*it0).str());
16330 }
16332 ++count0;
16333
16334 }
16337
16338 }
16339}
16340template<>
16341void Hdf5Back::WriteToBuf<VL_LIST_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16342 std::list<cyclus::Blob> val0=a->cast<std::list<cyclus::Blob>>();
16346 hasher_.Clear();
16347 hasher_.Update(val0);
16348 Digest key0 = hasher_.digest();
16349 hid_t keysds0 = VLDataset(VL_LIST_BLOB, true);
16350 hid_t valsds0 = VLDataset(VL_LIST_BLOB, false);
16351 if (vlkeys_[VL_LIST_BLOB].count(key0) != 1) {
16352 hvl_t buf0 = VLValToBuf(val0);
16353 AppendVLKey(keysds0, VL_LIST_BLOB, key0);
16354 InsertVLVal(valsds0, VL_LIST_BLOB, key0, buf0);
16355 }
16357}
16358template<>
16359void Hdf5Back::WriteToBuf<LIST_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16360 std::list<boost::uuids::uuid> val0=a->cast<std::list<boost::uuids::uuid>>();
16361 size_t item_size0=((CYCLUS_UUID_SIZE)*shape[0]);
16362 size_t length0=shape[0];
16365 if(total_item_size0*val0.size()>column){
16366 std::list<boost::uuids::uuid>::iterator eraseit=val0.begin();
16367 std::advance(eraseit, column/total_item_size0);
16368 val0.erase(eraseit,val0.end());
16369
16370 }
16371 unsigned int count0=0;
16372 std::list<boost::uuids::uuid>::iterator it0=val0.begin();
16373 for(;it0!=val0.end();++it0){
16375 ++count0;
16376
16377 }
16380
16381 }
16382}
16383template<>
16384void Hdf5Back::WriteToBuf<VL_LIST_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16385 std::list<boost::uuids::uuid> val0=a->cast<std::list<boost::uuids::uuid>>();
16389 hasher_.Clear();
16390 hasher_.Update(val0);
16391 Digest key0 = hasher_.digest();
16392 hid_t keysds0 = VLDataset(VL_LIST_UUID, true);
16393 hid_t valsds0 = VLDataset(VL_LIST_UUID, false);
16394 if (vlkeys_[VL_LIST_UUID].count(key0) != 1) {
16395 hvl_t buf0 = VLValToBuf(val0);
16396 AppendVLKey(keysds0, VL_LIST_UUID, key0);
16397 InsertVLVal(valsds0, VL_LIST_UUID, key0, buf0);
16398 }
16400}
16401template<>
16402void Hdf5Back::WriteToBuf<PAIR_INT_BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16403 std::pair<int, bool> val0=a->cast<std::pair<int, bool>>();
16404 size_t item_size0=((sizeof(int)+sizeof(char)));
16405 size_t item_size1first=sizeof(int);
16406 size_t item_size1second=sizeof(char);
16408 unsigned int count0=0;
16411}
16412template<>
16413void Hdf5Back::WriteToBuf<PAIR_INT_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16414 std::pair<int, int> val0=a->cast<std::pair<int, int>>();
16415 size_t item_size0=((sizeof(int)+sizeof(int)));
16416 size_t item_size1first=sizeof(int);
16417 size_t item_size1second=sizeof(int);
16419 unsigned int count0=0;
16422}
16423template<>
16424void Hdf5Back::WriteToBuf<PAIR_INT_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16425 std::pair<int, float> val0=a->cast<std::pair<int, float>>();
16426 size_t item_size0=((sizeof(int)+sizeof(float)));
16427 size_t item_size1first=sizeof(int);
16428 size_t item_size1second=sizeof(float);
16430 unsigned int count0=0;
16433}
16434template<>
16435void Hdf5Back::WriteToBuf<PAIR_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16436 std::pair<int, double> val0=a->cast<std::pair<int, double>>();
16437 size_t item_size0=((sizeof(int)+sizeof(double)));
16438 size_t item_size1first=sizeof(int);
16439 size_t item_size1second=sizeof(double);
16441 unsigned int count0=0;
16444}
16445template<>
16446void Hdf5Back::WriteToBuf<PAIR_INT_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16447 std::pair<int, std::string> val0=a->cast<std::pair<int, std::string>>();
16448 size_t item_size0=((sizeof(int)+shape[2]));
16449 size_t item_size1first=sizeof(int);
16450 size_t item_size1second=shape[2];
16451 size_t valuelen1second;
16453 unsigned int count0=0;
16455 valuelen1second=std::min(val0.second.size(), item_size1second);
16458}
16459template<>
16460void Hdf5Back::WriteToBuf<PAIR_INT_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16461 std::pair<int, std::string> val0=a->cast<std::pair<int, std::string>>();
16462 size_t item_size0=((sizeof(int)+CYCLUS_SHA1_SIZE));
16463 size_t item_size1first=sizeof(int);
16466 unsigned int count0=0;
16468 hasher_.Clear();
16469 hasher_.Update(val0.second);
16470 Digest key1second = hasher_.digest();
16471 hid_t keysds1second = VLDataset(VL_STRING, true);
16472 hid_t valsds1second = VLDataset(VL_STRING, false);
16473 if (vlkeys_[VL_STRING].count(key1second) != 1) {
16474 AppendVLKey(keysds1second, VL_STRING, key1second);
16475 InsertVLVal(valsds1second, VL_STRING, key1second, val0.second);
16476 }
16478}
16479template<>
16480void Hdf5Back::WriteToBuf<PAIR_INT_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16481 std::pair<int, cyclus::Blob> val0=a->cast<std::pair<int, cyclus::Blob>>();
16482 size_t item_size0=((sizeof(int)+CYCLUS_SHA1_SIZE));
16483 size_t item_size1first=sizeof(int);
16486 unsigned int count0=0;
16488 hasher_.Clear();
16489 hasher_.Update(val0.second);
16490 Digest key1second = hasher_.digest();
16491 hid_t keysds1second = VLDataset(BLOB, true);
16492 hid_t valsds1second = VLDataset(BLOB, false);
16493 if (vlkeys_[BLOB].count(key1second) != 1) {
16494 AppendVLKey(keysds1second, BLOB, key1second);
16495 InsertVLVal(valsds1second, BLOB, key1second, (val0.second).str());
16496 }
16498}
16499template<>
16500void Hdf5Back::WriteToBuf<PAIR_INT_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16501 std::pair<int, boost::uuids::uuid> val0=a->cast<std::pair<int, boost::uuids::uuid>>();
16502 size_t item_size0=((sizeof(int)+CYCLUS_UUID_SIZE));
16503 size_t item_size1first=sizeof(int);
16506 unsigned int count0=0;
16509}
16510template<>
16511void Hdf5Back::WriteToBuf<PAIR_STRING_BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16512 std::pair<std::string, bool> val0=a->cast<std::pair<std::string, bool>>();
16513 size_t item_size0=((shape[1]+sizeof(char)));
16514 size_t item_size1first=shape[1];
16515 size_t valuelen1first;
16516 size_t item_size1second=sizeof(char);
16518 unsigned int count0=0;
16519 valuelen1first=std::min(val0.first.size(), item_size1first);
16520 memcpy(buf+(count0*total_item_size0)+0, val0.first.c_str(), valuelen1first);
16523}
16524template<>
16525void Hdf5Back::WriteToBuf<PAIR_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16526 std::pair<std::string, int> val0=a->cast<std::pair<std::string, int>>();
16527 size_t item_size0=((shape[1]+sizeof(int)));
16528 size_t item_size1first=shape[1];
16529 size_t valuelen1first;
16530 size_t item_size1second=sizeof(int);
16532 unsigned int count0=0;
16533 valuelen1first=std::min(val0.first.size(), item_size1first);
16534 memcpy(buf+(count0*total_item_size0)+0, val0.first.c_str(), valuelen1first);
16537}
16538template<>
16539void Hdf5Back::WriteToBuf<PAIR_STRING_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16540 std::pair<std::string, float> val0=a->cast<std::pair<std::string, float>>();
16541 size_t item_size0=((shape[1]+sizeof(float)));
16542 size_t item_size1first=shape[1];
16543 size_t valuelen1first;
16544 size_t item_size1second=sizeof(float);
16546 unsigned int count0=0;
16547 valuelen1first=std::min(val0.first.size(), item_size1first);
16548 memcpy(buf+(count0*total_item_size0)+0, val0.first.c_str(), valuelen1first);
16551}
16552template<>
16553void Hdf5Back::WriteToBuf<PAIR_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16554 std::pair<std::string, double> val0=a->cast<std::pair<std::string, double>>();
16555 size_t item_size0=((shape[1]+sizeof(double)));
16556 size_t item_size1first=shape[1];
16557 size_t valuelen1first;
16558 size_t item_size1second=sizeof(double);
16560 unsigned int count0=0;
16561 valuelen1first=std::min(val0.first.size(), item_size1first);
16562 memcpy(buf+(count0*total_item_size0)+0, val0.first.c_str(), valuelen1first);
16565}
16566template<>
16567void Hdf5Back::WriteToBuf<PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16568 std::pair<std::string, std::string> val0=a->cast<std::pair<std::string, std::string>>();
16569 size_t item_size0=((shape[1]+shape[2]));
16570 size_t item_size1first=shape[1];
16571 size_t valuelen1first;
16572 size_t item_size1second=shape[2];
16573 size_t valuelen1second;
16575 unsigned int count0=0;
16576 valuelen1first=std::min(val0.first.size(), item_size1first);
16577 memcpy(buf+(count0*total_item_size0)+0, val0.first.c_str(), valuelen1first);
16579 valuelen1second=std::min(val0.second.size(), item_size1second);
16582}
16583template<>
16584void Hdf5Back::WriteToBuf<PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16585 std::pair<std::string, std::string> val0=a->cast<std::pair<std::string, std::string>>();
16586 size_t item_size0=((shape[1]+CYCLUS_SHA1_SIZE));
16587 size_t item_size1first=shape[1];
16588 size_t valuelen1first;
16591 unsigned int count0=0;
16592 valuelen1first=std::min(val0.first.size(), item_size1first);
16593 memcpy(buf+(count0*total_item_size0)+0, val0.first.c_str(), valuelen1first);
16595 hasher_.Clear();
16596 hasher_.Update(val0.second);
16597 Digest key1second = hasher_.digest();
16598 hid_t keysds1second = VLDataset(VL_STRING, true);
16599 hid_t valsds1second = VLDataset(VL_STRING, false);
16600 if (vlkeys_[VL_STRING].count(key1second) != 1) {
16601 AppendVLKey(keysds1second, VL_STRING, key1second);
16602 InsertVLVal(valsds1second, VL_STRING, key1second, val0.second);
16603 }
16605}
16606template<>
16607void Hdf5Back::WriteToBuf<PAIR_STRING_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16608 std::pair<std::string, cyclus::Blob> val0=a->cast<std::pair<std::string, cyclus::Blob>>();
16609 size_t item_size0=((shape[1]+CYCLUS_SHA1_SIZE));
16610 size_t item_size1first=shape[1];
16611 size_t valuelen1first;
16614 unsigned int count0=0;
16615 valuelen1first=std::min(val0.first.size(), item_size1first);
16616 memcpy(buf+(count0*total_item_size0)+0, val0.first.c_str(), valuelen1first);
16618 hasher_.Clear();
16619 hasher_.Update(val0.second);
16620 Digest key1second = hasher_.digest();
16621 hid_t keysds1second = VLDataset(BLOB, true);
16622 hid_t valsds1second = VLDataset(BLOB, false);
16623 if (vlkeys_[BLOB].count(key1second) != 1) {
16624 AppendVLKey(keysds1second, BLOB, key1second);
16625 InsertVLVal(valsds1second, BLOB, key1second, (val0.second).str());
16626 }
16628}
16629template<>
16630void Hdf5Back::WriteToBuf<PAIR_STRING_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16631 std::pair<std::string, boost::uuids::uuid> val0=a->cast<std::pair<std::string, boost::uuids::uuid>>();
16632 size_t item_size0=((shape[1]+CYCLUS_UUID_SIZE));
16633 size_t item_size1first=shape[1];
16634 size_t valuelen1first;
16637 unsigned int count0=0;
16638 valuelen1first=std::min(val0.first.size(), item_size1first);
16639 memcpy(buf+(count0*total_item_size0)+0, val0.first.c_str(), valuelen1first);
16642}
16643template<>
16644void Hdf5Back::WriteToBuf<PAIR_VL_STRING_BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16645 std::pair<std::string, bool> val0=a->cast<std::pair<std::string, bool>>();
16646 size_t item_size0=((CYCLUS_SHA1_SIZE+sizeof(char)));
16648 size_t item_size1second=sizeof(char);
16650 unsigned int count0=0;
16651 hasher_.Clear();
16652 hasher_.Update(val0.first);
16653 Digest key1first = hasher_.digest();
16654 hid_t keysds1first = VLDataset(VL_STRING, true);
16655 hid_t valsds1first = VLDataset(VL_STRING, false);
16656 if (vlkeys_[VL_STRING].count(key1first) != 1) {
16657 AppendVLKey(keysds1first, VL_STRING, key1first);
16658 InsertVLVal(valsds1first, VL_STRING, key1first, val0.first);
16659 }
16662}
16663template<>
16664void Hdf5Back::WriteToBuf<PAIR_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16665 std::pair<std::string, int> val0=a->cast<std::pair<std::string, int>>();
16666 size_t item_size0=((CYCLUS_SHA1_SIZE+sizeof(int)));
16668 size_t item_size1second=sizeof(int);
16670 unsigned int count0=0;
16671 hasher_.Clear();
16672 hasher_.Update(val0.first);
16673 Digest key1first = hasher_.digest();
16674 hid_t keysds1first = VLDataset(VL_STRING, true);
16675 hid_t valsds1first = VLDataset(VL_STRING, false);
16676 if (vlkeys_[VL_STRING].count(key1first) != 1) {
16677 AppendVLKey(keysds1first, VL_STRING, key1first);
16678 InsertVLVal(valsds1first, VL_STRING, key1first, val0.first);
16679 }
16682}
16683template<>
16684void Hdf5Back::WriteToBuf<PAIR_VL_STRING_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16685 std::pair<std::string, float> val0=a->cast<std::pair<std::string, float>>();
16686 size_t item_size0=((CYCLUS_SHA1_SIZE+sizeof(float)));
16688 size_t item_size1second=sizeof(float);
16690 unsigned int count0=0;
16691 hasher_.Clear();
16692 hasher_.Update(val0.first);
16693 Digest key1first = hasher_.digest();
16694 hid_t keysds1first = VLDataset(VL_STRING, true);
16695 hid_t valsds1first = VLDataset(VL_STRING, false);
16696 if (vlkeys_[VL_STRING].count(key1first) != 1) {
16697 AppendVLKey(keysds1first, VL_STRING, key1first);
16698 InsertVLVal(valsds1first, VL_STRING, key1first, val0.first);
16699 }
16702}
16703template<>
16704void Hdf5Back::WriteToBuf<PAIR_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16705 std::pair<std::string, double> val0=a->cast<std::pair<std::string, double>>();
16706 size_t item_size0=((CYCLUS_SHA1_SIZE+sizeof(double)));
16708 size_t item_size1second=sizeof(double);
16710 unsigned int count0=0;
16711 hasher_.Clear();
16712 hasher_.Update(val0.first);
16713 Digest key1first = hasher_.digest();
16714 hid_t keysds1first = VLDataset(VL_STRING, true);
16715 hid_t valsds1first = VLDataset(VL_STRING, false);
16716 if (vlkeys_[VL_STRING].count(key1first) != 1) {
16717 AppendVLKey(keysds1first, VL_STRING, key1first);
16718 InsertVLVal(valsds1first, VL_STRING, key1first, val0.first);
16719 }
16722}
16723template<>
16724void Hdf5Back::WriteToBuf<PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16725 std::pair<std::string, std::string> val0=a->cast<std::pair<std::string, std::string>>();
16726 size_t item_size0=((CYCLUS_SHA1_SIZE+shape[2]));
16728 size_t item_size1second=shape[2];
16729 size_t valuelen1second;
16731 unsigned int count0=0;
16732 hasher_.Clear();
16733 hasher_.Update(val0.first);
16734 Digest key1first = hasher_.digest();
16735 hid_t keysds1first = VLDataset(VL_STRING, true);
16736 hid_t valsds1first = VLDataset(VL_STRING, false);
16737 if (vlkeys_[VL_STRING].count(key1first) != 1) {
16738 AppendVLKey(keysds1first, VL_STRING, key1first);
16739 InsertVLVal(valsds1first, VL_STRING, key1first, val0.first);
16740 }
16742 valuelen1second=std::min(val0.second.size(), item_size1second);
16745}
16746template<>
16747void Hdf5Back::WriteToBuf<PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16748 std::pair<std::string, std::string> val0=a->cast<std::pair<std::string, std::string>>();
16753 unsigned int count0=0;
16754 hasher_.Clear();
16755 hasher_.Update(val0.first);
16756 Digest key1first = hasher_.digest();
16757 hid_t keysds1first = VLDataset(VL_STRING, true);
16758 hid_t valsds1first = VLDataset(VL_STRING, false);
16759 if (vlkeys_[VL_STRING].count(key1first) != 1) {
16760 AppendVLKey(keysds1first, VL_STRING, key1first);
16761 InsertVLVal(valsds1first, VL_STRING, key1first, val0.first);
16762 }
16764 hasher_.Clear();
16765 hasher_.Update(val0.second);
16766 Digest key1second = hasher_.digest();
16767 hid_t keysds1second = VLDataset(VL_STRING, true);
16768 hid_t valsds1second = VLDataset(VL_STRING, false);
16769 if (vlkeys_[VL_STRING].count(key1second) != 1) {
16770 AppendVLKey(keysds1second, VL_STRING, key1second);
16771 InsertVLVal(valsds1second, VL_STRING, key1second, val0.second);
16772 }
16774}
16775template<>
16776void Hdf5Back::WriteToBuf<PAIR_VL_STRING_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16777 std::pair<std::string, cyclus::Blob> val0=a->cast<std::pair<std::string, cyclus::Blob>>();
16782 unsigned int count0=0;
16783 hasher_.Clear();
16784 hasher_.Update(val0.first);
16785 Digest key1first = hasher_.digest();
16786 hid_t keysds1first = VLDataset(VL_STRING, true);
16787 hid_t valsds1first = VLDataset(VL_STRING, false);
16788 if (vlkeys_[VL_STRING].count(key1first) != 1) {
16789 AppendVLKey(keysds1first, VL_STRING, key1first);
16790 InsertVLVal(valsds1first, VL_STRING, key1first, val0.first);
16791 }
16793 hasher_.Clear();
16794 hasher_.Update(val0.second);
16795 Digest key1second = hasher_.digest();
16796 hid_t keysds1second = VLDataset(BLOB, true);
16797 hid_t valsds1second = VLDataset(BLOB, false);
16798 if (vlkeys_[BLOB].count(key1second) != 1) {
16799 AppendVLKey(keysds1second, BLOB, key1second);
16800 InsertVLVal(valsds1second, BLOB, key1second, (val0.second).str());
16801 }
16803}
16804template<>
16805void Hdf5Back::WriteToBuf<PAIR_VL_STRING_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16806 std::pair<std::string, boost::uuids::uuid> val0=a->cast<std::pair<std::string, boost::uuids::uuid>>();
16811 unsigned int count0=0;
16812 hasher_.Clear();
16813 hasher_.Update(val0.first);
16814 Digest key1first = hasher_.digest();
16815 hid_t keysds1first = VLDataset(VL_STRING, true);
16816 hid_t valsds1first = VLDataset(VL_STRING, false);
16817 if (vlkeys_[VL_STRING].count(key1first) != 1) {
16818 AppendVLKey(keysds1first, VL_STRING, key1first);
16819 InsertVLVal(valsds1first, VL_STRING, key1first, val0.first);
16820 }
16823}
16824template<>
16825void Hdf5Back::WriteToBuf<MAP_INT_BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16826 std::map<int, bool> val0=a->cast<std::map<int, bool>>();
16827 size_t item_size0=((sizeof(int)+sizeof(char))*shape[0]);
16828 size_t length0=shape[0];
16829 size_t item_size1key=sizeof(int);
16830 size_t item_size1val=sizeof(char);
16832 if(total_item_size0*val0.size()>column){
16833 std::map<int, bool>::iterator eraseit=val0.begin();
16834 std::advance(eraseit, column/total_item_size0);
16835 val0.erase(eraseit,val0.end());
16836
16837 }
16838 unsigned int count0=0;
16839 std::map<int, bool>::iterator it0=val0.begin();
16840 for(;it0!=val0.end();++it0){
16843 ++count0;
16844
16845 }
16848
16849 }
16850}
16851template<>
16852void Hdf5Back::WriteToBuf<VL_MAP_INT_BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16853 std::map<int, bool> val0=a->cast<std::map<int, bool>>();
16855 size_t item_size1key=sizeof(int);
16856 size_t item_size1val=sizeof(char);
16858 hasher_.Clear();
16859 hasher_.Update(val0);
16860 Digest key0 = hasher_.digest();
16861 hid_t keysds0 = VLDataset(VL_MAP_INT_BOOL, true);
16862 hid_t valsds0 = VLDataset(VL_MAP_INT_BOOL, false);
16863 if (vlkeys_[VL_MAP_INT_BOOL].count(key0) != 1) {
16864 hvl_t buf0 = VLValToBuf(val0);
16865 AppendVLKey(keysds0, VL_MAP_INT_BOOL, key0);
16866 InsertVLVal(valsds0, VL_MAP_INT_BOOL, key0, buf0);
16867 }
16869}
16870template<>
16871void Hdf5Back::WriteToBuf<MAP_INT_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16872 std::map<int, int> val0=a->cast<std::map<int, int>>();
16873 size_t item_size0=((sizeof(int)+sizeof(int))*shape[0]);
16874 size_t length0=shape[0];
16875 size_t item_size1key=sizeof(int);
16876 size_t item_size1val=sizeof(int);
16878 if(total_item_size0*val0.size()>column){
16879 std::map<int, int>::iterator eraseit=val0.begin();
16880 std::advance(eraseit, column/total_item_size0);
16881 val0.erase(eraseit,val0.end());
16882
16883 }
16884 unsigned int count0=0;
16885 std::map<int, int>::iterator it0=val0.begin();
16886 for(;it0!=val0.end();++it0){
16889 ++count0;
16890
16891 }
16894
16895 }
16896}
16897template<>
16898void Hdf5Back::WriteToBuf<VL_MAP_INT_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16899 std::map<int, int> val0=a->cast<std::map<int, int>>();
16901 size_t item_size1key=sizeof(int);
16902 size_t item_size1val=sizeof(int);
16904 hasher_.Clear();
16905 hasher_.Update(val0);
16906 Digest key0 = hasher_.digest();
16907 hid_t keysds0 = VLDataset(VL_MAP_INT_INT, true);
16908 hid_t valsds0 = VLDataset(VL_MAP_INT_INT, false);
16909 if (vlkeys_[VL_MAP_INT_INT].count(key0) != 1) {
16910 hvl_t buf0 = VLValToBuf(val0);
16911 AppendVLKey(keysds0, VL_MAP_INT_INT, key0);
16912 InsertVLVal(valsds0, VL_MAP_INT_INT, key0, buf0);
16913 }
16915}
16916template<>
16917void Hdf5Back::WriteToBuf<MAP_INT_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16918 std::map<int, float> val0=a->cast<std::map<int, float>>();
16919 size_t item_size0=((sizeof(int)+sizeof(float))*shape[0]);
16920 size_t length0=shape[0];
16921 size_t item_size1key=sizeof(int);
16922 size_t item_size1val=sizeof(float);
16924 if(total_item_size0*val0.size()>column){
16925 std::map<int, float>::iterator eraseit=val0.begin();
16926 std::advance(eraseit, column/total_item_size0);
16927 val0.erase(eraseit,val0.end());
16928
16929 }
16930 unsigned int count0=0;
16931 std::map<int, float>::iterator it0=val0.begin();
16932 for(;it0!=val0.end();++it0){
16935 ++count0;
16936
16937 }
16940
16941 }
16942}
16943template<>
16944void Hdf5Back::WriteToBuf<VL_MAP_INT_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16945 std::map<int, float> val0=a->cast<std::map<int, float>>();
16947 size_t item_size1key=sizeof(int);
16948 size_t item_size1val=sizeof(float);
16950 hasher_.Clear();
16951 hasher_.Update(val0);
16952 Digest key0 = hasher_.digest();
16953 hid_t keysds0 = VLDataset(VL_MAP_INT_FLOAT, true);
16954 hid_t valsds0 = VLDataset(VL_MAP_INT_FLOAT, false);
16955 if (vlkeys_[VL_MAP_INT_FLOAT].count(key0) != 1) {
16956 hvl_t buf0 = VLValToBuf(val0);
16957 AppendVLKey(keysds0, VL_MAP_INT_FLOAT, key0);
16958 InsertVLVal(valsds0, VL_MAP_INT_FLOAT, key0, buf0);
16959 }
16961}
16962template<>
16963void Hdf5Back::WriteToBuf<MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16964 std::map<int, double> val0=a->cast<std::map<int, double>>();
16965 size_t item_size0=((sizeof(int)+sizeof(double))*shape[0]);
16966 size_t length0=shape[0];
16967 size_t item_size1key=sizeof(int);
16968 size_t item_size1val=sizeof(double);
16970 if(total_item_size0*val0.size()>column){
16971 std::map<int, double>::iterator eraseit=val0.begin();
16972 std::advance(eraseit, column/total_item_size0);
16973 val0.erase(eraseit,val0.end());
16974
16975 }
16976 unsigned int count0=0;
16977 std::map<int, double>::iterator it0=val0.begin();
16978 for(;it0!=val0.end();++it0){
16981 ++count0;
16982
16983 }
16986
16987 }
16988}
16989template<>
16990void Hdf5Back::WriteToBuf<VL_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
16991 std::map<int, double> val0=a->cast<std::map<int, double>>();
16993 size_t item_size1key=sizeof(int);
16994 size_t item_size1val=sizeof(double);
16996 hasher_.Clear();
16997 hasher_.Update(val0);
16998 Digest key0 = hasher_.digest();
16999 hid_t keysds0 = VLDataset(VL_MAP_INT_DOUBLE, true);
17000 hid_t valsds0 = VLDataset(VL_MAP_INT_DOUBLE, false);
17001 if (vlkeys_[VL_MAP_INT_DOUBLE].count(key0) != 1) {
17002 hvl_t buf0 = VLValToBuf(val0);
17003 AppendVLKey(keysds0, VL_MAP_INT_DOUBLE, key0);
17004 InsertVLVal(valsds0, VL_MAP_INT_DOUBLE, key0, buf0);
17005 }
17007}
17008template<>
17009void Hdf5Back::WriteToBuf<MAP_INT_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17010 std::map<int, std::string> val0=a->cast<std::map<int, std::string>>();
17011 size_t item_size0=((sizeof(int)+shape[2])*shape[0]);
17012 size_t length0=shape[0];
17013 size_t item_size1key=sizeof(int);
17014 size_t item_size1val=shape[2];
17015 size_t valuelen1val;
17017 if(total_item_size0*val0.size()>column){
17018 std::map<int, std::string>::iterator eraseit=val0.begin();
17019 std::advance(eraseit, column/total_item_size0);
17020 val0.erase(eraseit,val0.end());
17021
17022 }
17023 unsigned int count0=0;
17024 std::map<int, std::string>::iterator it0=val0.begin();
17025 for(;it0!=val0.end();++it0){
17027 valuelen1val=std::min(it0->second.size(), item_size1val);
17030 ++count0;
17031
17032 }
17035
17036 }
17037}
17038template<>
17039void Hdf5Back::WriteToBuf<VL_MAP_INT_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17040 std::map<int, std::string> val0=a->cast<std::map<int, std::string>>();
17042 size_t item_size1key=sizeof(int);
17043 size_t item_size1val=shape[2];
17044 size_t valuelen1val;
17046 unsigned int count0=0;
17047 std::map<int, std::string>::iterator it0=val0.begin();
17048 std::map<int, std::string> fixed_val0;
17049 unsigned int pad_count0=0;
17050 for(;it0!=val0.end();++it0){
17051 std::string child1val=std::string(it0->second,0,item_size1val);
17052 fixed_val0[it0->first] = child1val;
17053 ++pad_count0;
17054
17055 }
17056 hasher_.Clear();
17057 hasher_.Update(fixed_val0);
17058 Digest key0 = hasher_.digest();
17059 hid_t keysds0 = VLDataset(VL_MAP_INT_STRING, true);
17060 hid_t valsds0 = VLDataset(VL_MAP_INT_STRING, false);
17061 if (vlkeys_[VL_MAP_INT_STRING].count(key0) != 1) {
17062 hvl_t buf0 = VLValToBuf(fixed_val0);
17063 AppendVLKey(keysds0, VL_MAP_INT_STRING, key0);
17064 InsertVLVal(valsds0, VL_MAP_INT_STRING, key0, buf0);
17065 }
17067}
17068template<>
17069void Hdf5Back::WriteToBuf<MAP_INT_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17070 std::map<int, std::string> val0=a->cast<std::map<int, std::string>>();
17071 size_t item_size0=((sizeof(int)+CYCLUS_SHA1_SIZE)*shape[0]);
17072 size_t length0=shape[0];
17073 size_t item_size1key=sizeof(int);
17076 if(total_item_size0*val0.size()>column){
17077 std::map<int, std::string>::iterator eraseit=val0.begin();
17078 std::advance(eraseit, column/total_item_size0);
17079 val0.erase(eraseit,val0.end());
17080
17081 }
17082 unsigned int count0=0;
17083 std::map<int, std::string>::iterator it0=val0.begin();
17084 for(;it0!=val0.end();++it0){
17086 hasher_.Clear();
17087 hasher_.Update(it0->second);
17088 Digest key1val = hasher_.digest();
17089 hid_t keysds1val = VLDataset(VL_STRING, true);
17090 hid_t valsds1val = VLDataset(VL_STRING, false);
17091 if (vlkeys_[VL_STRING].count(key1val) != 1) {
17092 AppendVLKey(keysds1val, VL_STRING, key1val);
17093 InsertVLVal(valsds1val, VL_STRING, key1val, it0->second);
17094 }
17096 ++count0;
17097
17098 }
17101
17102 }
17103}
17104template<>
17105void Hdf5Back::WriteToBuf<VL_MAP_INT_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17106 std::map<int, std::string> val0=a->cast<std::map<int, std::string>>();
17108 size_t item_size1key=sizeof(int);
17111 hasher_.Clear();
17112 hasher_.Update(val0);
17113 Digest key0 = hasher_.digest();
17114 hid_t keysds0 = VLDataset(VL_MAP_INT_VL_STRING, true);
17115 hid_t valsds0 = VLDataset(VL_MAP_INT_VL_STRING, false);
17116 if (vlkeys_[VL_MAP_INT_VL_STRING].count(key0) != 1) {
17117 hvl_t buf0 = VLValToBuf(val0);
17118 AppendVLKey(keysds0, VL_MAP_INT_VL_STRING, key0);
17119 InsertVLVal(valsds0, VL_MAP_INT_VL_STRING, key0, buf0);
17120 }
17122}
17123template<>
17124void Hdf5Back::WriteToBuf<MAP_INT_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17125 std::map<int, cyclus::Blob> val0=a->cast<std::map<int, cyclus::Blob>>();
17126 size_t item_size0=((sizeof(int)+CYCLUS_SHA1_SIZE)*shape[0]);
17127 size_t length0=shape[0];
17128 size_t item_size1key=sizeof(int);
17131 if(total_item_size0*val0.size()>column){
17132 std::map<int, cyclus::Blob>::iterator eraseit=val0.begin();
17133 std::advance(eraseit, column/total_item_size0);
17134 val0.erase(eraseit,val0.end());
17135
17136 }
17137 unsigned int count0=0;
17138 std::map<int, cyclus::Blob>::iterator it0=val0.begin();
17139 for(;it0!=val0.end();++it0){
17141 hasher_.Clear();
17142 hasher_.Update(it0->second);
17143 Digest key1val = hasher_.digest();
17144 hid_t keysds1val = VLDataset(BLOB, true);
17145 hid_t valsds1val = VLDataset(BLOB, false);
17146 if (vlkeys_[BLOB].count(key1val) != 1) {
17147 AppendVLKey(keysds1val, BLOB, key1val);
17148 InsertVLVal(valsds1val, BLOB, key1val, (it0->second).str());
17149 }
17151 ++count0;
17152
17153 }
17156
17157 }
17158}
17159template<>
17160void Hdf5Back::WriteToBuf<VL_MAP_INT_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17161 std::map<int, cyclus::Blob> val0=a->cast<std::map<int, cyclus::Blob>>();
17163 size_t item_size1key=sizeof(int);
17166 hasher_.Clear();
17167 hasher_.Update(val0);
17168 Digest key0 = hasher_.digest();
17169 hid_t keysds0 = VLDataset(VL_MAP_INT_BLOB, true);
17170 hid_t valsds0 = VLDataset(VL_MAP_INT_BLOB, false);
17171 if (vlkeys_[VL_MAP_INT_BLOB].count(key0) != 1) {
17172 hvl_t buf0 = VLValToBuf(val0);
17173 AppendVLKey(keysds0, VL_MAP_INT_BLOB, key0);
17174 InsertVLVal(valsds0, VL_MAP_INT_BLOB, key0, buf0);
17175 }
17177}
17178template<>
17179void Hdf5Back::WriteToBuf<MAP_INT_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17180 std::map<int, boost::uuids::uuid> val0=a->cast<std::map<int, boost::uuids::uuid>>();
17181 size_t item_size0=((sizeof(int)+CYCLUS_UUID_SIZE)*shape[0]);
17182 size_t length0=shape[0];
17183 size_t item_size1key=sizeof(int);
17186 if(total_item_size0*val0.size()>column){
17187 std::map<int, boost::uuids::uuid>::iterator eraseit=val0.begin();
17188 std::advance(eraseit, column/total_item_size0);
17189 val0.erase(eraseit,val0.end());
17190
17191 }
17192 unsigned int count0=0;
17193 std::map<int, boost::uuids::uuid>::iterator it0=val0.begin();
17194 for(;it0!=val0.end();++it0){
17197 ++count0;
17198
17199 }
17202
17203 }
17204}
17205template<>
17206void Hdf5Back::WriteToBuf<VL_MAP_INT_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17207 std::map<int, boost::uuids::uuid> val0=a->cast<std::map<int, boost::uuids::uuid>>();
17209 size_t item_size1key=sizeof(int);
17212 hasher_.Clear();
17213 hasher_.Update(val0);
17214 Digest key0 = hasher_.digest();
17215 hid_t keysds0 = VLDataset(VL_MAP_INT_UUID, true);
17216 hid_t valsds0 = VLDataset(VL_MAP_INT_UUID, false);
17217 if (vlkeys_[VL_MAP_INT_UUID].count(key0) != 1) {
17218 hvl_t buf0 = VLValToBuf(val0);
17219 AppendVLKey(keysds0, VL_MAP_INT_UUID, key0);
17220 InsertVLVal(valsds0, VL_MAP_INT_UUID, key0, buf0);
17221 }
17223}
17224template<>
17225void Hdf5Back::WriteToBuf<MAP_STRING_BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17226 std::map<std::string, bool> val0=a->cast<std::map<std::string, bool>>();
17227 size_t item_size0=((shape[1]+sizeof(char))*shape[0]);
17228 size_t length0=shape[0];
17229 size_t item_size1key=shape[1];
17230 size_t valuelen1key;
17231 size_t item_size1val=sizeof(char);
17233 if(total_item_size0*val0.size()>column){
17234 std::map<std::string, bool>::iterator eraseit=val0.begin();
17235 std::advance(eraseit, column/total_item_size0);
17236 val0.erase(eraseit,val0.end());
17237
17238 }
17239 unsigned int count0=0;
17240 std::map<std::string, bool>::iterator it0=val0.begin();
17241 for(;it0!=val0.end();++it0){
17242 valuelen1key=std::min(it0->first.size(), item_size1key);
17243 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
17246 ++count0;
17247
17248 }
17251
17252 }
17253}
17254template<>
17255void Hdf5Back::WriteToBuf<VL_MAP_STRING_BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17256 std::map<std::string, bool> val0=a->cast<std::map<std::string, bool>>();
17258 size_t item_size1key=shape[1];
17259 size_t valuelen1key;
17260 size_t item_size1val=sizeof(char);
17262 unsigned int count0=0;
17263 std::map<std::string, bool>::iterator it0=val0.begin();
17264 std::map<std::string, bool> fixed_val0;
17265 unsigned int pad_count0=0;
17266 for(;it0!=val0.end();++it0){
17267 std::string child1key=std::string(it0->first,0,item_size1key);
17268 fixed_val0[child1key] = it0->second;
17269 ++pad_count0;
17270
17271 }
17272 hasher_.Clear();
17273 hasher_.Update(fixed_val0);
17274 Digest key0 = hasher_.digest();
17275 hid_t keysds0 = VLDataset(VL_MAP_STRING_BOOL, true);
17276 hid_t valsds0 = VLDataset(VL_MAP_STRING_BOOL, false);
17277 if (vlkeys_[VL_MAP_STRING_BOOL].count(key0) != 1) {
17278 hvl_t buf0 = VLValToBuf(fixed_val0);
17279 AppendVLKey(keysds0, VL_MAP_STRING_BOOL, key0);
17280 InsertVLVal(valsds0, VL_MAP_STRING_BOOL, key0, buf0);
17281 }
17283}
17284template<>
17285void Hdf5Back::WriteToBuf<MAP_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17286 std::map<std::string, int> val0=a->cast<std::map<std::string, int>>();
17287 size_t item_size0=((shape[1]+sizeof(int))*shape[0]);
17288 size_t length0=shape[0];
17289 size_t item_size1key=shape[1];
17290 size_t valuelen1key;
17291 size_t item_size1val=sizeof(int);
17293 if(total_item_size0*val0.size()>column){
17294 std::map<std::string, int>::iterator eraseit=val0.begin();
17295 std::advance(eraseit, column/total_item_size0);
17296 val0.erase(eraseit,val0.end());
17297
17298 }
17299 unsigned int count0=0;
17300 std::map<std::string, int>::iterator it0=val0.begin();
17301 for(;it0!=val0.end();++it0){
17302 valuelen1key=std::min(it0->first.size(), item_size1key);
17303 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
17306 ++count0;
17307
17308 }
17311
17312 }
17313}
17314template<>
17315void Hdf5Back::WriteToBuf<VL_MAP_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17316 std::map<std::string, int> val0=a->cast<std::map<std::string, int>>();
17318 size_t item_size1key=shape[1];
17319 size_t valuelen1key;
17320 size_t item_size1val=sizeof(int);
17322 unsigned int count0=0;
17323 std::map<std::string, int>::iterator it0=val0.begin();
17324 std::map<std::string, int> fixed_val0;
17325 unsigned int pad_count0=0;
17326 for(;it0!=val0.end();++it0){
17327 std::string child1key=std::string(it0->first,0,item_size1key);
17328 fixed_val0[child1key] = it0->second;
17329 ++pad_count0;
17330
17331 }
17332 hasher_.Clear();
17333 hasher_.Update(fixed_val0);
17334 Digest key0 = hasher_.digest();
17335 hid_t keysds0 = VLDataset(VL_MAP_STRING_INT, true);
17336 hid_t valsds0 = VLDataset(VL_MAP_STRING_INT, false);
17337 if (vlkeys_[VL_MAP_STRING_INT].count(key0) != 1) {
17338 hvl_t buf0 = VLValToBuf(fixed_val0);
17339 AppendVLKey(keysds0, VL_MAP_STRING_INT, key0);
17340 InsertVLVal(valsds0, VL_MAP_STRING_INT, key0, buf0);
17341 }
17343}
17344template<>
17345void Hdf5Back::WriteToBuf<MAP_STRING_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17346 std::map<std::string, float> val0=a->cast<std::map<std::string, float>>();
17347 size_t item_size0=((shape[1]+sizeof(float))*shape[0]);
17348 size_t length0=shape[0];
17349 size_t item_size1key=shape[1];
17350 size_t valuelen1key;
17351 size_t item_size1val=sizeof(float);
17353 if(total_item_size0*val0.size()>column){
17354 std::map<std::string, float>::iterator eraseit=val0.begin();
17355 std::advance(eraseit, column/total_item_size0);
17356 val0.erase(eraseit,val0.end());
17357
17358 }
17359 unsigned int count0=0;
17360 std::map<std::string, float>::iterator it0=val0.begin();
17361 for(;it0!=val0.end();++it0){
17362 valuelen1key=std::min(it0->first.size(), item_size1key);
17363 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
17366 ++count0;
17367
17368 }
17371
17372 }
17373}
17374template<>
17375void Hdf5Back::WriteToBuf<VL_MAP_STRING_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17376 std::map<std::string, float> val0=a->cast<std::map<std::string, float>>();
17378 size_t item_size1key=shape[1];
17379 size_t valuelen1key;
17380 size_t item_size1val=sizeof(float);
17382 unsigned int count0=0;
17383 std::map<std::string, float>::iterator it0=val0.begin();
17384 std::map<std::string, float> fixed_val0;
17385 unsigned int pad_count0=0;
17386 for(;it0!=val0.end();++it0){
17387 std::string child1key=std::string(it0->first,0,item_size1key);
17388 fixed_val0[child1key] = it0->second;
17389 ++pad_count0;
17390
17391 }
17392 hasher_.Clear();
17393 hasher_.Update(fixed_val0);
17394 Digest key0 = hasher_.digest();
17395 hid_t keysds0 = VLDataset(VL_MAP_STRING_FLOAT, true);
17396 hid_t valsds0 = VLDataset(VL_MAP_STRING_FLOAT, false);
17397 if (vlkeys_[VL_MAP_STRING_FLOAT].count(key0) != 1) {
17398 hvl_t buf0 = VLValToBuf(fixed_val0);
17399 AppendVLKey(keysds0, VL_MAP_STRING_FLOAT, key0);
17400 InsertVLVal(valsds0, VL_MAP_STRING_FLOAT, key0, buf0);
17401 }
17403}
17404template<>
17405void Hdf5Back::WriteToBuf<MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17406 std::map<std::string, double> val0=a->cast<std::map<std::string, double>>();
17407 size_t item_size0=((shape[1]+sizeof(double))*shape[0]);
17408 size_t length0=shape[0];
17409 size_t item_size1key=shape[1];
17410 size_t valuelen1key;
17411 size_t item_size1val=sizeof(double);
17413 if(total_item_size0*val0.size()>column){
17414 std::map<std::string, double>::iterator eraseit=val0.begin();
17415 std::advance(eraseit, column/total_item_size0);
17416 val0.erase(eraseit,val0.end());
17417
17418 }
17419 unsigned int count0=0;
17420 std::map<std::string, double>::iterator it0=val0.begin();
17421 for(;it0!=val0.end();++it0){
17422 valuelen1key=std::min(it0->first.size(), item_size1key);
17423 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
17426 ++count0;
17427
17428 }
17431
17432 }
17433}
17434template<>
17435void Hdf5Back::WriteToBuf<VL_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17436 std::map<std::string, double> val0=a->cast<std::map<std::string, double>>();
17438 size_t item_size1key=shape[1];
17439 size_t valuelen1key;
17440 size_t item_size1val=sizeof(double);
17442 unsigned int count0=0;
17443 std::map<std::string, double>::iterator it0=val0.begin();
17444 std::map<std::string, double> fixed_val0;
17445 unsigned int pad_count0=0;
17446 for(;it0!=val0.end();++it0){
17447 std::string child1key=std::string(it0->first,0,item_size1key);
17448 fixed_val0[child1key] = it0->second;
17449 ++pad_count0;
17450
17451 }
17452 hasher_.Clear();
17453 hasher_.Update(fixed_val0);
17454 Digest key0 = hasher_.digest();
17455 hid_t keysds0 = VLDataset(VL_MAP_STRING_DOUBLE, true);
17456 hid_t valsds0 = VLDataset(VL_MAP_STRING_DOUBLE, false);
17457 if (vlkeys_[VL_MAP_STRING_DOUBLE].count(key0) != 1) {
17458 hvl_t buf0 = VLValToBuf(fixed_val0);
17459 AppendVLKey(keysds0, VL_MAP_STRING_DOUBLE, key0);
17460 InsertVLVal(valsds0, VL_MAP_STRING_DOUBLE, key0, buf0);
17461 }
17463}
17464template<>
17465void Hdf5Back::WriteToBuf<MAP_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17466 std::map<std::string, std::string> val0=a->cast<std::map<std::string, std::string>>();
17467 size_t item_size0=((shape[1]+shape[2])*shape[0]);
17468 size_t length0=shape[0];
17469 size_t item_size1key=shape[1];
17470 size_t valuelen1key;
17471 size_t item_size1val=shape[2];
17472 size_t valuelen1val;
17474 if(total_item_size0*val0.size()>column){
17475 std::map<std::string, std::string>::iterator eraseit=val0.begin();
17476 std::advance(eraseit, column/total_item_size0);
17477 val0.erase(eraseit,val0.end());
17478
17479 }
17480 unsigned int count0=0;
17481 std::map<std::string, std::string>::iterator it0=val0.begin();
17482 for(;it0!=val0.end();++it0){
17483 valuelen1key=std::min(it0->first.size(), item_size1key);
17484 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
17486 valuelen1val=std::min(it0->second.size(), item_size1val);
17489 ++count0;
17490
17491 }
17494
17495 }
17496}
17497template<>
17498void Hdf5Back::WriteToBuf<VL_MAP_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17499 std::map<std::string, std::string> val0=a->cast<std::map<std::string, std::string>>();
17501 size_t item_size1key=shape[1];
17502 size_t valuelen1key;
17503 size_t item_size1val=shape[2];
17504 size_t valuelen1val;
17506 unsigned int count0=0;
17507 std::map<std::string, std::string>::iterator it0=val0.begin();
17508 std::map<std::string, std::string> fixed_val0;
17509 unsigned int pad_count0=0;
17510 for(;it0!=val0.end();++it0){
17511 std::string child1key=std::string(it0->first,0,item_size1key);
17512 std::string child1val=std::string(it0->second,0,item_size1val);
17514 ++pad_count0;
17515
17516 }
17517 hasher_.Clear();
17518 hasher_.Update(fixed_val0);
17519 Digest key0 = hasher_.digest();
17520 hid_t keysds0 = VLDataset(VL_MAP_STRING_STRING, true);
17521 hid_t valsds0 = VLDataset(VL_MAP_STRING_STRING, false);
17522 if (vlkeys_[VL_MAP_STRING_STRING].count(key0) != 1) {
17523 hvl_t buf0 = VLValToBuf(fixed_val0);
17524 AppendVLKey(keysds0, VL_MAP_STRING_STRING, key0);
17525 InsertVLVal(valsds0, VL_MAP_STRING_STRING, key0, buf0);
17526 }
17528}
17529template<>
17530void Hdf5Back::WriteToBuf<MAP_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17531 std::map<std::string, std::string> val0=a->cast<std::map<std::string, std::string>>();
17532 size_t item_size0=((shape[1]+CYCLUS_SHA1_SIZE)*shape[0]);
17533 size_t length0=shape[0];
17534 size_t item_size1key=shape[1];
17535 size_t valuelen1key;
17538 if(total_item_size0*val0.size()>column){
17539 std::map<std::string, std::string>::iterator eraseit=val0.begin();
17540 std::advance(eraseit, column/total_item_size0);
17541 val0.erase(eraseit,val0.end());
17542
17543 }
17544 unsigned int count0=0;
17545 std::map<std::string, std::string>::iterator it0=val0.begin();
17546 for(;it0!=val0.end();++it0){
17547 valuelen1key=std::min(it0->first.size(), item_size1key);
17548 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
17550 hasher_.Clear();
17551 hasher_.Update(it0->second);
17552 Digest key1val = hasher_.digest();
17553 hid_t keysds1val = VLDataset(VL_STRING, true);
17554 hid_t valsds1val = VLDataset(VL_STRING, false);
17555 if (vlkeys_[VL_STRING].count(key1val) != 1) {
17556 AppendVLKey(keysds1val, VL_STRING, key1val);
17557 InsertVLVal(valsds1val, VL_STRING, key1val, it0->second);
17558 }
17560 ++count0;
17561
17562 }
17565
17566 }
17567}
17568template<>
17569void Hdf5Back::WriteToBuf<VL_MAP_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17570 std::map<std::string, std::string> val0=a->cast<std::map<std::string, std::string>>();
17572 size_t item_size1key=shape[1];
17573 size_t valuelen1key;
17576 unsigned int count0=0;
17577 std::map<std::string, std::string>::iterator it0=val0.begin();
17578 std::map<std::string, std::string> fixed_val0;
17579 unsigned int pad_count0=0;
17580 for(;it0!=val0.end();++it0){
17581 std::string child1key=std::string(it0->first,0,item_size1key);
17582 fixed_val0[child1key] = it0->second;
17583 ++pad_count0;
17584
17585 }
17586 hasher_.Clear();
17587 hasher_.Update(fixed_val0);
17588 Digest key0 = hasher_.digest();
17589 hid_t keysds0 = VLDataset(VL_MAP_STRING_VL_STRING, true);
17590 hid_t valsds0 = VLDataset(VL_MAP_STRING_VL_STRING, false);
17591 if (vlkeys_[VL_MAP_STRING_VL_STRING].count(key0) != 1) {
17592 hvl_t buf0 = VLValToBuf(fixed_val0);
17593 AppendVLKey(keysds0, VL_MAP_STRING_VL_STRING, key0);
17594 InsertVLVal(valsds0, VL_MAP_STRING_VL_STRING, key0, buf0);
17595 }
17597}
17598template<>
17599void Hdf5Back::WriteToBuf<MAP_STRING_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17600 std::map<std::string, cyclus::Blob> val0=a->cast<std::map<std::string, cyclus::Blob>>();
17601 size_t item_size0=((shape[1]+CYCLUS_SHA1_SIZE)*shape[0]);
17602 size_t length0=shape[0];
17603 size_t item_size1key=shape[1];
17604 size_t valuelen1key;
17607 if(total_item_size0*val0.size()>column){
17608 std::map<std::string, cyclus::Blob>::iterator eraseit=val0.begin();
17609 std::advance(eraseit, column/total_item_size0);
17610 val0.erase(eraseit,val0.end());
17611
17612 }
17613 unsigned int count0=0;
17614 std::map<std::string, cyclus::Blob>::iterator it0=val0.begin();
17615 for(;it0!=val0.end();++it0){
17616 valuelen1key=std::min(it0->first.size(), item_size1key);
17617 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
17619 hasher_.Clear();
17620 hasher_.Update(it0->second);
17621 Digest key1val = hasher_.digest();
17622 hid_t keysds1val = VLDataset(BLOB, true);
17623 hid_t valsds1val = VLDataset(BLOB, false);
17624 if (vlkeys_[BLOB].count(key1val) != 1) {
17625 AppendVLKey(keysds1val, BLOB, key1val);
17626 InsertVLVal(valsds1val, BLOB, key1val, (it0->second).str());
17627 }
17629 ++count0;
17630
17631 }
17634
17635 }
17636}
17637template<>
17638void Hdf5Back::WriteToBuf<VL_MAP_STRING_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17639 std::map<std::string, cyclus::Blob> val0=a->cast<std::map<std::string, cyclus::Blob>>();
17641 size_t item_size1key=shape[1];
17642 size_t valuelen1key;
17645 unsigned int count0=0;
17646 std::map<std::string, cyclus::Blob>::iterator it0=val0.begin();
17647 std::map<std::string, cyclus::Blob> fixed_val0;
17648 unsigned int pad_count0=0;
17649 for(;it0!=val0.end();++it0){
17650 std::string child1key=std::string(it0->first,0,item_size1key);
17651 fixed_val0[child1key] = it0->second;
17652 ++pad_count0;
17653
17654 }
17655 hasher_.Clear();
17656 hasher_.Update(fixed_val0);
17657 Digest key0 = hasher_.digest();
17658 hid_t keysds0 = VLDataset(VL_MAP_STRING_BLOB, true);
17659 hid_t valsds0 = VLDataset(VL_MAP_STRING_BLOB, false);
17660 if (vlkeys_[VL_MAP_STRING_BLOB].count(key0) != 1) {
17661 hvl_t buf0 = VLValToBuf(fixed_val0);
17662 AppendVLKey(keysds0, VL_MAP_STRING_BLOB, key0);
17663 InsertVLVal(valsds0, VL_MAP_STRING_BLOB, key0, buf0);
17664 }
17666}
17667template<>
17668void Hdf5Back::WriteToBuf<MAP_STRING_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17669 std::map<std::string, boost::uuids::uuid> val0=a->cast<std::map<std::string, boost::uuids::uuid>>();
17670 size_t item_size0=((shape[1]+CYCLUS_UUID_SIZE)*shape[0]);
17671 size_t length0=shape[0];
17672 size_t item_size1key=shape[1];
17673 size_t valuelen1key;
17676 if(total_item_size0*val0.size()>column){
17677 std::map<std::string, boost::uuids::uuid>::iterator eraseit=val0.begin();
17678 std::advance(eraseit, column/total_item_size0);
17679 val0.erase(eraseit,val0.end());
17680
17681 }
17682 unsigned int count0=0;
17683 std::map<std::string, boost::uuids::uuid>::iterator it0=val0.begin();
17684 for(;it0!=val0.end();++it0){
17685 valuelen1key=std::min(it0->first.size(), item_size1key);
17686 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
17689 ++count0;
17690
17691 }
17694
17695 }
17696}
17697template<>
17698void Hdf5Back::WriteToBuf<VL_MAP_STRING_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17699 std::map<std::string, boost::uuids::uuid> val0=a->cast<std::map<std::string, boost::uuids::uuid>>();
17701 size_t item_size1key=shape[1];
17702 size_t valuelen1key;
17705 unsigned int count0=0;
17706 std::map<std::string, boost::uuids::uuid>::iterator it0=val0.begin();
17707 std::map<std::string, boost::uuids::uuid> fixed_val0;
17708 unsigned int pad_count0=0;
17709 for(;it0!=val0.end();++it0){
17710 std::string child1key=std::string(it0->first,0,item_size1key);
17711 fixed_val0[child1key] = it0->second;
17712 ++pad_count0;
17713
17714 }
17715 hasher_.Clear();
17716 hasher_.Update(fixed_val0);
17717 Digest key0 = hasher_.digest();
17718 hid_t keysds0 = VLDataset(VL_MAP_STRING_UUID, true);
17719 hid_t valsds0 = VLDataset(VL_MAP_STRING_UUID, false);
17720 if (vlkeys_[VL_MAP_STRING_UUID].count(key0) != 1) {
17721 hvl_t buf0 = VLValToBuf(fixed_val0);
17722 AppendVLKey(keysds0, VL_MAP_STRING_UUID, key0);
17723 InsertVLVal(valsds0, VL_MAP_STRING_UUID, key0, buf0);
17724 }
17726}
17727template<>
17728void Hdf5Back::WriteToBuf<MAP_VL_STRING_BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17729 std::map<std::string, bool> val0=a->cast<std::map<std::string, bool>>();
17730 size_t item_size0=((CYCLUS_SHA1_SIZE+sizeof(char))*shape[0]);
17731 size_t length0=shape[0];
17733 size_t item_size1val=sizeof(char);
17735 if(total_item_size0*val0.size()>column){
17736 std::map<std::string, bool>::iterator eraseit=val0.begin();
17737 std::advance(eraseit, column/total_item_size0);
17738 val0.erase(eraseit,val0.end());
17739
17740 }
17741 unsigned int count0=0;
17742 std::map<std::string, bool>::iterator it0=val0.begin();
17743 for(;it0!=val0.end();++it0){
17744 hasher_.Clear();
17745 hasher_.Update(it0->first);
17746 Digest key1key = hasher_.digest();
17747 hid_t keysds1key = VLDataset(VL_STRING, true);
17748 hid_t valsds1key = VLDataset(VL_STRING, false);
17749 if (vlkeys_[VL_STRING].count(key1key) != 1) {
17750 AppendVLKey(keysds1key, VL_STRING, key1key);
17751 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
17752 }
17755 ++count0;
17756
17757 }
17760
17761 }
17762}
17763template<>
17764void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_BOOL>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17765 std::map<std::string, bool> val0=a->cast<std::map<std::string, bool>>();
17768 size_t item_size1val=sizeof(char);
17770 hasher_.Clear();
17771 hasher_.Update(val0);
17772 Digest key0 = hasher_.digest();
17773 hid_t keysds0 = VLDataset(VL_MAP_VL_STRING_BOOL, true);
17774 hid_t valsds0 = VLDataset(VL_MAP_VL_STRING_BOOL, false);
17775 if (vlkeys_[VL_MAP_VL_STRING_BOOL].count(key0) != 1) {
17776 hvl_t buf0 = VLValToBuf(val0);
17777 AppendVLKey(keysds0, VL_MAP_VL_STRING_BOOL, key0);
17778 InsertVLVal(valsds0, VL_MAP_VL_STRING_BOOL, key0, buf0);
17779 }
17781}
17782template<>
17783void Hdf5Back::WriteToBuf<MAP_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17784 std::map<std::string, int> val0=a->cast<std::map<std::string, int>>();
17785 size_t item_size0=((CYCLUS_SHA1_SIZE+sizeof(int))*shape[0]);
17786 size_t length0=shape[0];
17788 size_t item_size1val=sizeof(int);
17790 if(total_item_size0*val0.size()>column){
17791 std::map<std::string, int>::iterator eraseit=val0.begin();
17792 std::advance(eraseit, column/total_item_size0);
17793 val0.erase(eraseit,val0.end());
17794
17795 }
17796 unsigned int count0=0;
17797 std::map<std::string, int>::iterator it0=val0.begin();
17798 for(;it0!=val0.end();++it0){
17799 hasher_.Clear();
17800 hasher_.Update(it0->first);
17801 Digest key1key = hasher_.digest();
17802 hid_t keysds1key = VLDataset(VL_STRING, true);
17803 hid_t valsds1key = VLDataset(VL_STRING, false);
17804 if (vlkeys_[VL_STRING].count(key1key) != 1) {
17805 AppendVLKey(keysds1key, VL_STRING, key1key);
17806 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
17807 }
17810 ++count0;
17811
17812 }
17815
17816 }
17817}
17818template<>
17819void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17820 std::map<std::string, int> val0=a->cast<std::map<std::string, int>>();
17823 size_t item_size1val=sizeof(int);
17825 hasher_.Clear();
17826 hasher_.Update(val0);
17827 Digest key0 = hasher_.digest();
17828 hid_t keysds0 = VLDataset(VL_MAP_VL_STRING_INT, true);
17829 hid_t valsds0 = VLDataset(VL_MAP_VL_STRING_INT, false);
17830 if (vlkeys_[VL_MAP_VL_STRING_INT].count(key0) != 1) {
17831 hvl_t buf0 = VLValToBuf(val0);
17832 AppendVLKey(keysds0, VL_MAP_VL_STRING_INT, key0);
17833 InsertVLVal(valsds0, VL_MAP_VL_STRING_INT, key0, buf0);
17834 }
17836}
17837template<>
17838void Hdf5Back::WriteToBuf<MAP_VL_STRING_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17839 std::map<std::string, float> val0=a->cast<std::map<std::string, float>>();
17840 size_t item_size0=((CYCLUS_SHA1_SIZE+sizeof(float))*shape[0]);
17841 size_t length0=shape[0];
17843 size_t item_size1val=sizeof(float);
17845 if(total_item_size0*val0.size()>column){
17846 std::map<std::string, float>::iterator eraseit=val0.begin();
17847 std::advance(eraseit, column/total_item_size0);
17848 val0.erase(eraseit,val0.end());
17849
17850 }
17851 unsigned int count0=0;
17852 std::map<std::string, float>::iterator it0=val0.begin();
17853 for(;it0!=val0.end();++it0){
17854 hasher_.Clear();
17855 hasher_.Update(it0->first);
17856 Digest key1key = hasher_.digest();
17857 hid_t keysds1key = VLDataset(VL_STRING, true);
17858 hid_t valsds1key = VLDataset(VL_STRING, false);
17859 if (vlkeys_[VL_STRING].count(key1key) != 1) {
17860 AppendVLKey(keysds1key, VL_STRING, key1key);
17861 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
17862 }
17865 ++count0;
17866
17867 }
17870
17871 }
17872}
17873template<>
17874void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_FLOAT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17875 std::map<std::string, float> val0=a->cast<std::map<std::string, float>>();
17878 size_t item_size1val=sizeof(float);
17880 hasher_.Clear();
17881 hasher_.Update(val0);
17882 Digest key0 = hasher_.digest();
17883 hid_t keysds0 = VLDataset(VL_MAP_VL_STRING_FLOAT, true);
17884 hid_t valsds0 = VLDataset(VL_MAP_VL_STRING_FLOAT, false);
17885 if (vlkeys_[VL_MAP_VL_STRING_FLOAT].count(key0) != 1) {
17886 hvl_t buf0 = VLValToBuf(val0);
17887 AppendVLKey(keysds0, VL_MAP_VL_STRING_FLOAT, key0);
17888 InsertVLVal(valsds0, VL_MAP_VL_STRING_FLOAT, key0, buf0);
17889 }
17891}
17892template<>
17893void Hdf5Back::WriteToBuf<MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17894 std::map<std::string, double> val0=a->cast<std::map<std::string, double>>();
17895 size_t item_size0=((CYCLUS_SHA1_SIZE+sizeof(double))*shape[0]);
17896 size_t length0=shape[0];
17898 size_t item_size1val=sizeof(double);
17900 if(total_item_size0*val0.size()>column){
17901 std::map<std::string, double>::iterator eraseit=val0.begin();
17902 std::advance(eraseit, column/total_item_size0);
17903 val0.erase(eraseit,val0.end());
17904
17905 }
17906 unsigned int count0=0;
17907 std::map<std::string, double>::iterator it0=val0.begin();
17908 for(;it0!=val0.end();++it0){
17909 hasher_.Clear();
17910 hasher_.Update(it0->first);
17911 Digest key1key = hasher_.digest();
17912 hid_t keysds1key = VLDataset(VL_STRING, true);
17913 hid_t valsds1key = VLDataset(VL_STRING, false);
17914 if (vlkeys_[VL_STRING].count(key1key) != 1) {
17915 AppendVLKey(keysds1key, VL_STRING, key1key);
17916 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
17917 }
17920 ++count0;
17921
17922 }
17925
17926 }
17927}
17928template<>
17929void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17930 std::map<std::string, double> val0=a->cast<std::map<std::string, double>>();
17933 size_t item_size1val=sizeof(double);
17935 hasher_.Clear();
17936 hasher_.Update(val0);
17937 Digest key0 = hasher_.digest();
17938 hid_t keysds0 = VLDataset(VL_MAP_VL_STRING_DOUBLE, true);
17939 hid_t valsds0 = VLDataset(VL_MAP_VL_STRING_DOUBLE, false);
17940 if (vlkeys_[VL_MAP_VL_STRING_DOUBLE].count(key0) != 1) {
17941 hvl_t buf0 = VLValToBuf(val0);
17942 AppendVLKey(keysds0, VL_MAP_VL_STRING_DOUBLE, key0);
17943 InsertVLVal(valsds0, VL_MAP_VL_STRING_DOUBLE, key0, buf0);
17944 }
17946}
17947template<>
17948void Hdf5Back::WriteToBuf<MAP_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17949 std::map<std::string, std::string> val0=a->cast<std::map<std::string, std::string>>();
17950 size_t item_size0=((CYCLUS_SHA1_SIZE+shape[2])*shape[0]);
17951 size_t length0=shape[0];
17953 size_t item_size1val=shape[2];
17954 size_t valuelen1val;
17956 if(total_item_size0*val0.size()>column){
17957 std::map<std::string, std::string>::iterator eraseit=val0.begin();
17958 std::advance(eraseit, column/total_item_size0);
17959 val0.erase(eraseit,val0.end());
17960
17961 }
17962 unsigned int count0=0;
17963 std::map<std::string, std::string>::iterator it0=val0.begin();
17964 for(;it0!=val0.end();++it0){
17965 hasher_.Clear();
17966 hasher_.Update(it0->first);
17967 Digest key1key = hasher_.digest();
17968 hid_t keysds1key = VLDataset(VL_STRING, true);
17969 hid_t valsds1key = VLDataset(VL_STRING, false);
17970 if (vlkeys_[VL_STRING].count(key1key) != 1) {
17971 AppendVLKey(keysds1key, VL_STRING, key1key);
17972 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
17973 }
17975 valuelen1val=std::min(it0->second.size(), item_size1val);
17978 ++count0;
17979
17980 }
17983
17984 }
17985}
17986template<>
17987void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
17988 std::map<std::string, std::string> val0=a->cast<std::map<std::string, std::string>>();
17991 size_t item_size1val=shape[2];
17992 size_t valuelen1val;
17994 unsigned int count0=0;
17995 std::map<std::string, std::string>::iterator it0=val0.begin();
17996 std::map<std::string, std::string> fixed_val0;
17997 unsigned int pad_count0=0;
17998 for(;it0!=val0.end();++it0){
17999 std::string child1val=std::string(it0->second,0,item_size1val);
18000 fixed_val0[it0->first] = child1val;
18001 ++pad_count0;
18002
18003 }
18004 hasher_.Clear();
18005 hasher_.Update(fixed_val0);
18006 Digest key0 = hasher_.digest();
18007 hid_t keysds0 = VLDataset(VL_MAP_VL_STRING_STRING, true);
18008 hid_t valsds0 = VLDataset(VL_MAP_VL_STRING_STRING, false);
18009 if (vlkeys_[VL_MAP_VL_STRING_STRING].count(key0) != 1) {
18010 hvl_t buf0 = VLValToBuf(fixed_val0);
18011 AppendVLKey(keysds0, VL_MAP_VL_STRING_STRING, key0);
18012 InsertVLVal(valsds0, VL_MAP_VL_STRING_STRING, key0, buf0);
18013 }
18015}
18016template<>
18017void Hdf5Back::WriteToBuf<MAP_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18018 std::map<std::string, std::string> val0=a->cast<std::map<std::string, std::string>>();
18019 size_t item_size0=((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)*shape[0]);
18020 size_t length0=shape[0];
18024 if(total_item_size0*val0.size()>column){
18025 std::map<std::string, std::string>::iterator eraseit=val0.begin();
18026 std::advance(eraseit, column/total_item_size0);
18027 val0.erase(eraseit,val0.end());
18028
18029 }
18030 unsigned int count0=0;
18031 std::map<std::string, std::string>::iterator it0=val0.begin();
18032 for(;it0!=val0.end();++it0){
18033 hasher_.Clear();
18034 hasher_.Update(it0->first);
18035 Digest key1key = hasher_.digest();
18036 hid_t keysds1key = VLDataset(VL_STRING, true);
18037 hid_t valsds1key = VLDataset(VL_STRING, false);
18038 if (vlkeys_[VL_STRING].count(key1key) != 1) {
18039 AppendVLKey(keysds1key, VL_STRING, key1key);
18040 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
18041 }
18043 hasher_.Clear();
18044 hasher_.Update(it0->second);
18045 Digest key1val = hasher_.digest();
18046 hid_t keysds1val = VLDataset(VL_STRING, true);
18047 hid_t valsds1val = VLDataset(VL_STRING, false);
18048 if (vlkeys_[VL_STRING].count(key1val) != 1) {
18049 AppendVLKey(keysds1val, VL_STRING, key1val);
18050 InsertVLVal(valsds1val, VL_STRING, key1val, it0->second);
18051 }
18053 ++count0;
18054
18055 }
18058
18059 }
18060}
18061template<>
18062void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18063 std::map<std::string, std::string> val0=a->cast<std::map<std::string, std::string>>();
18068 hasher_.Clear();
18069 hasher_.Update(val0);
18070 Digest key0 = hasher_.digest();
18071 hid_t keysds0 = VLDataset(VL_MAP_VL_STRING_VL_STRING, true);
18072 hid_t valsds0 = VLDataset(VL_MAP_VL_STRING_VL_STRING, false);
18073 if (vlkeys_[VL_MAP_VL_STRING_VL_STRING].count(key0) != 1) {
18074 hvl_t buf0 = VLValToBuf(val0);
18077 }
18079}
18080template<>
18081void Hdf5Back::WriteToBuf<MAP_VL_STRING_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18082 std::map<std::string, cyclus::Blob> val0=a->cast<std::map<std::string, cyclus::Blob>>();
18083 size_t item_size0=((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)*shape[0]);
18084 size_t length0=shape[0];
18088 if(total_item_size0*val0.size()>column){
18089 std::map<std::string, cyclus::Blob>::iterator eraseit=val0.begin();
18090 std::advance(eraseit, column/total_item_size0);
18091 val0.erase(eraseit,val0.end());
18092
18093 }
18094 unsigned int count0=0;
18095 std::map<std::string, cyclus::Blob>::iterator it0=val0.begin();
18096 for(;it0!=val0.end();++it0){
18097 hasher_.Clear();
18098 hasher_.Update(it0->first);
18099 Digest key1key = hasher_.digest();
18100 hid_t keysds1key = VLDataset(VL_STRING, true);
18101 hid_t valsds1key = VLDataset(VL_STRING, false);
18102 if (vlkeys_[VL_STRING].count(key1key) != 1) {
18103 AppendVLKey(keysds1key, VL_STRING, key1key);
18104 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
18105 }
18107 hasher_.Clear();
18108 hasher_.Update(it0->second);
18109 Digest key1val = hasher_.digest();
18110 hid_t keysds1val = VLDataset(BLOB, true);
18111 hid_t valsds1val = VLDataset(BLOB, false);
18112 if (vlkeys_[BLOB].count(key1val) != 1) {
18113 AppendVLKey(keysds1val, BLOB, key1val);
18114 InsertVLVal(valsds1val, BLOB, key1val, (it0->second).str());
18115 }
18117 ++count0;
18118
18119 }
18122
18123 }
18124}
18125template<>
18126void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_BLOB>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18127 std::map<std::string, cyclus::Blob> val0=a->cast<std::map<std::string, cyclus::Blob>>();
18132 hasher_.Clear();
18133 hasher_.Update(val0);
18134 Digest key0 = hasher_.digest();
18135 hid_t keysds0 = VLDataset(VL_MAP_VL_STRING_BLOB, true);
18136 hid_t valsds0 = VLDataset(VL_MAP_VL_STRING_BLOB, false);
18137 if (vlkeys_[VL_MAP_VL_STRING_BLOB].count(key0) != 1) {
18138 hvl_t buf0 = VLValToBuf(val0);
18139 AppendVLKey(keysds0, VL_MAP_VL_STRING_BLOB, key0);
18140 InsertVLVal(valsds0, VL_MAP_VL_STRING_BLOB, key0, buf0);
18141 }
18143}
18144template<>
18145void Hdf5Back::WriteToBuf<MAP_VL_STRING_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18146 std::map<std::string, boost::uuids::uuid> val0=a->cast<std::map<std::string, boost::uuids::uuid>>();
18147 size_t item_size0=((CYCLUS_SHA1_SIZE+CYCLUS_UUID_SIZE)*shape[0]);
18148 size_t length0=shape[0];
18152 if(total_item_size0*val0.size()>column){
18153 std::map<std::string, boost::uuids::uuid>::iterator eraseit=val0.begin();
18154 std::advance(eraseit, column/total_item_size0);
18155 val0.erase(eraseit,val0.end());
18156
18157 }
18158 unsigned int count0=0;
18159 std::map<std::string, boost::uuids::uuid>::iterator it0=val0.begin();
18160 for(;it0!=val0.end();++it0){
18161 hasher_.Clear();
18162 hasher_.Update(it0->first);
18163 Digest key1key = hasher_.digest();
18164 hid_t keysds1key = VLDataset(VL_STRING, true);
18165 hid_t valsds1key = VLDataset(VL_STRING, false);
18166 if (vlkeys_[VL_STRING].count(key1key) != 1) {
18167 AppendVLKey(keysds1key, VL_STRING, key1key);
18168 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
18169 }
18172 ++count0;
18173
18174 }
18177
18178 }
18179}
18180template<>
18181void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_UUID>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18182 std::map<std::string, boost::uuids::uuid> val0=a->cast<std::map<std::string, boost::uuids::uuid>>();
18187 hasher_.Clear();
18188 hasher_.Update(val0);
18189 Digest key0 = hasher_.digest();
18190 hid_t keysds0 = VLDataset(VL_MAP_VL_STRING_UUID, true);
18191 hid_t valsds0 = VLDataset(VL_MAP_VL_STRING_UUID, false);
18192 if (vlkeys_[VL_MAP_VL_STRING_UUID].count(key0) != 1) {
18193 hvl_t buf0 = VLValToBuf(val0);
18194 AppendVLKey(keysds0, VL_MAP_VL_STRING_UUID, key0);
18195 InsertVLVal(valsds0, VL_MAP_VL_STRING_UUID, key0, buf0);
18196 }
18198}
18199template<>
18200void Hdf5Back::WriteToBuf<MAP_PAIR_INT_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18201 std::map<std::pair<int, std::string>, double> val0=a->cast<std::map<std::pair<int, std::string>, double>>();
18202 size_t item_size0=((((sizeof(int)+shape[3]))+sizeof(double))*shape[0]);
18203 size_t length0=shape[0];
18204 size_t item_size1key=((sizeof(int)+shape[3]));
18205 size_t item_size2keyfirst=sizeof(int);
18206 size_t item_size2keysecond=shape[3];
18207 size_t valuelen2keysecond;
18209 size_t item_size1val=sizeof(double);
18211 if(total_item_size0*val0.size()>column){
18212 std::map<std::pair<int, std::string>, double>::iterator eraseit=val0.begin();
18213 std::advance(eraseit, column/total_item_size0);
18214 val0.erase(eraseit,val0.end());
18215
18216 }
18217 unsigned int count0=0;
18218 std::map<std::pair<int, std::string>, double>::iterator it0=val0.begin();
18219 for(;it0!=val0.end();++it0){
18220 unsigned int count1key=0;
18222 valuelen2keysecond=std::min(it0->first.second.size(), item_size2keysecond);
18226 ++count0;
18227
18228 }
18231
18232 }
18233}
18234template<>
18235void Hdf5Back::WriteToBuf<VL_MAP_PAIR_INT_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18236 std::map<std::pair<int, std::string>, double> val0=a->cast<std::map<std::pair<int, std::string>, double>>();
18238 size_t item_size1key=((sizeof(int)+shape[3]));
18239 size_t item_size2keyfirst=sizeof(int);
18240 size_t item_size2keysecond=shape[3];
18241 size_t valuelen2keysecond;
18243 size_t item_size1val=sizeof(double);
18245 unsigned int count0=0;
18246 std::map<std::pair<int, std::string>, double>::iterator it0=val0.begin();
18247 std::map<std::pair<int, std::string>, double> fixed_val0;
18248 unsigned int pad_count0=0;
18249 for(;it0!=val0.end();++it0){
18250 std::pair<int, std::string> child1key;
18251 unsigned int pad_count1key=0;
18252 std::string child2keysecond=std::string(it0->first.second,0,item_size2keysecond);
18253 child1key = std::make_pair(it0->first.first,child2keysecond);
18254 fixed_val0[child1key] = it0->second;
18255 ++pad_count0;
18256
18257 }
18258 hasher_.Clear();
18259 hasher_.Update(fixed_val0);
18260 Digest key0 = hasher_.digest();
18261 hid_t keysds0 = VLDataset(VL_MAP_PAIR_INT_STRING_DOUBLE, true);
18262 hid_t valsds0 = VLDataset(VL_MAP_PAIR_INT_STRING_DOUBLE, false);
18263 if (vlkeys_[VL_MAP_PAIR_INT_STRING_DOUBLE].count(key0) != 1) {
18264 hvl_t buf0 = VLValToBuf(fixed_val0);
18267 }
18269}
18270template<>
18271void Hdf5Back::WriteToBuf<MAP_PAIR_INT_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18272 std::map<std::pair<int, std::string>, double> val0=a->cast<std::map<std::pair<int, std::string>, double>>();
18273 size_t item_size0=((((sizeof(int)+CYCLUS_SHA1_SIZE))+sizeof(double))*shape[0]);
18274 size_t length0=shape[0];
18275 size_t item_size1key=((sizeof(int)+CYCLUS_SHA1_SIZE));
18276 size_t item_size2keyfirst=sizeof(int);
18279 size_t item_size1val=sizeof(double);
18281 if(total_item_size0*val0.size()>column){
18282 std::map<std::pair<int, std::string>, double>::iterator eraseit=val0.begin();
18283 std::advance(eraseit, column/total_item_size0);
18284 val0.erase(eraseit,val0.end());
18285
18286 }
18287 unsigned int count0=0;
18288 std::map<std::pair<int, std::string>, double>::iterator it0=val0.begin();
18289 for(;it0!=val0.end();++it0){
18290 unsigned int count1key=0;
18292 hasher_.Clear();
18293 hasher_.Update(it0->first.second);
18294 Digest key2keysecond = hasher_.digest();
18295 hid_t keysds2keysecond = VLDataset(VL_STRING, true);
18296 hid_t valsds2keysecond = VLDataset(VL_STRING, false);
18297 if (vlkeys_[VL_STRING].count(key2keysecond) != 1) {
18299 InsertVLVal(valsds2keysecond, VL_STRING, key2keysecond, it0->first.second);
18300 }
18303 ++count0;
18304
18305 }
18308
18309 }
18310}
18311template<>
18312void Hdf5Back::WriteToBuf<VL_MAP_PAIR_INT_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18313 std::map<std::pair<int, std::string>, double> val0=a->cast<std::map<std::pair<int, std::string>, double>>();
18315 size_t item_size1key=((sizeof(int)+CYCLUS_SHA1_SIZE));
18316 size_t item_size2keyfirst=sizeof(int);
18319 size_t item_size1val=sizeof(double);
18321 hasher_.Clear();
18322 hasher_.Update(val0);
18323 Digest key0 = hasher_.digest();
18326 if (vlkeys_[VL_MAP_PAIR_INT_VL_STRING_DOUBLE].count(key0) != 1) {
18327 hvl_t buf0 = VLValToBuf(val0);
18330 }
18332}
18333template<>
18334void Hdf5Back::WriteToBuf<MAP_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18335 std::map<std::string, std::vector<double>> val0=a->cast<std::map<std::string, std::vector<double>>>();
18336 size_t item_size0=((shape[1]+((sizeof(double))*shape[2]))*shape[0]);
18337 size_t length0=shape[0];
18338 size_t item_size1key=shape[1];
18339 size_t valuelen1key;
18340 size_t item_size1val=((sizeof(double))*shape[2]);
18341 size_t length1val=shape[2];
18342 size_t item_size2valelem=sizeof(double);
18345 if(total_item_size0*val0.size()>column){
18346 std::map<std::string, std::vector<double>>::iterator eraseit=val0.begin();
18347 std::advance(eraseit, column/total_item_size0);
18348 val0.erase(eraseit,val0.end());
18349
18350 }
18351 unsigned int count0=0;
18352 std::map<std::string, std::vector<double>>::iterator it0=val0.begin();
18353 for(;it0!=val0.end();++it0){
18354 valuelen1key=std::min(it0->first.size(), item_size1key);
18355 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
18357 unsigned int count1val=0;
18358 std::vector<double>::iterator it1val=it0->second.begin();
18359 for(;it1val!=it0->second.end();++it1val){
18361 ++count1val;
18362
18363 }
18365 ++count0;
18366
18367 }
18370
18371 }
18372}
18373template<>
18374void Hdf5Back::WriteToBuf<MAP_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18375 std::map<std::string, std::vector<double>> val0=a->cast<std::map<std::string, std::vector<double>>>();
18376 size_t item_size0=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
18377 size_t length0=shape[0];
18378 size_t item_size1key=shape[1];
18379 size_t valuelen1key;
18381 size_t item_size2valelem=sizeof(double);
18384 if(total_item_size0*val0.size()>column){
18385 std::map<std::string, std::vector<double>>::iterator eraseit=val0.begin();
18386 std::advance(eraseit, column/total_item_size0);
18387 val0.erase(eraseit,val0.end());
18388
18389 }
18390 unsigned int count0=0;
18391 std::map<std::string, std::vector<double>>::iterator it0=val0.begin();
18392 for(;it0!=val0.end();++it0){
18393 valuelen1key=std::min(it0->first.size(), item_size1key);
18394 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
18396 hasher_.Clear();
18397 hasher_.Update(it0->second);
18398 Digest key1val = hasher_.digest();
18399 hid_t keysds1val = VLDataset(VL_VECTOR_DOUBLE, true);
18400 hid_t valsds1val = VLDataset(VL_VECTOR_DOUBLE, false);
18401 if (vlkeys_[VL_VECTOR_DOUBLE].count(key1val) != 1) {
18402 hvl_t buf1val = VLValToBuf(it0->second);
18403 AppendVLKey(keysds1val, VL_VECTOR_DOUBLE, key1val);
18405 }
18407 ++count0;
18408
18409 }
18412
18413 }
18414}
18415template<>
18416void Hdf5Back::WriteToBuf<VL_MAP_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18417 std::map<std::string, std::vector<double>> val0=a->cast<std::map<std::string, std::vector<double>>>();
18419 size_t item_size1key=shape[1];
18420 size_t valuelen1key;
18421 size_t item_size1val=((sizeof(double))*shape[2]);
18422 size_t length1val=shape[2];
18423 size_t item_size2valelem=sizeof(double);
18426 unsigned int count0=0;
18427 std::map<std::string, std::vector<double>>::iterator it0=val0.begin();
18428 std::map<std::string, std::vector<double>> fixed_val0;
18429 unsigned int pad_count0=0;
18430 for(;it0!=val0.end();++it0){
18431 std::string child1key=std::string(it0->first,0,item_size1key);
18432 std::vector<double> child1val;
18433 unsigned int pad_count1val=0;
18434 std::vector<double>::iterator it1val=it0->second.begin();
18435 for(;it1val!=it0->second.end();++it1val){
18436 child1val.push_back((*it1val));
18437 ++pad_count1val;
18438
18439 }
18440 child1val.resize(length1val);
18443 ++pad_count0;
18444
18445 }
18446 hasher_.Clear();
18447 hasher_.Update(fixed_val0);
18448 Digest key0 = hasher_.digest();
18449 hid_t keysds0 = VLDataset(VL_MAP_STRING_VECTOR_DOUBLE, true);
18450 hid_t valsds0 = VLDataset(VL_MAP_STRING_VECTOR_DOUBLE, false);
18451 if (vlkeys_[VL_MAP_STRING_VECTOR_DOUBLE].count(key0) != 1) {
18452 hvl_t buf0 = VLValToBuf(fixed_val0);
18455 }
18457}
18458template<>
18459void Hdf5Back::WriteToBuf<MAP_VL_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18460 std::map<std::string, std::vector<double>> val0=a->cast<std::map<std::string, std::vector<double>>>();
18461 size_t item_size0=((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[2]))*shape[0]);
18462 size_t length0=shape[0];
18464 size_t item_size1val=((sizeof(double))*shape[2]);
18465 size_t length1val=shape[2];
18466 size_t item_size2valelem=sizeof(double);
18469 if(total_item_size0*val0.size()>column){
18470 std::map<std::string, std::vector<double>>::iterator eraseit=val0.begin();
18471 std::advance(eraseit, column/total_item_size0);
18472 val0.erase(eraseit,val0.end());
18473
18474 }
18475 unsigned int count0=0;
18476 std::map<std::string, std::vector<double>>::iterator it0=val0.begin();
18477 for(;it0!=val0.end();++it0){
18478 hasher_.Clear();
18479 hasher_.Update(it0->first);
18480 Digest key1key = hasher_.digest();
18481 hid_t keysds1key = VLDataset(VL_STRING, true);
18482 hid_t valsds1key = VLDataset(VL_STRING, false);
18483 if (vlkeys_[VL_STRING].count(key1key) != 1) {
18484 AppendVLKey(keysds1key, VL_STRING, key1key);
18485 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
18486 }
18488 unsigned int count1val=0;
18489 std::vector<double>::iterator it1val=it0->second.begin();
18490 for(;it1val!=it0->second.end();++it1val){
18492 ++count1val;
18493
18494 }
18496 ++count0;
18497
18498 }
18501
18502 }
18503}
18504template<>
18505void Hdf5Back::WriteToBuf<MAP_VL_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18506 std::map<std::string, std::vector<double>> val0=a->cast<std::map<std::string, std::vector<double>>>();
18507 size_t item_size0=((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))*shape[0]);
18508 size_t length0=shape[0];
18511 size_t item_size2valelem=sizeof(double);
18514 if(total_item_size0*val0.size()>column){
18515 std::map<std::string, std::vector<double>>::iterator eraseit=val0.begin();
18516 std::advance(eraseit, column/total_item_size0);
18517 val0.erase(eraseit,val0.end());
18518
18519 }
18520 unsigned int count0=0;
18521 std::map<std::string, std::vector<double>>::iterator it0=val0.begin();
18522 for(;it0!=val0.end();++it0){
18523 hasher_.Clear();
18524 hasher_.Update(it0->first);
18525 Digest key1key = hasher_.digest();
18526 hid_t keysds1key = VLDataset(VL_STRING, true);
18527 hid_t valsds1key = VLDataset(VL_STRING, false);
18528 if (vlkeys_[VL_STRING].count(key1key) != 1) {
18529 AppendVLKey(keysds1key, VL_STRING, key1key);
18530 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
18531 }
18533 hasher_.Clear();
18534 hasher_.Update(it0->second);
18535 Digest key1val = hasher_.digest();
18536 hid_t keysds1val = VLDataset(VL_VECTOR_DOUBLE, true);
18537 hid_t valsds1val = VLDataset(VL_VECTOR_DOUBLE, false);
18538 if (vlkeys_[VL_VECTOR_DOUBLE].count(key1val) != 1) {
18539 hvl_t buf1val = VLValToBuf(it0->second);
18540 AppendVLKey(keysds1val, VL_VECTOR_DOUBLE, key1val);
18542 }
18544 ++count0;
18545
18546 }
18549
18550 }
18551}
18552template<>
18553void Hdf5Back::WriteToBuf<VL_MAP_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18554 std::map<std::string, std::vector<double>> val0=a->cast<std::map<std::string, std::vector<double>>>();
18556 size_t item_size1key=shape[1];
18557 size_t valuelen1key;
18559 size_t item_size2valelem=sizeof(double);
18562 unsigned int count0=0;
18563 std::map<std::string, std::vector<double>>::iterator it0=val0.begin();
18564 std::map<std::string, std::vector<double>> fixed_val0;
18565 unsigned int pad_count0=0;
18566 for(;it0!=val0.end();++it0){
18567 std::string child1key=std::string(it0->first,0,item_size1key);
18568 fixed_val0[child1key] = it0->second;
18569 ++pad_count0;
18570
18571 }
18572 hasher_.Clear();
18573 hasher_.Update(fixed_val0);
18574 Digest key0 = hasher_.digest();
18575 hid_t keysds0 = VLDataset(VL_MAP_STRING_VL_VECTOR_DOUBLE, true);
18576 hid_t valsds0 = VLDataset(VL_MAP_STRING_VL_VECTOR_DOUBLE, false);
18577 if (vlkeys_[VL_MAP_STRING_VL_VECTOR_DOUBLE].count(key0) != 1) {
18578 hvl_t buf0 = VLValToBuf(fixed_val0);
18581 }
18583}
18584template<>
18585void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18586 std::map<std::string, std::vector<double>> val0=a->cast<std::map<std::string, std::vector<double>>>();
18589 size_t item_size1val=((sizeof(double))*shape[2]);
18590 size_t length1val=shape[2];
18591 size_t item_size2valelem=sizeof(double);
18594 unsigned int count0=0;
18595 std::map<std::string, std::vector<double>>::iterator it0=val0.begin();
18596 std::map<std::string, std::vector<double>> fixed_val0;
18597 unsigned int pad_count0=0;
18598 for(;it0!=val0.end();++it0){
18599 std::vector<double> child1val;
18600 unsigned int pad_count1val=0;
18601 std::vector<double>::iterator it1val=it0->second.begin();
18602 for(;it1val!=it0->second.end();++it1val){
18603 child1val.push_back((*it1val));
18604 ++pad_count1val;
18605
18606 }
18607 child1val.resize(length1val);
18609 fixed_val0[it0->first] = child1val;
18610 ++pad_count0;
18611
18612 }
18613 hasher_.Clear();
18614 hasher_.Update(fixed_val0);
18615 Digest key0 = hasher_.digest();
18616 hid_t keysds0 = VLDataset(VL_MAP_VL_STRING_VECTOR_DOUBLE, true);
18617 hid_t valsds0 = VLDataset(VL_MAP_VL_STRING_VECTOR_DOUBLE, false);
18618 if (vlkeys_[VL_MAP_VL_STRING_VECTOR_DOUBLE].count(key0) != 1) {
18619 hvl_t buf0 = VLValToBuf(fixed_val0);
18622 }
18624}
18625template<>
18626void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18627 std::map<std::string, std::vector<double>> val0=a->cast<std::map<std::string, std::vector<double>>>();
18631 size_t item_size2valelem=sizeof(double);
18634 hasher_.Clear();
18635 hasher_.Update(val0);
18636 Digest key0 = hasher_.digest();
18639 if (vlkeys_[VL_MAP_VL_STRING_VL_VECTOR_DOUBLE].count(key0) != 1) {
18640 hvl_t buf0 = VLValToBuf(val0);
18643 }
18645}
18646template<>
18647void Hdf5Back::WriteToBuf<MAP_STRING_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18648 std::map<std::string, std::map<int, double>> val0=a->cast<std::map<std::string, std::map<int, double>>>();
18649 size_t item_size0=((shape[1]+((sizeof(int)+sizeof(double))*shape[2]))*shape[0]);
18650 size_t length0=shape[0];
18651 size_t item_size1key=shape[1];
18652 size_t valuelen1key;
18653 size_t item_size1val=((sizeof(int)+sizeof(double))*shape[2]);
18654 size_t length1val=shape[2];
18655 size_t item_size2valkey=sizeof(int);
18656 size_t item_size2valval=sizeof(double);
18659 if(total_item_size0*val0.size()>column){
18660 std::map<std::string, std::map<int, double>>::iterator eraseit=val0.begin();
18661 std::advance(eraseit, column/total_item_size0);
18662 val0.erase(eraseit,val0.end());
18663
18664 }
18665 unsigned int count0=0;
18666 std::map<std::string, std::map<int, double>>::iterator it0=val0.begin();
18667 for(;it0!=val0.end();++it0){
18668 valuelen1key=std::min(it0->first.size(), item_size1key);
18669 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
18671 unsigned int count1val=0;
18672 std::map<int, double>::iterator it1val=it0->second.begin();
18673 for(;it1val!=it0->second.end();++it1val){
18676 ++count1val;
18677
18678 }
18680 ++count0;
18681
18682 }
18685
18686 }
18687}
18688template<>
18689void Hdf5Back::WriteToBuf<MAP_STRING_VL_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18690 std::map<std::string, std::map<int, double>> val0=a->cast<std::map<std::string, std::map<int, double>>>();
18691 size_t item_size0=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
18692 size_t length0=shape[0];
18693 size_t item_size1key=shape[1];
18694 size_t valuelen1key;
18696 size_t item_size2valkey=sizeof(int);
18697 size_t item_size2valval=sizeof(double);
18700 if(total_item_size0*val0.size()>column){
18701 std::map<std::string, std::map<int, double>>::iterator eraseit=val0.begin();
18702 std::advance(eraseit, column/total_item_size0);
18703 val0.erase(eraseit,val0.end());
18704
18705 }
18706 unsigned int count0=0;
18707 std::map<std::string, std::map<int, double>>::iterator it0=val0.begin();
18708 for(;it0!=val0.end();++it0){
18709 valuelen1key=std::min(it0->first.size(), item_size1key);
18710 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
18712 hasher_.Clear();
18713 hasher_.Update(it0->second);
18714 Digest key1val = hasher_.digest();
18715 hid_t keysds1val = VLDataset(VL_MAP_INT_DOUBLE, true);
18716 hid_t valsds1val = VLDataset(VL_MAP_INT_DOUBLE, false);
18717 if (vlkeys_[VL_MAP_INT_DOUBLE].count(key1val) != 1) {
18718 hvl_t buf1val = VLValToBuf(it0->second);
18719 AppendVLKey(keysds1val, VL_MAP_INT_DOUBLE, key1val);
18721 }
18723 ++count0;
18724
18725 }
18728
18729 }
18730}
18731template<>
18732void Hdf5Back::WriteToBuf<VL_MAP_STRING_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18733 std::map<std::string, std::map<int, double>> val0=a->cast<std::map<std::string, std::map<int, double>>>();
18735 size_t item_size1key=shape[1];
18736 size_t valuelen1key;
18737 size_t item_size1val=((sizeof(int)+sizeof(double))*shape[2]);
18738 size_t length1val=shape[2];
18739 size_t item_size2valkey=sizeof(int);
18740 size_t item_size2valval=sizeof(double);
18743 unsigned int count0=0;
18744 std::map<std::string, std::map<int, double>>::iterator it0=val0.begin();
18745 std::map<std::string, std::map<int, double>> fixed_val0;
18746 unsigned int pad_count0=0;
18747 for(;it0!=val0.end();++it0){
18748 std::string child1key=std::string(it0->first,0,item_size1key);
18749 std::map<int, double> child1val;
18750 unsigned int pad_count1val=0;
18751 std::map<int, double>::iterator it1val=it0->second.begin();
18752 for(;it1val!=it0->second.end();++it1val){
18753 child1val[it1val->first] = it1val->second;
18754 ++pad_count1val;
18755
18756 }
18758 ++pad_count0;
18759
18760 }
18761 hasher_.Clear();
18762 hasher_.Update(fixed_val0);
18763 Digest key0 = hasher_.digest();
18764 hid_t keysds0 = VLDataset(VL_MAP_STRING_MAP_INT_DOUBLE, true);
18765 hid_t valsds0 = VLDataset(VL_MAP_STRING_MAP_INT_DOUBLE, false);
18766 if (vlkeys_[VL_MAP_STRING_MAP_INT_DOUBLE].count(key0) != 1) {
18767 hvl_t buf0 = VLValToBuf(fixed_val0);
18770 }
18772}
18773template<>
18774void Hdf5Back::WriteToBuf<MAP_VL_STRING_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18775 std::map<std::string, std::map<int, double>> val0=a->cast<std::map<std::string, std::map<int, double>>>();
18776 size_t item_size0=((CYCLUS_SHA1_SIZE+((sizeof(int)+sizeof(double))*shape[2]))*shape[0]);
18777 size_t length0=shape[0];
18779 size_t item_size1val=((sizeof(int)+sizeof(double))*shape[2]);
18780 size_t length1val=shape[2];
18781 size_t item_size2valkey=sizeof(int);
18782 size_t item_size2valval=sizeof(double);
18785 if(total_item_size0*val0.size()>column){
18786 std::map<std::string, std::map<int, double>>::iterator eraseit=val0.begin();
18787 std::advance(eraseit, column/total_item_size0);
18788 val0.erase(eraseit,val0.end());
18789
18790 }
18791 unsigned int count0=0;
18792 std::map<std::string, std::map<int, double>>::iterator it0=val0.begin();
18793 for(;it0!=val0.end();++it0){
18794 hasher_.Clear();
18795 hasher_.Update(it0->first);
18796 Digest key1key = hasher_.digest();
18797 hid_t keysds1key = VLDataset(VL_STRING, true);
18798 hid_t valsds1key = VLDataset(VL_STRING, false);
18799 if (vlkeys_[VL_STRING].count(key1key) != 1) {
18800 AppendVLKey(keysds1key, VL_STRING, key1key);
18801 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
18802 }
18804 unsigned int count1val=0;
18805 std::map<int, double>::iterator it1val=it0->second.begin();
18806 for(;it1val!=it0->second.end();++it1val){
18809 ++count1val;
18810
18811 }
18813 ++count0;
18814
18815 }
18818
18819 }
18820}
18821template<>
18822void Hdf5Back::WriteToBuf<MAP_VL_STRING_VL_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18823 std::map<std::string, std::map<int, double>> val0=a->cast<std::map<std::string, std::map<int, double>>>();
18824 size_t item_size0=((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))*shape[0]);
18825 size_t length0=shape[0];
18828 size_t item_size2valkey=sizeof(int);
18829 size_t item_size2valval=sizeof(double);
18832 if(total_item_size0*val0.size()>column){
18833 std::map<std::string, std::map<int, double>>::iterator eraseit=val0.begin();
18834 std::advance(eraseit, column/total_item_size0);
18835 val0.erase(eraseit,val0.end());
18836
18837 }
18838 unsigned int count0=0;
18839 std::map<std::string, std::map<int, double>>::iterator it0=val0.begin();
18840 for(;it0!=val0.end();++it0){
18841 hasher_.Clear();
18842 hasher_.Update(it0->first);
18843 Digest key1key = hasher_.digest();
18844 hid_t keysds1key = VLDataset(VL_STRING, true);
18845 hid_t valsds1key = VLDataset(VL_STRING, false);
18846 if (vlkeys_[VL_STRING].count(key1key) != 1) {
18847 AppendVLKey(keysds1key, VL_STRING, key1key);
18848 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
18849 }
18851 hasher_.Clear();
18852 hasher_.Update(it0->second);
18853 Digest key1val = hasher_.digest();
18854 hid_t keysds1val = VLDataset(VL_MAP_INT_DOUBLE, true);
18855 hid_t valsds1val = VLDataset(VL_MAP_INT_DOUBLE, false);
18856 if (vlkeys_[VL_MAP_INT_DOUBLE].count(key1val) != 1) {
18857 hvl_t buf1val = VLValToBuf(it0->second);
18858 AppendVLKey(keysds1val, VL_MAP_INT_DOUBLE, key1val);
18860 }
18862 ++count0;
18863
18864 }
18867
18868 }
18869}
18870template<>
18871void Hdf5Back::WriteToBuf<VL_MAP_STRING_VL_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18872 std::map<std::string, std::map<int, double>> val0=a->cast<std::map<std::string, std::map<int, double>>>();
18874 size_t item_size1key=shape[1];
18875 size_t valuelen1key;
18877 size_t item_size2valkey=sizeof(int);
18878 size_t item_size2valval=sizeof(double);
18881 unsigned int count0=0;
18882 std::map<std::string, std::map<int, double>>::iterator it0=val0.begin();
18883 std::map<std::string, std::map<int, double>> fixed_val0;
18884 unsigned int pad_count0=0;
18885 for(;it0!=val0.end();++it0){
18886 std::string child1key=std::string(it0->first,0,item_size1key);
18887 fixed_val0[child1key] = it0->second;
18888 ++pad_count0;
18889
18890 }
18891 hasher_.Clear();
18892 hasher_.Update(fixed_val0);
18893 Digest key0 = hasher_.digest();
18895 hid_t valsds0 = VLDataset(VL_MAP_STRING_VL_MAP_INT_DOUBLE, false);
18896 if (vlkeys_[VL_MAP_STRING_VL_MAP_INT_DOUBLE].count(key0) != 1) {
18897 hvl_t buf0 = VLValToBuf(fixed_val0);
18900 }
18902}
18903template<>
18904void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18905 std::map<std::string, std::map<int, double>> val0=a->cast<std::map<std::string, std::map<int, double>>>();
18908 size_t item_size1val=((sizeof(int)+sizeof(double))*shape[2]);
18909 size_t length1val=shape[2];
18910 size_t item_size2valkey=sizeof(int);
18911 size_t item_size2valval=sizeof(double);
18914 unsigned int count0=0;
18915 std::map<std::string, std::map<int, double>>::iterator it0=val0.begin();
18916 std::map<std::string, std::map<int, double>> fixed_val0;
18917 unsigned int pad_count0=0;
18918 for(;it0!=val0.end();++it0){
18919 std::map<int, double> child1val;
18920 unsigned int pad_count1val=0;
18921 std::map<int, double>::iterator it1val=it0->second.begin();
18922 for(;it1val!=it0->second.end();++it1val){
18923 child1val[it1val->first] = it1val->second;
18924 ++pad_count1val;
18925
18926 }
18927 fixed_val0[it0->first] = child1val;
18928 ++pad_count0;
18929
18930 }
18931 hasher_.Clear();
18932 hasher_.Update(fixed_val0);
18933 Digest key0 = hasher_.digest();
18935 hid_t valsds0 = VLDataset(VL_MAP_VL_STRING_MAP_INT_DOUBLE, false);
18936 if (vlkeys_[VL_MAP_VL_STRING_MAP_INT_DOUBLE].count(key0) != 1) {
18937 hvl_t buf0 = VLValToBuf(fixed_val0);
18940 }
18942}
18943template<>
18944void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VL_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18945 std::map<std::string, std::map<int, double>> val0=a->cast<std::map<std::string, std::map<int, double>>>();
18949 size_t item_size2valkey=sizeof(int);
18950 size_t item_size2valval=sizeof(double);
18953 hasher_.Clear();
18954 hasher_.Update(val0);
18955 Digest key0 = hasher_.digest();
18958 if (vlkeys_[VL_MAP_VL_STRING_VL_MAP_INT_DOUBLE].count(key0) != 1) {
18959 hvl_t buf0 = VLValToBuf(val0);
18962 }
18964}
18965template<>
18966void Hdf5Back::WriteToBuf<MAP_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
18967 std::map<std::string, std::pair<double, std::map<int, double>>> val0=a->cast<std::map<std::string, std::pair<double, std::map<int, double>>>>();
18968 size_t item_size0=((shape[1]+((sizeof(double)+((sizeof(int)+sizeof(double))*shape[4]))))*shape[0]);
18969 size_t length0=shape[0];
18970 size_t item_size1key=shape[1];
18971 size_t valuelen1key;
18972 size_t item_size1val=((sizeof(double)+((sizeof(int)+sizeof(double))*shape[4])));
18973 size_t item_size2valfirst=sizeof(double);
18974 size_t item_size2valsecond=((sizeof(int)+sizeof(double))*shape[4]);
18975 size_t length2valsecond=shape[4];
18976 size_t item_size3valsecondkey=sizeof(int);
18977 size_t item_size3valsecondval=sizeof(double);
18981 if(total_item_size0*val0.size()>column){
18982 std::map<std::string, std::pair<double, std::map<int, double>>>::iterator eraseit=val0.begin();
18983 std::advance(eraseit, column/total_item_size0);
18984 val0.erase(eraseit,val0.end());
18985
18986 }
18987 unsigned int count0=0;
18988 std::map<std::string, std::pair<double, std::map<int, double>>>::iterator it0=val0.begin();
18989 for(;it0!=val0.end();++it0){
18990 valuelen1key=std::min(it0->first.size(), item_size1key);
18991 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
18993 unsigned int count1val=0;
18995 unsigned int count2valsecond=0;
18996 std::map<int, double>::iterator it2valsecond=it0->second.second.begin();
18997 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
19001
19002 }
19004 ++count0;
19005
19006 }
19009
19010 }
19011}
19012template<>
19013void Hdf5Back::WriteToBuf<VL_MAP_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19014 std::map<std::string, std::pair<double, std::map<int, double>>> val0=a->cast<std::map<std::string, std::pair<double, std::map<int, double>>>>();
19016 size_t item_size1key=shape[1];
19017 size_t valuelen1key;
19018 size_t item_size1val=((sizeof(double)+((sizeof(int)+sizeof(double))*shape[4])));
19019 size_t item_size2valfirst=sizeof(double);
19020 size_t item_size2valsecond=((sizeof(int)+sizeof(double))*shape[4]);
19021 size_t length2valsecond=shape[4];
19022 size_t item_size3valsecondkey=sizeof(int);
19023 size_t item_size3valsecondval=sizeof(double);
19027 unsigned int count0=0;
19028 std::map<std::string, std::pair<double, std::map<int, double>>>::iterator it0=val0.begin();
19029 std::map<std::string, std::pair<double, std::map<int, double>>> fixed_val0;
19030 unsigned int pad_count0=0;
19031 for(;it0!=val0.end();++it0){
19032 std::string child1key=std::string(it0->first,0,item_size1key);
19033 std::pair<double, std::map<int, double>> child1val;
19034 unsigned int pad_count1val=0;
19035 std::map<int, double> child2valsecond;
19036 unsigned int pad_count2valsecond=0;
19037 std::map<int, double>::iterator it2valsecond=it0->second.second.begin();
19038 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
19039 child2valsecond[it2valsecond->first] = it2valsecond->second;
19041
19042 }
19043 child1val = std::make_pair(it0->second.first,child2valsecond);
19045 ++pad_count0;
19046
19047 }
19048 hasher_.Clear();
19049 hasher_.Update(fixed_val0);
19050 Digest key0 = hasher_.digest();
19053 if (vlkeys_[VL_MAP_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE].count(key0) != 1) {
19054 hvl_t buf0 = VLValToBuf(fixed_val0);
19057 }
19059}
19060template<>
19061void Hdf5Back::WriteToBuf<MAP_VL_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19062 std::map<std::string, std::pair<double, std::map<int, double>>> val0=a->cast<std::map<std::string, std::pair<double, std::map<int, double>>>>();
19063 size_t item_size0=((CYCLUS_SHA1_SIZE+((sizeof(double)+((sizeof(int)+sizeof(double))*shape[4]))))*shape[0]);
19064 size_t length0=shape[0];
19066 size_t item_size1val=((sizeof(double)+((sizeof(int)+sizeof(double))*shape[4])));
19067 size_t item_size2valfirst=sizeof(double);
19068 size_t item_size2valsecond=((sizeof(int)+sizeof(double))*shape[4]);
19069 size_t length2valsecond=shape[4];
19070 size_t item_size3valsecondkey=sizeof(int);
19071 size_t item_size3valsecondval=sizeof(double);
19075 if(total_item_size0*val0.size()>column){
19076 std::map<std::string, std::pair<double, std::map<int, double>>>::iterator eraseit=val0.begin();
19077 std::advance(eraseit, column/total_item_size0);
19078 val0.erase(eraseit,val0.end());
19079
19080 }
19081 unsigned int count0=0;
19082 std::map<std::string, std::pair<double, std::map<int, double>>>::iterator it0=val0.begin();
19083 for(;it0!=val0.end();++it0){
19084 hasher_.Clear();
19085 hasher_.Update(it0->first);
19086 Digest key1key = hasher_.digest();
19087 hid_t keysds1key = VLDataset(VL_STRING, true);
19088 hid_t valsds1key = VLDataset(VL_STRING, false);
19089 if (vlkeys_[VL_STRING].count(key1key) != 1) {
19090 AppendVLKey(keysds1key, VL_STRING, key1key);
19091 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
19092 }
19094 unsigned int count1val=0;
19096 unsigned int count2valsecond=0;
19097 std::map<int, double>::iterator it2valsecond=it0->second.second.begin();
19098 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
19102
19103 }
19105 ++count0;
19106
19107 }
19110
19111 }
19112}
19113template<>
19114void Hdf5Back::WriteToBuf<MAP_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19115 std::map<std::string, std::pair<double, std::map<int, double>>> val0=a->cast<std::map<std::string, std::pair<double, std::map<int, double>>>>();
19116 size_t item_size0=((shape[1]+((sizeof(double)+(CYCLUS_SHA1_SIZE))))*shape[0]);
19117 size_t length0=shape[0];
19118 size_t item_size1key=shape[1];
19119 size_t valuelen1key;
19120 size_t item_size1val=((sizeof(double)+(CYCLUS_SHA1_SIZE)));
19121 size_t item_size2valfirst=sizeof(double);
19123 size_t item_size3valsecondkey=sizeof(int);
19124 size_t item_size3valsecondval=sizeof(double);
19128 if(total_item_size0*val0.size()>column){
19129 std::map<std::string, std::pair<double, std::map<int, double>>>::iterator eraseit=val0.begin();
19130 std::advance(eraseit, column/total_item_size0);
19131 val0.erase(eraseit,val0.end());
19132
19133 }
19134 unsigned int count0=0;
19135 std::map<std::string, std::pair<double, std::map<int, double>>>::iterator it0=val0.begin();
19136 for(;it0!=val0.end();++it0){
19137 valuelen1key=std::min(it0->first.size(), item_size1key);
19138 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
19140 unsigned int count1val=0;
19142 hasher_.Clear();
19143 hasher_.Update(it0->second.second);
19144 Digest key2valsecond = hasher_.digest();
19145 hid_t keysds2valsecond = VLDataset(VL_MAP_INT_DOUBLE, true);
19146 hid_t valsds2valsecond = VLDataset(VL_MAP_INT_DOUBLE, false);
19147 if (vlkeys_[VL_MAP_INT_DOUBLE].count(key2valsecond) != 1) {
19148 hvl_t buf2valsecond = VLValToBuf(it0->second.second);
19151 }
19153 ++count0;
19154
19155 }
19158
19159 }
19160}
19161template<>
19162void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19163 std::map<std::string, std::pair<double, std::map<int, double>>> val0=a->cast<std::map<std::string, std::pair<double, std::map<int, double>>>>();
19166 size_t item_size1val=((sizeof(double)+((sizeof(int)+sizeof(double))*shape[4])));
19167 size_t item_size2valfirst=sizeof(double);
19168 size_t item_size2valsecond=((sizeof(int)+sizeof(double))*shape[4]);
19169 size_t length2valsecond=shape[4];
19170 size_t item_size3valsecondkey=sizeof(int);
19171 size_t item_size3valsecondval=sizeof(double);
19175 unsigned int count0=0;
19176 std::map<std::string, std::pair<double, std::map<int, double>>>::iterator it0=val0.begin();
19177 std::map<std::string, std::pair<double, std::map<int, double>>> fixed_val0;
19178 unsigned int pad_count0=0;
19179 for(;it0!=val0.end();++it0){
19180 std::pair<double, std::map<int, double>> child1val;
19181 unsigned int pad_count1val=0;
19182 std::map<int, double> child2valsecond;
19183 unsigned int pad_count2valsecond=0;
19184 std::map<int, double>::iterator it2valsecond=it0->second.second.begin();
19185 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
19186 child2valsecond[it2valsecond->first] = it2valsecond->second;
19188
19189 }
19190 child1val = std::make_pair(it0->second.first,child2valsecond);
19191 fixed_val0[it0->first] = child1val;
19192 ++pad_count0;
19193
19194 }
19195 hasher_.Clear();
19196 hasher_.Update(fixed_val0);
19197 Digest key0 = hasher_.digest();
19200 if (vlkeys_[VL_MAP_VL_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE].count(key0) != 1) {
19201 hvl_t buf0 = VLValToBuf(fixed_val0);
19204 }
19206}
19207template<>
19208void Hdf5Back::WriteToBuf<VL_MAP_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19209 std::map<std::string, std::pair<double, std::map<int, double>>> val0=a->cast<std::map<std::string, std::pair<double, std::map<int, double>>>>();
19211 size_t item_size1key=shape[1];
19212 size_t valuelen1key;
19213 size_t item_size1val=((sizeof(double)+(CYCLUS_SHA1_SIZE)));
19214 size_t item_size2valfirst=sizeof(double);
19216 size_t item_size3valsecondkey=sizeof(int);
19217 size_t item_size3valsecondval=sizeof(double);
19221 unsigned int count0=0;
19222 std::map<std::string, std::pair<double, std::map<int, double>>>::iterator it0=val0.begin();
19223 std::map<std::string, std::pair<double, std::map<int, double>>> fixed_val0;
19224 unsigned int pad_count0=0;
19225 for(;it0!=val0.end();++it0){
19226 std::string child1key=std::string(it0->first,0,item_size1key);
19227 std::pair<double, std::map<int, double>> child1val;
19228 unsigned int pad_count1val=0;
19229 child1val = std::make_pair(it0->second.first,it0->second.second);
19231 ++pad_count0;
19232
19233 }
19234 hasher_.Clear();
19235 hasher_.Update(fixed_val0);
19236 Digest key0 = hasher_.digest();
19239 if (vlkeys_[VL_MAP_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE].count(key0) != 1) {
19240 hvl_t buf0 = VLValToBuf(fixed_val0);
19243 }
19245}
19246template<>
19247void Hdf5Back::WriteToBuf<MAP_VL_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19248 std::map<std::string, std::pair<double, std::map<int, double>>> val0=a->cast<std::map<std::string, std::pair<double, std::map<int, double>>>>();
19249 size_t item_size0=((CYCLUS_SHA1_SIZE+((sizeof(double)+(CYCLUS_SHA1_SIZE))))*shape[0]);
19250 size_t length0=shape[0];
19252 size_t item_size1val=((sizeof(double)+(CYCLUS_SHA1_SIZE)));
19253 size_t item_size2valfirst=sizeof(double);
19255 size_t item_size3valsecondkey=sizeof(int);
19256 size_t item_size3valsecondval=sizeof(double);
19260 if(total_item_size0*val0.size()>column){
19261 std::map<std::string, std::pair<double, std::map<int, double>>>::iterator eraseit=val0.begin();
19262 std::advance(eraseit, column/total_item_size0);
19263 val0.erase(eraseit,val0.end());
19264
19265 }
19266 unsigned int count0=0;
19267 std::map<std::string, std::pair<double, std::map<int, double>>>::iterator it0=val0.begin();
19268 for(;it0!=val0.end();++it0){
19269 hasher_.Clear();
19270 hasher_.Update(it0->first);
19271 Digest key1key = hasher_.digest();
19272 hid_t keysds1key = VLDataset(VL_STRING, true);
19273 hid_t valsds1key = VLDataset(VL_STRING, false);
19274 if (vlkeys_[VL_STRING].count(key1key) != 1) {
19275 AppendVLKey(keysds1key, VL_STRING, key1key);
19276 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
19277 }
19279 unsigned int count1val=0;
19281 hasher_.Clear();
19282 hasher_.Update(it0->second.second);
19283 Digest key2valsecond = hasher_.digest();
19284 hid_t keysds2valsecond = VLDataset(VL_MAP_INT_DOUBLE, true);
19285 hid_t valsds2valsecond = VLDataset(VL_MAP_INT_DOUBLE, false);
19286 if (vlkeys_[VL_MAP_INT_DOUBLE].count(key2valsecond) != 1) {
19287 hvl_t buf2valsecond = VLValToBuf(it0->second.second);
19290 }
19292 ++count0;
19293
19294 }
19297
19298 }
19299}
19300template<>
19301void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19302 std::map<std::string, std::pair<double, std::map<int, double>>> val0=a->cast<std::map<std::string, std::pair<double, std::map<int, double>>>>();
19305 size_t item_size1val=((sizeof(double)+(CYCLUS_SHA1_SIZE)));
19306 size_t item_size2valfirst=sizeof(double);
19308 size_t item_size3valsecondkey=sizeof(int);
19309 size_t item_size3valsecondval=sizeof(double);
19313 hasher_.Clear();
19314 hasher_.Update(val0);
19315 Digest key0 = hasher_.digest();
19318 if (vlkeys_[VL_MAP_VL_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE].count(key0) != 1) {
19319 hvl_t buf0 = VLValToBuf(val0);
19322 }
19324}
19325template<>
19326void Hdf5Back::WriteToBuf<MAP_INT_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19327 std::map<int, std::map<std::string, double>> val0=a->cast<std::map<int, std::map<std::string, double>>>();
19328 size_t item_size0=((sizeof(int)+((shape[3]+sizeof(double))*shape[2]))*shape[0]);
19329 size_t length0=shape[0];
19330 size_t item_size1key=sizeof(int);
19331 size_t item_size1val=((shape[3]+sizeof(double))*shape[2]);
19332 size_t length1val=shape[2];
19333 size_t item_size2valkey=shape[3];
19334 size_t valuelen2valkey;
19335 size_t item_size2valval=sizeof(double);
19338 if(total_item_size0*val0.size()>column){
19339 std::map<int, std::map<std::string, double>>::iterator eraseit=val0.begin();
19340 std::advance(eraseit, column/total_item_size0);
19341 val0.erase(eraseit,val0.end());
19342
19343 }
19344 unsigned int count0=0;
19345 std::map<int, std::map<std::string, double>>::iterator it0=val0.begin();
19346 for(;it0!=val0.end();++it0){
19348 unsigned int count1val=0;
19349 std::map<std::string, double>::iterator it1val=it0->second.begin();
19350 for(;it1val!=it0->second.end();++it1val){
19351 valuelen2valkey=std::min(it1val->first.size(), item_size2valkey);
19355 ++count1val;
19356
19357 }
19359 ++count0;
19360
19361 }
19364
19365 }
19366}
19367template<>
19368void Hdf5Back::WriteToBuf<MAP_INT_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19369 std::map<int, std::map<std::string, double>> val0=a->cast<std::map<int, std::map<std::string, double>>>();
19370 size_t item_size0=((sizeof(int)+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]))*shape[0]);
19371 size_t length0=shape[0];
19372 size_t item_size1key=sizeof(int);
19373 size_t item_size1val=((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]);
19374 size_t length1val=shape[2];
19376 size_t item_size2valval=sizeof(double);
19379 if(total_item_size0*val0.size()>column){
19380 std::map<int, std::map<std::string, double>>::iterator eraseit=val0.begin();
19381 std::advance(eraseit, column/total_item_size0);
19382 val0.erase(eraseit,val0.end());
19383
19384 }
19385 unsigned int count0=0;
19386 std::map<int, std::map<std::string, double>>::iterator it0=val0.begin();
19387 for(;it0!=val0.end();++it0){
19389 unsigned int count1val=0;
19390 std::map<std::string, double>::iterator it1val=it0->second.begin();
19391 for(;it1val!=it0->second.end();++it1val){
19392 hasher_.Clear();
19393 hasher_.Update(it1val->first);
19394 Digest key2valkey = hasher_.digest();
19395 hid_t keysds2valkey = VLDataset(VL_STRING, true);
19396 hid_t valsds2valkey = VLDataset(VL_STRING, false);
19397 if (vlkeys_[VL_STRING].count(key2valkey) != 1) {
19398 AppendVLKey(keysds2valkey, VL_STRING, key2valkey);
19399 InsertVLVal(valsds2valkey, VL_STRING, key2valkey, it1val->first);
19400 }
19403 ++count1val;
19404
19405 }
19407 ++count0;
19408
19409 }
19412
19413 }
19414}
19415template<>
19416void Hdf5Back::WriteToBuf<VL_MAP_INT_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19417 std::map<int, std::map<std::string, double>> val0=a->cast<std::map<int, std::map<std::string, double>>>();
19419 size_t item_size1key=sizeof(int);
19420 size_t item_size1val=((shape[3]+sizeof(double))*shape[2]);
19421 size_t length1val=shape[2];
19422 size_t item_size2valkey=shape[3];
19423 size_t valuelen2valkey;
19424 size_t item_size2valval=sizeof(double);
19427 unsigned int count0=0;
19428 std::map<int, std::map<std::string, double>>::iterator it0=val0.begin();
19429 std::map<int, std::map<std::string, double>> fixed_val0;
19430 unsigned int pad_count0=0;
19431 for(;it0!=val0.end();++it0){
19432 std::map<std::string, double> child1val;
19433 unsigned int pad_count1val=0;
19434 std::map<std::string, double>::iterator it1val=it0->second.begin();
19435 for(;it1val!=it0->second.end();++it1val){
19436 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
19437 child1val[child2valkey] = it1val->second;
19438 ++pad_count1val;
19439
19440 }
19441 fixed_val0[it0->first] = child1val;
19442 ++pad_count0;
19443
19444 }
19445 hasher_.Clear();
19446 hasher_.Update(fixed_val0);
19447 Digest key0 = hasher_.digest();
19448 hid_t keysds0 = VLDataset(VL_MAP_INT_MAP_STRING_DOUBLE, true);
19449 hid_t valsds0 = VLDataset(VL_MAP_INT_MAP_STRING_DOUBLE, false);
19450 if (vlkeys_[VL_MAP_INT_MAP_STRING_DOUBLE].count(key0) != 1) {
19451 hvl_t buf0 = VLValToBuf(fixed_val0);
19454 }
19456}
19457template<>
19458void Hdf5Back::WriteToBuf<VL_MAP_INT_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19459 std::map<int, std::map<std::string, double>> val0=a->cast<std::map<int, std::map<std::string, double>>>();
19461 size_t item_size1key=sizeof(int);
19462 size_t item_size1val=((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]);
19463 size_t length1val=shape[2];
19465 size_t item_size2valval=sizeof(double);
19468 unsigned int count0=0;
19469 std::map<int, std::map<std::string, double>>::iterator it0=val0.begin();
19470 std::map<int, std::map<std::string, double>> fixed_val0;
19471 unsigned int pad_count0=0;
19472 for(;it0!=val0.end();++it0){
19473 std::map<std::string, double> child1val;
19474 unsigned int pad_count1val=0;
19475 std::map<std::string, double>::iterator it1val=it0->second.begin();
19476 for(;it1val!=it0->second.end();++it1val){
19477 child1val[it1val->first] = it1val->second;
19478 ++pad_count1val;
19479
19480 }
19481 fixed_val0[it0->first] = child1val;
19482 ++pad_count0;
19483
19484 }
19485 hasher_.Clear();
19486 hasher_.Update(fixed_val0);
19487 Digest key0 = hasher_.digest();
19489 hid_t valsds0 = VLDataset(VL_MAP_INT_MAP_VL_STRING_DOUBLE, false);
19490 if (vlkeys_[VL_MAP_INT_MAP_VL_STRING_DOUBLE].count(key0) != 1) {
19491 hvl_t buf0 = VLValToBuf(fixed_val0);
19494 }
19496}
19497template<>
19498void Hdf5Back::WriteToBuf<MAP_INT_VL_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19499 std::map<int, std::map<std::string, double>> val0=a->cast<std::map<int, std::map<std::string, double>>>();
19500 size_t item_size0=((sizeof(int)+(CYCLUS_SHA1_SIZE))*shape[0]);
19501 size_t length0=shape[0];
19502 size_t item_size1key=sizeof(int);
19504 size_t item_size2valkey=shape[3];
19505 size_t valuelen2valkey;
19506 size_t item_size2valval=sizeof(double);
19509 if(total_item_size0*val0.size()>column){
19510 std::map<int, std::map<std::string, double>>::iterator eraseit=val0.begin();
19511 std::advance(eraseit, column/total_item_size0);
19512 val0.erase(eraseit,val0.end());
19513
19514 }
19515 unsigned int count0=0;
19516 std::map<int, std::map<std::string, double>>::iterator it0=val0.begin();
19517 for(;it0!=val0.end();++it0){
19519 unsigned int count1val=0;
19520 std::map<std::string, double>::iterator it1val=it0->second.begin();
19521 std::map<std::string, double> fixed_val1val;
19522 unsigned int pad_count1val=0;
19523 for(;it1val!=it0->second.end();++it1val){
19524 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
19526 ++pad_count1val;
19527
19528 }
19529 hasher_.Clear();
19530 hasher_.Update(fixed_val1val);
19531 Digest key1val = hasher_.digest();
19532 hid_t keysds1val = VLDataset(VL_MAP_STRING_DOUBLE, true);
19533 hid_t valsds1val = VLDataset(VL_MAP_STRING_DOUBLE, false);
19534 if (vlkeys_[VL_MAP_STRING_DOUBLE].count(key1val) != 1) {
19535 hvl_t buf1val = VLValToBuf(fixed_val1val);
19538 }
19540 ++count0;
19541
19542 }
19545
19546 }
19547}
19548template<>
19549void Hdf5Back::WriteToBuf<MAP_INT_VL_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19550 std::map<int, std::map<std::string, double>> val0=a->cast<std::map<int, std::map<std::string, double>>>();
19551 size_t item_size0=((sizeof(int)+(CYCLUS_SHA1_SIZE))*shape[0]);
19552 size_t length0=shape[0];
19553 size_t item_size1key=sizeof(int);
19556 size_t item_size2valval=sizeof(double);
19559 if(total_item_size0*val0.size()>column){
19560 std::map<int, std::map<std::string, double>>::iterator eraseit=val0.begin();
19561 std::advance(eraseit, column/total_item_size0);
19562 val0.erase(eraseit,val0.end());
19563
19564 }
19565 unsigned int count0=0;
19566 std::map<int, std::map<std::string, double>>::iterator it0=val0.begin();
19567 for(;it0!=val0.end();++it0){
19569 hasher_.Clear();
19570 hasher_.Update(it0->second);
19571 Digest key1val = hasher_.digest();
19572 hid_t keysds1val = VLDataset(VL_MAP_VL_STRING_DOUBLE, true);
19573 hid_t valsds1val = VLDataset(VL_MAP_VL_STRING_DOUBLE, false);
19574 if (vlkeys_[VL_MAP_VL_STRING_DOUBLE].count(key1val) != 1) {
19575 hvl_t buf1val = VLValToBuf(it0->second);
19578 }
19580 ++count0;
19581
19582 }
19585
19586 }
19587}
19588template<>
19589void Hdf5Back::WriteToBuf<VL_MAP_INT_VL_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19590 std::map<int, std::map<std::string, double>> val0=a->cast<std::map<int, std::map<std::string, double>>>();
19592 size_t item_size1key=sizeof(int);
19594 size_t item_size2valkey=shape[3];
19595 size_t valuelen2valkey;
19596 size_t item_size2valval=sizeof(double);
19599 unsigned int count0=0;
19600 std::map<int, std::map<std::string, double>>::iterator it0=val0.begin();
19601 std::map<int, std::map<std::string, double>> fixed_val0;
19602 unsigned int pad_count0=0;
19603 for(;it0!=val0.end();++it0){
19604 std::map<std::string, double> child1val;
19605 unsigned int pad_count1val=0;
19606 std::map<std::string, double>::iterator it1val=it0->second.begin();
19607 for(;it1val!=it0->second.end();++it1val){
19608 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
19609 child1val[child2valkey] = it1val->second;
19610 ++pad_count1val;
19611
19612 }
19613 fixed_val0[it0->first] = child1val;
19614 ++pad_count0;
19615
19616 }
19617 hasher_.Clear();
19618 hasher_.Update(fixed_val0);
19619 Digest key0 = hasher_.digest();
19621 hid_t valsds0 = VLDataset(VL_MAP_INT_VL_MAP_STRING_DOUBLE, false);
19622 if (vlkeys_[VL_MAP_INT_VL_MAP_STRING_DOUBLE].count(key0) != 1) {
19623 hvl_t buf0 = VLValToBuf(fixed_val0);
19626 }
19628}
19629template<>
19630void Hdf5Back::WriteToBuf<VL_MAP_INT_VL_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19631 std::map<int, std::map<std::string, double>> val0=a->cast<std::map<int, std::map<std::string, double>>>();
19633 size_t item_size1key=sizeof(int);
19636 size_t item_size2valval=sizeof(double);
19639 hasher_.Clear();
19640 hasher_.Update(val0);
19641 Digest key0 = hasher_.digest();
19644 if (vlkeys_[VL_MAP_INT_VL_MAP_VL_STRING_DOUBLE].count(key0) != 1) {
19645 hvl_t buf0 = VLValToBuf(val0);
19648 }
19650}
19651template<>
19652void Hdf5Back::WriteToBuf<MAP_STRING_VECTOR_PAIR_INT_PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19653 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
19654 size_t item_size0=((shape[1]+((((sizeof(int)+((shape[6]+shape[7])))))*shape[2]))*shape[0]);
19655 size_t length0=shape[0];
19656 size_t item_size1key=shape[1];
19657 size_t valuelen1key;
19658 size_t item_size1val=((((sizeof(int)+((shape[6]+shape[7])))))*shape[2]);
19659 size_t length1val=shape[2];
19660 size_t item_size2valelem=((sizeof(int)+((shape[6]+shape[7]))));
19661 size_t item_size3valelemfirst=sizeof(int);
19662 size_t item_size3valelemsecond=((shape[6]+shape[7]));
19663 size_t item_size4valelemsecondfirst=shape[6];
19665 size_t item_size4valelemsecondsecond=shape[7];
19671 if(total_item_size0*val0.size()>column){
19672 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
19673 std::advance(eraseit, column/total_item_size0);
19674 val0.erase(eraseit,val0.end());
19675
19676 }
19677 unsigned int count0=0;
19678 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
19679 for(;it0!=val0.end();++it0){
19680 valuelen1key=std::min(it0->first.size(), item_size1key);
19681 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
19683 unsigned int count1val=0;
19684 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
19685 for(;it1val!=it0->second.end();++it1val){
19686 unsigned int count2valelem=0;
19688 unsigned int count3valelemsecond=0;
19689 valuelen4valelemsecondfirst=std::min(it1val->second.first.size(), item_size4valelemsecondfirst);
19692 valuelen4valelemsecondsecond=std::min(it1val->second.second.size(), item_size4valelemsecondsecond);
19695 ++count1val;
19696
19697 }
19699 ++count0;
19700
19701 }
19704
19705 }
19706}
19707template<>
19708void Hdf5Back::WriteToBuf<MAP_STRING_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19709 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
19710 size_t item_size0=((shape[1]+((((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE)))))*shape[2]))*shape[0]);
19711 size_t length0=shape[0];
19712 size_t item_size1key=shape[1];
19713 size_t valuelen1key;
19714 size_t item_size1val=((((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE)))))*shape[2]);
19715 size_t length1val=shape[2];
19716 size_t item_size2valelem=((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE))));
19717 size_t item_size3valelemfirst=sizeof(int);
19718 size_t item_size3valelemsecond=((shape[6]+CYCLUS_SHA1_SIZE));
19719 size_t item_size4valelemsecondfirst=shape[6];
19726 if(total_item_size0*val0.size()>column){
19727 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
19728 std::advance(eraseit, column/total_item_size0);
19729 val0.erase(eraseit,val0.end());
19730
19731 }
19732 unsigned int count0=0;
19733 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
19734 for(;it0!=val0.end();++it0){
19735 valuelen1key=std::min(it0->first.size(), item_size1key);
19736 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
19738 unsigned int count1val=0;
19739 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
19740 for(;it1val!=it0->second.end();++it1val){
19741 unsigned int count2valelem=0;
19743 unsigned int count3valelemsecond=0;
19744 valuelen4valelemsecondfirst=std::min(it1val->second.first.size(), item_size4valelemsecondfirst);
19747 hasher_.Clear();
19748 hasher_.Update(it1val->second.second);
19749 Digest key4valelemsecondsecond = hasher_.digest();
19750 hid_t keysds4valelemsecondsecond = VLDataset(VL_STRING, true);
19751 hid_t valsds4valelemsecondsecond = VLDataset(VL_STRING, false);
19752 if (vlkeys_[VL_STRING].count(key4valelemsecondsecond) != 1) {
19755 }
19757 ++count1val;
19758
19759 }
19761 ++count0;
19762
19763 }
19766
19767 }
19768}
19769template<>
19770void Hdf5Back::WriteToBuf<MAP_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19771 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
19772 size_t item_size0=((shape[1]+((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7])))))*shape[2]))*shape[0]);
19773 size_t length0=shape[0];
19774 size_t item_size1key=shape[1];
19775 size_t valuelen1key;
19776 size_t item_size1val=((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7])))))*shape[2]);
19777 size_t length1val=shape[2];
19778 size_t item_size2valelem=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7]))));
19779 size_t item_size3valelemfirst=sizeof(int);
19780 size_t item_size3valelemsecond=((CYCLUS_SHA1_SIZE+shape[7]));
19782 size_t item_size4valelemsecondsecond=shape[7];
19788 if(total_item_size0*val0.size()>column){
19789 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
19790 std::advance(eraseit, column/total_item_size0);
19791 val0.erase(eraseit,val0.end());
19792
19793 }
19794 unsigned int count0=0;
19795 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
19796 for(;it0!=val0.end();++it0){
19797 valuelen1key=std::min(it0->first.size(), item_size1key);
19798 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
19800 unsigned int count1val=0;
19801 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
19802 for(;it1val!=it0->second.end();++it1val){
19803 unsigned int count2valelem=0;
19805 unsigned int count3valelemsecond=0;
19806 hasher_.Clear();
19807 hasher_.Update(it1val->second.first);
19808 Digest key4valelemsecondfirst = hasher_.digest();
19809 hid_t keysds4valelemsecondfirst = VLDataset(VL_STRING, true);
19810 hid_t valsds4valelemsecondfirst = VLDataset(VL_STRING, false);
19811 if (vlkeys_[VL_STRING].count(key4valelemsecondfirst) != 1) {
19814 }
19816 valuelen4valelemsecondsecond=std::min(it1val->second.second.size(), item_size4valelemsecondsecond);
19819 ++count1val;
19820
19821 }
19823 ++count0;
19824
19825 }
19828
19829 }
19830}
19831template<>
19832void Hdf5Back::WriteToBuf<MAP_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19833 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
19834 size_t item_size0=((shape[1]+((((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)))))*shape[2]))*shape[0]);
19835 size_t length0=shape[0];
19836 size_t item_size1key=shape[1];
19837 size_t valuelen1key;
19838 size_t item_size1val=((((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)))))*shape[2]);
19839 size_t length1val=shape[2];
19841 size_t item_size3valelemfirst=sizeof(int);
19849 if(total_item_size0*val0.size()>column){
19850 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
19851 std::advance(eraseit, column/total_item_size0);
19852 val0.erase(eraseit,val0.end());
19853
19854 }
19855 unsigned int count0=0;
19856 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
19857 for(;it0!=val0.end();++it0){
19858 valuelen1key=std::min(it0->first.size(), item_size1key);
19859 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
19861 unsigned int count1val=0;
19862 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
19863 for(;it1val!=it0->second.end();++it1val){
19864 unsigned int count2valelem=0;
19866 unsigned int count3valelemsecond=0;
19867 hasher_.Clear();
19868 hasher_.Update(it1val->second.first);
19869 Digest key4valelemsecondfirst = hasher_.digest();
19870 hid_t keysds4valelemsecondfirst = VLDataset(VL_STRING, true);
19871 hid_t valsds4valelemsecondfirst = VLDataset(VL_STRING, false);
19872 if (vlkeys_[VL_STRING].count(key4valelemsecondfirst) != 1) {
19875 }
19877 hasher_.Clear();
19878 hasher_.Update(it1val->second.second);
19879 Digest key4valelemsecondsecond = hasher_.digest();
19880 hid_t keysds4valelemsecondsecond = VLDataset(VL_STRING, true);
19881 hid_t valsds4valelemsecondsecond = VLDataset(VL_STRING, false);
19882 if (vlkeys_[VL_STRING].count(key4valelemsecondsecond) != 1) {
19885 }
19887 ++count1val;
19888
19889 }
19891 ++count0;
19892
19893 }
19896
19897 }
19898}
19899template<>
19900void Hdf5Back::WriteToBuf<MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19901 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
19902 size_t item_size0=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
19903 size_t length0=shape[0];
19904 size_t item_size1key=shape[1];
19905 size_t valuelen1key;
19907 size_t item_size2valelem=((sizeof(int)+((shape[6]+shape[7]))));
19908 size_t item_size3valelemfirst=sizeof(int);
19909 size_t item_size3valelemsecond=((shape[6]+shape[7]));
19910 size_t item_size4valelemsecondfirst=shape[6];
19912 size_t item_size4valelemsecondsecond=shape[7];
19918 if(total_item_size0*val0.size()>column){
19919 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
19920 std::advance(eraseit, column/total_item_size0);
19921 val0.erase(eraseit,val0.end());
19922
19923 }
19924 unsigned int count0=0;
19925 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
19926 for(;it0!=val0.end();++it0){
19927 valuelen1key=std::min(it0->first.size(), item_size1key);
19928 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
19930 unsigned int count1val=0;
19931 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
19932 std::vector<std::pair<int, std::pair<std::string, std::string>>> fixed_val1val;
19933 unsigned int pad_count1val=0;
19934 for(;it1val!=it0->second.end();++it1val){
19935 std::pair<int, std::pair<std::string, std::string>> child2valelem;
19936 unsigned int pad_count2valelem=0;
19937 std::pair<std::string, std::string> child3valelemsecond;
19938 unsigned int pad_count3valelemsecond=0;
19939 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
19940 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
19942 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
19943 fixed_val1val.push_back(child2valelem);
19944 ++pad_count1val;
19945
19946 }
19947 hasher_.Clear();
19948 hasher_.Update(fixed_val1val);
19949 Digest key1val = hasher_.digest();
19952 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_STRING_STRING].count(key1val) != 1) {
19953 hvl_t buf1val = VLValToBuf(fixed_val1val);
19956 }
19958 ++count0;
19959
19960 }
19963
19964 }
19965}
19966template<>
19967void Hdf5Back::WriteToBuf<MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
19968 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
19969 size_t item_size0=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
19970 size_t length0=shape[0];
19971 size_t item_size1key=shape[1];
19972 size_t valuelen1key;
19974 size_t item_size2valelem=((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE))));
19975 size_t item_size3valelemfirst=sizeof(int);
19976 size_t item_size3valelemsecond=((shape[6]+CYCLUS_SHA1_SIZE));
19977 size_t item_size4valelemsecondfirst=shape[6];
19984 if(total_item_size0*val0.size()>column){
19985 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
19986 std::advance(eraseit, column/total_item_size0);
19987 val0.erase(eraseit,val0.end());
19988
19989 }
19990 unsigned int count0=0;
19991 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
19992 for(;it0!=val0.end();++it0){
19993 valuelen1key=std::min(it0->first.size(), item_size1key);
19994 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
19996 unsigned int count1val=0;
19997 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
19998 std::vector<std::pair<int, std::pair<std::string, std::string>>> fixed_val1val;
19999 unsigned int pad_count1val=0;
20000 for(;it1val!=it0->second.end();++it1val){
20001 std::pair<int, std::pair<std::string, std::string>> child2valelem;
20002 unsigned int pad_count2valelem=0;
20003 std::pair<std::string, std::string> child3valelemsecond;
20004 unsigned int pad_count3valelemsecond=0;
20005 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
20006 child3valelemsecond = std::make_pair(child4valelemsecondfirst,(*it1val).second.second);
20007 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
20008 fixed_val1val.push_back(child2valelem);
20009 ++pad_count1val;
20010
20011 }
20012 hasher_.Clear();
20013 hasher_.Update(fixed_val1val);
20014 Digest key1val = hasher_.digest();
20017 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING].count(key1val) != 1) {
20018 hvl_t buf1val = VLValToBuf(fixed_val1val);
20021 }
20023 ++count0;
20024
20025 }
20028
20029 }
20030}
20031template<>
20032void Hdf5Back::WriteToBuf<MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20033 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20034 size_t item_size0=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
20035 size_t length0=shape[0];
20036 size_t item_size1key=shape[1];
20037 size_t valuelen1key;
20039 size_t item_size2valelem=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7]))));
20040 size_t item_size3valelemfirst=sizeof(int);
20041 size_t item_size3valelemsecond=((CYCLUS_SHA1_SIZE+shape[7]));
20043 size_t item_size4valelemsecondsecond=shape[7];
20049 if(total_item_size0*val0.size()>column){
20050 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
20051 std::advance(eraseit, column/total_item_size0);
20052 val0.erase(eraseit,val0.end());
20053
20054 }
20055 unsigned int count0=0;
20056 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20057 for(;it0!=val0.end();++it0){
20058 valuelen1key=std::min(it0->first.size(), item_size1key);
20059 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
20061 unsigned int count1val=0;
20062 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20063 std::vector<std::pair<int, std::pair<std::string, std::string>>> fixed_val1val;
20064 unsigned int pad_count1val=0;
20065 for(;it1val!=it0->second.end();++it1val){
20066 std::pair<int, std::pair<std::string, std::string>> child2valelem;
20067 unsigned int pad_count2valelem=0;
20068 std::pair<std::string, std::string> child3valelemsecond;
20069 unsigned int pad_count3valelemsecond=0;
20070 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
20071 child3valelemsecond = std::make_pair((*it1val).second.first,child4valelemsecondsecond);
20072 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
20073 fixed_val1val.push_back(child2valelem);
20074 ++pad_count1val;
20075
20076 }
20077 hasher_.Clear();
20078 hasher_.Update(fixed_val1val);
20079 Digest key1val = hasher_.digest();
20082 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING].count(key1val) != 1) {
20083 hvl_t buf1val = VLValToBuf(fixed_val1val);
20086 }
20088 ++count0;
20089
20090 }
20093
20094 }
20095}
20096template<>
20097void Hdf5Back::WriteToBuf<MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20098 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20099 size_t item_size0=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
20100 size_t length0=shape[0];
20101 size_t item_size1key=shape[1];
20102 size_t valuelen1key;
20105 size_t item_size3valelemfirst=sizeof(int);
20113 if(total_item_size0*val0.size()>column){
20114 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
20115 std::advance(eraseit, column/total_item_size0);
20116 val0.erase(eraseit,val0.end());
20117
20118 }
20119 unsigned int count0=0;
20120 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20121 for(;it0!=val0.end();++it0){
20122 valuelen1key=std::min(it0->first.size(), item_size1key);
20123 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
20125 hasher_.Clear();
20126 hasher_.Update(it0->second);
20127 Digest key1val = hasher_.digest();
20130 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING].count(key1val) != 1) {
20131 hvl_t buf1val = VLValToBuf(it0->second);
20134 }
20136 ++count0;
20137
20138 }
20141
20142 }
20143}
20144template<>
20145void Hdf5Back::WriteToBuf<MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20146 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20147 size_t item_size0=((CYCLUS_SHA1_SIZE+((((sizeof(int)+((shape[6]+shape[7])))))*shape[2]))*shape[0]);
20148 size_t length0=shape[0];
20150 size_t item_size1val=((((sizeof(int)+((shape[6]+shape[7])))))*shape[2]);
20151 size_t length1val=shape[2];
20152 size_t item_size2valelem=((sizeof(int)+((shape[6]+shape[7]))));
20153 size_t item_size3valelemfirst=sizeof(int);
20154 size_t item_size3valelemsecond=((shape[6]+shape[7]));
20155 size_t item_size4valelemsecondfirst=shape[6];
20157 size_t item_size4valelemsecondsecond=shape[7];
20163 if(total_item_size0*val0.size()>column){
20164 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
20165 std::advance(eraseit, column/total_item_size0);
20166 val0.erase(eraseit,val0.end());
20167
20168 }
20169 unsigned int count0=0;
20170 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20171 for(;it0!=val0.end();++it0){
20172 hasher_.Clear();
20173 hasher_.Update(it0->first);
20174 Digest key1key = hasher_.digest();
20175 hid_t keysds1key = VLDataset(VL_STRING, true);
20176 hid_t valsds1key = VLDataset(VL_STRING, false);
20177 if (vlkeys_[VL_STRING].count(key1key) != 1) {
20178 AppendVLKey(keysds1key, VL_STRING, key1key);
20179 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
20180 }
20182 unsigned int count1val=0;
20183 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20184 for(;it1val!=it0->second.end();++it1val){
20185 unsigned int count2valelem=0;
20187 unsigned int count3valelemsecond=0;
20188 valuelen4valelemsecondfirst=std::min(it1val->second.first.size(), item_size4valelemsecondfirst);
20191 valuelen4valelemsecondsecond=std::min(it1val->second.second.size(), item_size4valelemsecondsecond);
20194 ++count1val;
20195
20196 }
20198 ++count0;
20199
20200 }
20203
20204 }
20205}
20206template<>
20207void Hdf5Back::WriteToBuf<MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20208 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20209 size_t item_size0=((CYCLUS_SHA1_SIZE+((((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE)))))*shape[2]))*shape[0]);
20210 size_t length0=shape[0];
20212 size_t item_size1val=((((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE)))))*shape[2]);
20213 size_t length1val=shape[2];
20214 size_t item_size2valelem=((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE))));
20215 size_t item_size3valelemfirst=sizeof(int);
20216 size_t item_size3valelemsecond=((shape[6]+CYCLUS_SHA1_SIZE));
20217 size_t item_size4valelemsecondfirst=shape[6];
20224 if(total_item_size0*val0.size()>column){
20225 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
20226 std::advance(eraseit, column/total_item_size0);
20227 val0.erase(eraseit,val0.end());
20228
20229 }
20230 unsigned int count0=0;
20231 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20232 for(;it0!=val0.end();++it0){
20233 hasher_.Clear();
20234 hasher_.Update(it0->first);
20235 Digest key1key = hasher_.digest();
20236 hid_t keysds1key = VLDataset(VL_STRING, true);
20237 hid_t valsds1key = VLDataset(VL_STRING, false);
20238 if (vlkeys_[VL_STRING].count(key1key) != 1) {
20239 AppendVLKey(keysds1key, VL_STRING, key1key);
20240 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
20241 }
20243 unsigned int count1val=0;
20244 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20245 for(;it1val!=it0->second.end();++it1val){
20246 unsigned int count2valelem=0;
20248 unsigned int count3valelemsecond=0;
20249 valuelen4valelemsecondfirst=std::min(it1val->second.first.size(), item_size4valelemsecondfirst);
20252 hasher_.Clear();
20253 hasher_.Update(it1val->second.second);
20254 Digest key4valelemsecondsecond = hasher_.digest();
20255 hid_t keysds4valelemsecondsecond = VLDataset(VL_STRING, true);
20256 hid_t valsds4valelemsecondsecond = VLDataset(VL_STRING, false);
20257 if (vlkeys_[VL_STRING].count(key4valelemsecondsecond) != 1) {
20260 }
20262 ++count1val;
20263
20264 }
20266 ++count0;
20267
20268 }
20271
20272 }
20273}
20274template<>
20275void Hdf5Back::WriteToBuf<MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20276 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20277 size_t item_size0=((CYCLUS_SHA1_SIZE+((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7])))))*shape[2]))*shape[0]);
20278 size_t length0=shape[0];
20280 size_t item_size1val=((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7])))))*shape[2]);
20281 size_t length1val=shape[2];
20282 size_t item_size2valelem=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7]))));
20283 size_t item_size3valelemfirst=sizeof(int);
20284 size_t item_size3valelemsecond=((CYCLUS_SHA1_SIZE+shape[7]));
20286 size_t item_size4valelemsecondsecond=shape[7];
20292 if(total_item_size0*val0.size()>column){
20293 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
20294 std::advance(eraseit, column/total_item_size0);
20295 val0.erase(eraseit,val0.end());
20296
20297 }
20298 unsigned int count0=0;
20299 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20300 for(;it0!=val0.end();++it0){
20301 hasher_.Clear();
20302 hasher_.Update(it0->first);
20303 Digest key1key = hasher_.digest();
20304 hid_t keysds1key = VLDataset(VL_STRING, true);
20305 hid_t valsds1key = VLDataset(VL_STRING, false);
20306 if (vlkeys_[VL_STRING].count(key1key) != 1) {
20307 AppendVLKey(keysds1key, VL_STRING, key1key);
20308 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
20309 }
20311 unsigned int count1val=0;
20312 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20313 for(;it1val!=it0->second.end();++it1val){
20314 unsigned int count2valelem=0;
20316 unsigned int count3valelemsecond=0;
20317 hasher_.Clear();
20318 hasher_.Update(it1val->second.first);
20319 Digest key4valelemsecondfirst = hasher_.digest();
20320 hid_t keysds4valelemsecondfirst = VLDataset(VL_STRING, true);
20321 hid_t valsds4valelemsecondfirst = VLDataset(VL_STRING, false);
20322 if (vlkeys_[VL_STRING].count(key4valelemsecondfirst) != 1) {
20325 }
20327 valuelen4valelemsecondsecond=std::min(it1val->second.second.size(), item_size4valelemsecondsecond);
20330 ++count1val;
20331
20332 }
20334 ++count0;
20335
20336 }
20339
20340 }
20341}
20342template<>
20343void Hdf5Back::WriteToBuf<MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20344 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20345 size_t item_size0=((CYCLUS_SHA1_SIZE+((((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)))))*shape[2]))*shape[0]);
20346 size_t length0=shape[0];
20348 size_t item_size1val=((((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)))))*shape[2]);
20349 size_t length1val=shape[2];
20351 size_t item_size3valelemfirst=sizeof(int);
20359 if(total_item_size0*val0.size()>column){
20360 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
20361 std::advance(eraseit, column/total_item_size0);
20362 val0.erase(eraseit,val0.end());
20363
20364 }
20365 unsigned int count0=0;
20366 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20367 for(;it0!=val0.end();++it0){
20368 hasher_.Clear();
20369 hasher_.Update(it0->first);
20370 Digest key1key = hasher_.digest();
20371 hid_t keysds1key = VLDataset(VL_STRING, true);
20372 hid_t valsds1key = VLDataset(VL_STRING, false);
20373 if (vlkeys_[VL_STRING].count(key1key) != 1) {
20374 AppendVLKey(keysds1key, VL_STRING, key1key);
20375 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
20376 }
20378 unsigned int count1val=0;
20379 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20380 for(;it1val!=it0->second.end();++it1val){
20381 unsigned int count2valelem=0;
20383 unsigned int count3valelemsecond=0;
20384 hasher_.Clear();
20385 hasher_.Update(it1val->second.first);
20386 Digest key4valelemsecondfirst = hasher_.digest();
20387 hid_t keysds4valelemsecondfirst = VLDataset(VL_STRING, true);
20388 hid_t valsds4valelemsecondfirst = VLDataset(VL_STRING, false);
20389 if (vlkeys_[VL_STRING].count(key4valelemsecondfirst) != 1) {
20392 }
20394 hasher_.Clear();
20395 hasher_.Update(it1val->second.second);
20396 Digest key4valelemsecondsecond = hasher_.digest();
20397 hid_t keysds4valelemsecondsecond = VLDataset(VL_STRING, true);
20398 hid_t valsds4valelemsecondsecond = VLDataset(VL_STRING, false);
20399 if (vlkeys_[VL_STRING].count(key4valelemsecondsecond) != 1) {
20402 }
20404 ++count1val;
20405
20406 }
20408 ++count0;
20409
20410 }
20413
20414 }
20415}
20416template<>
20417void Hdf5Back::WriteToBuf<MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20418 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20419 size_t item_size0=((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))*shape[0]);
20420 size_t length0=shape[0];
20423 size_t item_size2valelem=((sizeof(int)+((shape[6]+shape[7]))));
20424 size_t item_size3valelemfirst=sizeof(int);
20425 size_t item_size3valelemsecond=((shape[6]+shape[7]));
20426 size_t item_size4valelemsecondfirst=shape[6];
20428 size_t item_size4valelemsecondsecond=shape[7];
20434 if(total_item_size0*val0.size()>column){
20435 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
20436 std::advance(eraseit, column/total_item_size0);
20437 val0.erase(eraseit,val0.end());
20438
20439 }
20440 unsigned int count0=0;
20441 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20442 for(;it0!=val0.end();++it0){
20443 hasher_.Clear();
20444 hasher_.Update(it0->first);
20445 Digest key1key = hasher_.digest();
20446 hid_t keysds1key = VLDataset(VL_STRING, true);
20447 hid_t valsds1key = VLDataset(VL_STRING, false);
20448 if (vlkeys_[VL_STRING].count(key1key) != 1) {
20449 AppendVLKey(keysds1key, VL_STRING, key1key);
20450 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
20451 }
20453 unsigned int count1val=0;
20454 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20455 std::vector<std::pair<int, std::pair<std::string, std::string>>> fixed_val1val;
20456 unsigned int pad_count1val=0;
20457 for(;it1val!=it0->second.end();++it1val){
20458 std::pair<int, std::pair<std::string, std::string>> child2valelem;
20459 unsigned int pad_count2valelem=0;
20460 std::pair<std::string, std::string> child3valelemsecond;
20461 unsigned int pad_count3valelemsecond=0;
20462 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
20463 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
20465 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
20466 fixed_val1val.push_back(child2valelem);
20467 ++pad_count1val;
20468
20469 }
20470 hasher_.Clear();
20471 hasher_.Update(fixed_val1val);
20472 Digest key1val = hasher_.digest();
20475 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_STRING_STRING].count(key1val) != 1) {
20476 hvl_t buf1val = VLValToBuf(fixed_val1val);
20479 }
20481 ++count0;
20482
20483 }
20486
20487 }
20488}
20489template<>
20490void Hdf5Back::WriteToBuf<MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20491 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20492 size_t item_size0=((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))*shape[0]);
20493 size_t length0=shape[0];
20496 size_t item_size2valelem=((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE))));
20497 size_t item_size3valelemfirst=sizeof(int);
20498 size_t item_size3valelemsecond=((shape[6]+CYCLUS_SHA1_SIZE));
20499 size_t item_size4valelemsecondfirst=shape[6];
20506 if(total_item_size0*val0.size()>column){
20507 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
20508 std::advance(eraseit, column/total_item_size0);
20509 val0.erase(eraseit,val0.end());
20510
20511 }
20512 unsigned int count0=0;
20513 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20514 for(;it0!=val0.end();++it0){
20515 hasher_.Clear();
20516 hasher_.Update(it0->first);
20517 Digest key1key = hasher_.digest();
20518 hid_t keysds1key = VLDataset(VL_STRING, true);
20519 hid_t valsds1key = VLDataset(VL_STRING, false);
20520 if (vlkeys_[VL_STRING].count(key1key) != 1) {
20521 AppendVLKey(keysds1key, VL_STRING, key1key);
20522 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
20523 }
20525 unsigned int count1val=0;
20526 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20527 std::vector<std::pair<int, std::pair<std::string, std::string>>> fixed_val1val;
20528 unsigned int pad_count1val=0;
20529 for(;it1val!=it0->second.end();++it1val){
20530 std::pair<int, std::pair<std::string, std::string>> child2valelem;
20531 unsigned int pad_count2valelem=0;
20532 std::pair<std::string, std::string> child3valelemsecond;
20533 unsigned int pad_count3valelemsecond=0;
20534 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
20535 child3valelemsecond = std::make_pair(child4valelemsecondfirst,(*it1val).second.second);
20536 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
20537 fixed_val1val.push_back(child2valelem);
20538 ++pad_count1val;
20539
20540 }
20541 hasher_.Clear();
20542 hasher_.Update(fixed_val1val);
20543 Digest key1val = hasher_.digest();
20546 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING].count(key1val) != 1) {
20547 hvl_t buf1val = VLValToBuf(fixed_val1val);
20550 }
20552 ++count0;
20553
20554 }
20557
20558 }
20559}
20560template<>
20561void Hdf5Back::WriteToBuf<MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20562 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20563 size_t item_size0=((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))*shape[0]);
20564 size_t length0=shape[0];
20567 size_t item_size2valelem=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7]))));
20568 size_t item_size3valelemfirst=sizeof(int);
20569 size_t item_size3valelemsecond=((CYCLUS_SHA1_SIZE+shape[7]));
20571 size_t item_size4valelemsecondsecond=shape[7];
20577 if(total_item_size0*val0.size()>column){
20578 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
20579 std::advance(eraseit, column/total_item_size0);
20580 val0.erase(eraseit,val0.end());
20581
20582 }
20583 unsigned int count0=0;
20584 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20585 for(;it0!=val0.end();++it0){
20586 hasher_.Clear();
20587 hasher_.Update(it0->first);
20588 Digest key1key = hasher_.digest();
20589 hid_t keysds1key = VLDataset(VL_STRING, true);
20590 hid_t valsds1key = VLDataset(VL_STRING, false);
20591 if (vlkeys_[VL_STRING].count(key1key) != 1) {
20592 AppendVLKey(keysds1key, VL_STRING, key1key);
20593 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
20594 }
20596 unsigned int count1val=0;
20597 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20598 std::vector<std::pair<int, std::pair<std::string, std::string>>> fixed_val1val;
20599 unsigned int pad_count1val=0;
20600 for(;it1val!=it0->second.end();++it1val){
20601 std::pair<int, std::pair<std::string, std::string>> child2valelem;
20602 unsigned int pad_count2valelem=0;
20603 std::pair<std::string, std::string> child3valelemsecond;
20604 unsigned int pad_count3valelemsecond=0;
20605 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
20606 child3valelemsecond = std::make_pair((*it1val).second.first,child4valelemsecondsecond);
20607 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
20608 fixed_val1val.push_back(child2valelem);
20609 ++pad_count1val;
20610
20611 }
20612 hasher_.Clear();
20613 hasher_.Update(fixed_val1val);
20614 Digest key1val = hasher_.digest();
20617 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING].count(key1val) != 1) {
20618 hvl_t buf1val = VLValToBuf(fixed_val1val);
20621 }
20623 ++count0;
20624
20625 }
20628
20629 }
20630}
20631template<>
20632void Hdf5Back::WriteToBuf<MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20633 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20634 size_t item_size0=((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))*shape[0]);
20635 size_t length0=shape[0];
20639 size_t item_size3valelemfirst=sizeof(int);
20647 if(total_item_size0*val0.size()>column){
20648 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator eraseit=val0.begin();
20649 std::advance(eraseit, column/total_item_size0);
20650 val0.erase(eraseit,val0.end());
20651
20652 }
20653 unsigned int count0=0;
20654 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20655 for(;it0!=val0.end();++it0){
20656 hasher_.Clear();
20657 hasher_.Update(it0->first);
20658 Digest key1key = hasher_.digest();
20659 hid_t keysds1key = VLDataset(VL_STRING, true);
20660 hid_t valsds1key = VLDataset(VL_STRING, false);
20661 if (vlkeys_[VL_STRING].count(key1key) != 1) {
20662 AppendVLKey(keysds1key, VL_STRING, key1key);
20663 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
20664 }
20666 hasher_.Clear();
20667 hasher_.Update(it0->second);
20668 Digest key1val = hasher_.digest();
20671 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING].count(key1val) != 1) {
20672 hvl_t buf1val = VLValToBuf(it0->second);
20675 }
20677 ++count0;
20678
20679 }
20682
20683 }
20684}
20685template<>
20686void Hdf5Back::WriteToBuf<VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20687 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20689 size_t item_size1key=shape[1];
20690 size_t valuelen1key;
20691 size_t item_size1val=((((sizeof(int)+((shape[6]+shape[7])))))*shape[2]);
20692 size_t length1val=shape[2];
20693 size_t item_size2valelem=((sizeof(int)+((shape[6]+shape[7]))));
20694 size_t item_size3valelemfirst=sizeof(int);
20695 size_t item_size3valelemsecond=((shape[6]+shape[7]));
20696 size_t item_size4valelemsecondfirst=shape[6];
20698 size_t item_size4valelemsecondsecond=shape[7];
20704 unsigned int count0=0;
20705 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20706 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
20707 unsigned int pad_count0=0;
20708 for(;it0!=val0.end();++it0){
20709 std::string child1key=std::string(it0->first,0,item_size1key);
20710 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
20711 unsigned int pad_count1val=0;
20712 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20713 for(;it1val!=it0->second.end();++it1val){
20714 std::pair<int, std::pair<std::string, std::string>> child2valelem;
20715 unsigned int pad_count2valelem=0;
20716 std::pair<std::string, std::string> child3valelemsecond;
20717 unsigned int pad_count3valelemsecond=0;
20718 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
20719 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
20721 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
20722 child1val.push_back(child2valelem);
20723 ++pad_count1val;
20724
20725 }
20726 child1val.resize(length1val);
20729 ++pad_count0;
20730
20731 }
20732 hasher_.Clear();
20733 hasher_.Update(fixed_val0);
20734 Digest key0 = hasher_.digest();
20737 if (vlkeys_[VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_STRING_STRING].count(key0) != 1) {
20738 hvl_t buf0 = VLValToBuf(fixed_val0);
20741 }
20743}
20744template<>
20745void Hdf5Back::WriteToBuf<VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20746 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20748 size_t item_size1key=shape[1];
20749 size_t valuelen1key;
20750 size_t item_size1val=((((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE)))))*shape[2]);
20751 size_t length1val=shape[2];
20752 size_t item_size2valelem=((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE))));
20753 size_t item_size3valelemfirst=sizeof(int);
20754 size_t item_size3valelemsecond=((shape[6]+CYCLUS_SHA1_SIZE));
20755 size_t item_size4valelemsecondfirst=shape[6];
20762 unsigned int count0=0;
20763 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20764 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
20765 unsigned int pad_count0=0;
20766 for(;it0!=val0.end();++it0){
20767 std::string child1key=std::string(it0->first,0,item_size1key);
20768 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
20769 unsigned int pad_count1val=0;
20770 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20771 for(;it1val!=it0->second.end();++it1val){
20772 std::pair<int, std::pair<std::string, std::string>> child2valelem;
20773 unsigned int pad_count2valelem=0;
20774 std::pair<std::string, std::string> child3valelemsecond;
20775 unsigned int pad_count3valelemsecond=0;
20776 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
20777 child3valelemsecond = std::make_pair(child4valelemsecondfirst,(*it1val).second.second);
20778 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
20779 child1val.push_back(child2valelem);
20780 ++pad_count1val;
20781
20782 }
20783 child1val.resize(length1val);
20786 ++pad_count0;
20787
20788 }
20789 hasher_.Clear();
20790 hasher_.Update(fixed_val0);
20791 Digest key0 = hasher_.digest();
20795 hvl_t buf0 = VLValToBuf(fixed_val0);
20798 }
20800}
20801template<>
20802void Hdf5Back::WriteToBuf<VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20803 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20805 size_t item_size1key=shape[1];
20806 size_t valuelen1key;
20807 size_t item_size1val=((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7])))))*shape[2]);
20808 size_t length1val=shape[2];
20809 size_t item_size2valelem=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7]))));
20810 size_t item_size3valelemfirst=sizeof(int);
20811 size_t item_size3valelemsecond=((CYCLUS_SHA1_SIZE+shape[7]));
20813 size_t item_size4valelemsecondsecond=shape[7];
20819 unsigned int count0=0;
20820 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20821 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
20822 unsigned int pad_count0=0;
20823 for(;it0!=val0.end();++it0){
20824 std::string child1key=std::string(it0->first,0,item_size1key);
20825 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
20826 unsigned int pad_count1val=0;
20827 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20828 for(;it1val!=it0->second.end();++it1val){
20829 std::pair<int, std::pair<std::string, std::string>> child2valelem;
20830 unsigned int pad_count2valelem=0;
20831 std::pair<std::string, std::string> child3valelemsecond;
20832 unsigned int pad_count3valelemsecond=0;
20833 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
20834 child3valelemsecond = std::make_pair((*it1val).second.first,child4valelemsecondsecond);
20835 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
20836 child1val.push_back(child2valelem);
20837 ++pad_count1val;
20838
20839 }
20840 child1val.resize(length1val);
20843 ++pad_count0;
20844
20845 }
20846 hasher_.Clear();
20847 hasher_.Update(fixed_val0);
20848 Digest key0 = hasher_.digest();
20852 hvl_t buf0 = VLValToBuf(fixed_val0);
20855 }
20857}
20858template<>
20859void Hdf5Back::WriteToBuf<VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20860 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20862 size_t item_size1key=shape[1];
20863 size_t valuelen1key;
20864 size_t item_size1val=((((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)))))*shape[2]);
20865 size_t length1val=shape[2];
20867 size_t item_size3valelemfirst=sizeof(int);
20875 unsigned int count0=0;
20876 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20877 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
20878 unsigned int pad_count0=0;
20879 for(;it0!=val0.end();++it0){
20880 std::string child1key=std::string(it0->first,0,item_size1key);
20881 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
20882 unsigned int pad_count1val=0;
20883 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20884 for(;it1val!=it0->second.end();++it1val){
20885 std::pair<int, std::pair<std::string, std::string>> child2valelem;
20886 unsigned int pad_count2valelem=0;
20887 std::pair<std::string, std::string> child3valelemsecond;
20888 unsigned int pad_count3valelemsecond=0;
20889 child3valelemsecond = std::make_pair((*it1val).second.first,(*it1val).second.second);
20890 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
20891 child1val.push_back(child2valelem);
20892 ++pad_count1val;
20893
20894 }
20895 child1val.resize(length1val);
20898 ++pad_count0;
20899
20900 }
20901 hasher_.Clear();
20902 hasher_.Update(fixed_val0);
20903 Digest key0 = hasher_.digest();
20907 hvl_t buf0 = VLValToBuf(fixed_val0);
20910 }
20912}
20913template<>
20914void Hdf5Back::WriteToBuf<VL_MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20915 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20917 size_t item_size1key=shape[1];
20918 size_t valuelen1key;
20920 size_t item_size2valelem=((sizeof(int)+((shape[6]+shape[7]))));
20921 size_t item_size3valelemfirst=sizeof(int);
20922 size_t item_size3valelemsecond=((shape[6]+shape[7]));
20923 size_t item_size4valelemsecondfirst=shape[6];
20925 size_t item_size4valelemsecondsecond=shape[7];
20931 unsigned int count0=0;
20932 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20933 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
20934 unsigned int pad_count0=0;
20935 for(;it0!=val0.end();++it0){
20936 std::string child1key=std::string(it0->first,0,item_size1key);
20937 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
20938 unsigned int pad_count1val=0;
20939 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20940 for(;it1val!=it0->second.end();++it1val){
20941 std::pair<int, std::pair<std::string, std::string>> child2valelem;
20942 unsigned int pad_count2valelem=0;
20943 std::pair<std::string, std::string> child3valelemsecond;
20944 unsigned int pad_count3valelemsecond=0;
20945 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
20946 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
20948 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
20949 child1val.push_back(child2valelem);
20950 ++pad_count1val;
20951
20952 }
20954 ++pad_count0;
20955
20956 }
20957 hasher_.Clear();
20958 hasher_.Update(fixed_val0);
20959 Digest key0 = hasher_.digest();
20963 hvl_t buf0 = VLValToBuf(fixed_val0);
20966 }
20968}
20969template<>
20970void Hdf5Back::WriteToBuf<VL_MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
20971 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
20973 size_t item_size1key=shape[1];
20974 size_t valuelen1key;
20976 size_t item_size2valelem=((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE))));
20977 size_t item_size3valelemfirst=sizeof(int);
20978 size_t item_size3valelemsecond=((shape[6]+CYCLUS_SHA1_SIZE));
20979 size_t item_size4valelemsecondfirst=shape[6];
20986 unsigned int count0=0;
20987 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
20988 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
20989 unsigned int pad_count0=0;
20990 for(;it0!=val0.end();++it0){
20991 std::string child1key=std::string(it0->first,0,item_size1key);
20992 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
20993 unsigned int pad_count1val=0;
20994 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
20995 for(;it1val!=it0->second.end();++it1val){
20996 std::pair<int, std::pair<std::string, std::string>> child2valelem;
20997 unsigned int pad_count2valelem=0;
20998 std::pair<std::string, std::string> child3valelemsecond;
20999 unsigned int pad_count3valelemsecond=0;
21000 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
21001 child3valelemsecond = std::make_pair(child4valelemsecondfirst,(*it1val).second.second);
21002 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
21003 child1val.push_back(child2valelem);
21004 ++pad_count1val;
21005
21006 }
21008 ++pad_count0;
21009
21010 }
21011 hasher_.Clear();
21012 hasher_.Update(fixed_val0);
21013 Digest key0 = hasher_.digest();
21017 hvl_t buf0 = VLValToBuf(fixed_val0);
21020 }
21022}
21023template<>
21024void Hdf5Back::WriteToBuf<VL_MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21025 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
21027 size_t item_size1key=shape[1];
21028 size_t valuelen1key;
21030 size_t item_size2valelem=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7]))));
21031 size_t item_size3valelemfirst=sizeof(int);
21032 size_t item_size3valelemsecond=((CYCLUS_SHA1_SIZE+shape[7]));
21034 size_t item_size4valelemsecondsecond=shape[7];
21040 unsigned int count0=0;
21041 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
21042 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
21043 unsigned int pad_count0=0;
21044 for(;it0!=val0.end();++it0){
21045 std::string child1key=std::string(it0->first,0,item_size1key);
21046 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
21047 unsigned int pad_count1val=0;
21048 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
21049 for(;it1val!=it0->second.end();++it1val){
21050 std::pair<int, std::pair<std::string, std::string>> child2valelem;
21051 unsigned int pad_count2valelem=0;
21052 std::pair<std::string, std::string> child3valelemsecond;
21053 unsigned int pad_count3valelemsecond=0;
21054 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
21055 child3valelemsecond = std::make_pair((*it1val).second.first,child4valelemsecondsecond);
21056 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
21057 child1val.push_back(child2valelem);
21058 ++pad_count1val;
21059
21060 }
21062 ++pad_count0;
21063
21064 }
21065 hasher_.Clear();
21066 hasher_.Update(fixed_val0);
21067 Digest key0 = hasher_.digest();
21071 hvl_t buf0 = VLValToBuf(fixed_val0);
21074 }
21076}
21077template<>
21078void Hdf5Back::WriteToBuf<VL_MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21079 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
21081 size_t item_size1key=shape[1];
21082 size_t valuelen1key;
21085 size_t item_size3valelemfirst=sizeof(int);
21093 unsigned int count0=0;
21094 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
21095 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
21096 unsigned int pad_count0=0;
21097 for(;it0!=val0.end();++it0){
21098 std::string child1key=std::string(it0->first,0,item_size1key);
21099 fixed_val0[child1key] = it0->second;
21100 ++pad_count0;
21101
21102 }
21103 hasher_.Clear();
21104 hasher_.Update(fixed_val0);
21105 Digest key0 = hasher_.digest();
21109 hvl_t buf0 = VLValToBuf(fixed_val0);
21112 }
21114}
21115template<>
21116void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21117 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
21120 size_t item_size1val=((((sizeof(int)+((shape[6]+shape[7])))))*shape[2]);
21121 size_t length1val=shape[2];
21122 size_t item_size2valelem=((sizeof(int)+((shape[6]+shape[7]))));
21123 size_t item_size3valelemfirst=sizeof(int);
21124 size_t item_size3valelemsecond=((shape[6]+shape[7]));
21125 size_t item_size4valelemsecondfirst=shape[6];
21127 size_t item_size4valelemsecondsecond=shape[7];
21133 unsigned int count0=0;
21134 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
21135 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
21136 unsigned int pad_count0=0;
21137 for(;it0!=val0.end();++it0){
21138 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
21139 unsigned int pad_count1val=0;
21140 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
21141 for(;it1val!=it0->second.end();++it1val){
21142 std::pair<int, std::pair<std::string, std::string>> child2valelem;
21143 unsigned int pad_count2valelem=0;
21144 std::pair<std::string, std::string> child3valelemsecond;
21145 unsigned int pad_count3valelemsecond=0;
21146 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
21147 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
21149 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
21150 child1val.push_back(child2valelem);
21151 ++pad_count1val;
21152
21153 }
21154 child1val.resize(length1val);
21156 fixed_val0[it0->first] = child1val;
21157 ++pad_count0;
21158
21159 }
21160 hasher_.Clear();
21161 hasher_.Update(fixed_val0);
21162 Digest key0 = hasher_.digest();
21166 hvl_t buf0 = VLValToBuf(fixed_val0);
21169 }
21171}
21172template<>
21173void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21174 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
21177 size_t item_size1val=((((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE)))))*shape[2]);
21178 size_t length1val=shape[2];
21179 size_t item_size2valelem=((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE))));
21180 size_t item_size3valelemfirst=sizeof(int);
21181 size_t item_size3valelemsecond=((shape[6]+CYCLUS_SHA1_SIZE));
21182 size_t item_size4valelemsecondfirst=shape[6];
21189 unsigned int count0=0;
21190 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
21191 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
21192 unsigned int pad_count0=0;
21193 for(;it0!=val0.end();++it0){
21194 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
21195 unsigned int pad_count1val=0;
21196 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
21197 for(;it1val!=it0->second.end();++it1val){
21198 std::pair<int, std::pair<std::string, std::string>> child2valelem;
21199 unsigned int pad_count2valelem=0;
21200 std::pair<std::string, std::string> child3valelemsecond;
21201 unsigned int pad_count3valelemsecond=0;
21202 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
21203 child3valelemsecond = std::make_pair(child4valelemsecondfirst,(*it1val).second.second);
21204 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
21205 child1val.push_back(child2valelem);
21206 ++pad_count1val;
21207
21208 }
21209 child1val.resize(length1val);
21211 fixed_val0[it0->first] = child1val;
21212 ++pad_count0;
21213
21214 }
21215 hasher_.Clear();
21216 hasher_.Update(fixed_val0);
21217 Digest key0 = hasher_.digest();
21221 hvl_t buf0 = VLValToBuf(fixed_val0);
21224 }
21226}
21227template<>
21228void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21229 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
21232 size_t item_size1val=((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7])))))*shape[2]);
21233 size_t length1val=shape[2];
21234 size_t item_size2valelem=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7]))));
21235 size_t item_size3valelemfirst=sizeof(int);
21236 size_t item_size3valelemsecond=((CYCLUS_SHA1_SIZE+shape[7]));
21238 size_t item_size4valelemsecondsecond=shape[7];
21244 unsigned int count0=0;
21245 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
21246 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
21247 unsigned int pad_count0=0;
21248 for(;it0!=val0.end();++it0){
21249 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
21250 unsigned int pad_count1val=0;
21251 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
21252 for(;it1val!=it0->second.end();++it1val){
21253 std::pair<int, std::pair<std::string, std::string>> child2valelem;
21254 unsigned int pad_count2valelem=0;
21255 std::pair<std::string, std::string> child3valelemsecond;
21256 unsigned int pad_count3valelemsecond=0;
21257 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
21258 child3valelemsecond = std::make_pair((*it1val).second.first,child4valelemsecondsecond);
21259 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
21260 child1val.push_back(child2valelem);
21261 ++pad_count1val;
21262
21263 }
21264 child1val.resize(length1val);
21266 fixed_val0[it0->first] = child1val;
21267 ++pad_count0;
21268
21269 }
21270 hasher_.Clear();
21271 hasher_.Update(fixed_val0);
21272 Digest key0 = hasher_.digest();
21276 hvl_t buf0 = VLValToBuf(fixed_val0);
21279 }
21281}
21282template<>
21283void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21284 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
21287 size_t item_size1val=((((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)))))*shape[2]);
21288 size_t length1val=shape[2];
21290 size_t item_size3valelemfirst=sizeof(int);
21298 unsigned int count0=0;
21299 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
21300 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
21301 unsigned int pad_count0=0;
21302 for(;it0!=val0.end();++it0){
21303 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
21304 unsigned int pad_count1val=0;
21305 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
21306 for(;it1val!=it0->second.end();++it1val){
21307 std::pair<int, std::pair<std::string, std::string>> child2valelem;
21308 unsigned int pad_count2valelem=0;
21309 std::pair<std::string, std::string> child3valelemsecond;
21310 unsigned int pad_count3valelemsecond=0;
21311 child3valelemsecond = std::make_pair((*it1val).second.first,(*it1val).second.second);
21312 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
21313 child1val.push_back(child2valelem);
21314 ++pad_count1val;
21315
21316 }
21317 child1val.resize(length1val);
21319 fixed_val0[it0->first] = child1val;
21320 ++pad_count0;
21321
21322 }
21323 hasher_.Clear();
21324 hasher_.Update(fixed_val0);
21325 Digest key0 = hasher_.digest();
21329 hvl_t buf0 = VLValToBuf(fixed_val0);
21332 }
21334}
21335template<>
21336void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21337 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
21341 size_t item_size2valelem=((sizeof(int)+((shape[6]+shape[7]))));
21342 size_t item_size3valelemfirst=sizeof(int);
21343 size_t item_size3valelemsecond=((shape[6]+shape[7]));
21344 size_t item_size4valelemsecondfirst=shape[6];
21346 size_t item_size4valelemsecondsecond=shape[7];
21352 unsigned int count0=0;
21353 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
21354 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
21355 unsigned int pad_count0=0;
21356 for(;it0!=val0.end();++it0){
21357 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
21358 unsigned int pad_count1val=0;
21359 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
21360 for(;it1val!=it0->second.end();++it1val){
21361 std::pair<int, std::pair<std::string, std::string>> child2valelem;
21362 unsigned int pad_count2valelem=0;
21363 std::pair<std::string, std::string> child3valelemsecond;
21364 unsigned int pad_count3valelemsecond=0;
21365 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
21366 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
21368 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
21369 child1val.push_back(child2valelem);
21370 ++pad_count1val;
21371
21372 }
21373 fixed_val0[it0->first] = child1val;
21374 ++pad_count0;
21375
21376 }
21377 hasher_.Clear();
21378 hasher_.Update(fixed_val0);
21379 Digest key0 = hasher_.digest();
21383 hvl_t buf0 = VLValToBuf(fixed_val0);
21386 }
21388}
21389template<>
21390void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21391 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
21395 size_t item_size2valelem=((sizeof(int)+((shape[6]+CYCLUS_SHA1_SIZE))));
21396 size_t item_size3valelemfirst=sizeof(int);
21397 size_t item_size3valelemsecond=((shape[6]+CYCLUS_SHA1_SIZE));
21398 size_t item_size4valelemsecondfirst=shape[6];
21405 unsigned int count0=0;
21406 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
21407 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
21408 unsigned int pad_count0=0;
21409 for(;it0!=val0.end();++it0){
21410 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
21411 unsigned int pad_count1val=0;
21412 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
21413 for(;it1val!=it0->second.end();++it1val){
21414 std::pair<int, std::pair<std::string, std::string>> child2valelem;
21415 unsigned int pad_count2valelem=0;
21416 std::pair<std::string, std::string> child3valelemsecond;
21417 unsigned int pad_count3valelemsecond=0;
21418 std::string child4valelemsecondfirst=std::string((*it1val).second.first,0,item_size4valelemsecondfirst);
21419 child3valelemsecond = std::make_pair(child4valelemsecondfirst,(*it1val).second.second);
21420 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
21421 child1val.push_back(child2valelem);
21422 ++pad_count1val;
21423
21424 }
21425 fixed_val0[it0->first] = child1val;
21426 ++pad_count0;
21427
21428 }
21429 hasher_.Clear();
21430 hasher_.Update(fixed_val0);
21431 Digest key0 = hasher_.digest();
21435 hvl_t buf0 = VLValToBuf(fixed_val0);
21438 }
21440}
21441template<>
21442void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21443 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
21447 size_t item_size2valelem=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[7]))));
21448 size_t item_size3valelemfirst=sizeof(int);
21449 size_t item_size3valelemsecond=((CYCLUS_SHA1_SIZE+shape[7]));
21451 size_t item_size4valelemsecondsecond=shape[7];
21457 unsigned int count0=0;
21458 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::iterator it0=val0.begin();
21459 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> fixed_val0;
21460 unsigned int pad_count0=0;
21461 for(;it0!=val0.end();++it0){
21462 std::vector<std::pair<int, std::pair<std::string, std::string>>> child1val;
21463 unsigned int pad_count1val=0;
21464 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it1val=it0->second.begin();
21465 for(;it1val!=it0->second.end();++it1val){
21466 std::pair<int, std::pair<std::string, std::string>> child2valelem;
21467 unsigned int pad_count2valelem=0;
21468 std::pair<std::string, std::string> child3valelemsecond;
21469 unsigned int pad_count3valelemsecond=0;
21470 std::string child4valelemsecondsecond=std::string((*it1val).second.second,0,item_size4valelemsecondsecond);
21471 child3valelemsecond = std::make_pair((*it1val).second.first,child4valelemsecondsecond);
21472 child2valelem = std::make_pair((*it1val).first,child3valelemsecond);
21473 child1val.push_back(child2valelem);
21474 ++pad_count1val;
21475
21476 }
21477 fixed_val0[it0->first] = child1val;
21478 ++pad_count0;
21479
21480 }
21481 hasher_.Clear();
21482 hasher_.Update(fixed_val0);
21483 Digest key0 = hasher_.digest();
21487 hvl_t buf0 = VLValToBuf(fixed_val0);
21490 }
21492}
21493template<>
21494void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21495 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> val0=a->cast<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>();
21500 size_t item_size3valelemfirst=sizeof(int);
21508 hasher_.Clear();
21509 hasher_.Update(val0);
21510 Digest key0 = hasher_.digest();
21514 hvl_t buf0 = VLValToBuf(val0);
21517 }
21519}
21520template<>
21521void Hdf5Back::WriteToBuf<LIST_PAIR_INT_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21522 std::list<std::pair<int, int>> val0=a->cast<std::list<std::pair<int, int>>>();
21523 size_t item_size0=((((sizeof(int)+sizeof(int))))*shape[0]);
21524 size_t length0=shape[0];
21525 size_t item_size1elem=((sizeof(int)+sizeof(int)));
21526 size_t item_size2elemfirst=sizeof(int);
21527 size_t item_size2elemsecond=sizeof(int);
21530 if(total_item_size0*val0.size()>column){
21531 std::list<std::pair<int, int>>::iterator eraseit=val0.begin();
21532 std::advance(eraseit, column/total_item_size0);
21533 val0.erase(eraseit,val0.end());
21534
21535 }
21536 unsigned int count0=0;
21537 std::list<std::pair<int, int>>::iterator it0=val0.begin();
21538 for(;it0!=val0.end();++it0){
21539 unsigned int count1elem=0;
21542 ++count0;
21543
21544 }
21547
21548 }
21549}
21550template<>
21551void Hdf5Back::WriteToBuf<VL_LIST_PAIR_INT_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21552 std::list<std::pair<int, int>> val0=a->cast<std::list<std::pair<int, int>>>();
21554 size_t item_size1elem=((sizeof(int)+sizeof(int)));
21555 size_t item_size2elemfirst=sizeof(int);
21556 size_t item_size2elemsecond=sizeof(int);
21559 hasher_.Clear();
21560 hasher_.Update(val0);
21561 Digest key0 = hasher_.digest();
21562 hid_t keysds0 = VLDataset(VL_LIST_PAIR_INT_INT, true);
21563 hid_t valsds0 = VLDataset(VL_LIST_PAIR_INT_INT, false);
21564 if (vlkeys_[VL_LIST_PAIR_INT_INT].count(key0) != 1) {
21565 hvl_t buf0 = VLValToBuf(val0);
21566 AppendVLKey(keysds0, VL_LIST_PAIR_INT_INT, key0);
21567 InsertVLVal(valsds0, VL_LIST_PAIR_INT_INT, key0, buf0);
21568 }
21570}
21571template<>
21572void Hdf5Back::WriteToBuf<MAP_STRING_PAIR_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21573 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
21574 size_t item_size0=((shape[1]+((shape[3]+((sizeof(double))*shape[4]))))*shape[0]);
21575 size_t length0=shape[0];
21576 size_t item_size1key=shape[1];
21577 size_t valuelen1key;
21578 size_t item_size1val=((shape[3]+((sizeof(double))*shape[4])));
21579 size_t item_size2valfirst=shape[3];
21580 size_t valuelen2valfirst;
21581 size_t item_size2valsecond=((sizeof(double))*shape[4]);
21582 size_t length2valsecond=shape[4];
21583 size_t item_size3valsecondelem=sizeof(double);
21587 if(total_item_size0*val0.size()>column){
21588 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator eraseit=val0.begin();
21589 std::advance(eraseit, column/total_item_size0);
21590 val0.erase(eraseit,val0.end());
21591
21592 }
21593 unsigned int count0=0;
21594 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
21595 for(;it0!=val0.end();++it0){
21596 valuelen1key=std::min(it0->first.size(), item_size1key);
21597 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
21599 unsigned int count1val=0;
21600 valuelen2valfirst=std::min(it0->second.first.size(), item_size2valfirst);
21603 unsigned int count2valsecond=0;
21604 std::vector<double>::iterator it2valsecond=it0->second.second.begin();
21605 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
21608
21609 }
21611 ++count0;
21612
21613 }
21616
21617 }
21618}
21619template<>
21620void Hdf5Back::WriteToBuf<MAP_STRING_PAIR_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21621 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
21622 size_t item_size0=((shape[1]+((shape[3]+(CYCLUS_SHA1_SIZE))))*shape[0]);
21623 size_t length0=shape[0];
21624 size_t item_size1key=shape[1];
21625 size_t valuelen1key;
21626 size_t item_size1val=((shape[3]+(CYCLUS_SHA1_SIZE)));
21627 size_t item_size2valfirst=shape[3];
21628 size_t valuelen2valfirst;
21630 size_t item_size3valsecondelem=sizeof(double);
21634 if(total_item_size0*val0.size()>column){
21635 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator eraseit=val0.begin();
21636 std::advance(eraseit, column/total_item_size0);
21637 val0.erase(eraseit,val0.end());
21638
21639 }
21640 unsigned int count0=0;
21641 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
21642 for(;it0!=val0.end();++it0){
21643 valuelen1key=std::min(it0->first.size(), item_size1key);
21644 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
21646 unsigned int count1val=0;
21647 valuelen2valfirst=std::min(it0->second.first.size(), item_size2valfirst);
21650 hasher_.Clear();
21651 hasher_.Update(it0->second.second);
21652 Digest key2valsecond = hasher_.digest();
21653 hid_t keysds2valsecond = VLDataset(VL_VECTOR_DOUBLE, true);
21654 hid_t valsds2valsecond = VLDataset(VL_VECTOR_DOUBLE, false);
21655 if (vlkeys_[VL_VECTOR_DOUBLE].count(key2valsecond) != 1) {
21656 hvl_t buf2valsecond = VLValToBuf(it0->second.second);
21659 }
21661 ++count0;
21662
21663 }
21666
21667 }
21668}
21669template<>
21670void Hdf5Back::WriteToBuf<MAP_STRING_PAIR_VL_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21671 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
21672 size_t item_size0=((shape[1]+((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[4]))))*shape[0]);
21673 size_t length0=shape[0];
21674 size_t item_size1key=shape[1];
21675 size_t valuelen1key;
21676 size_t item_size1val=((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[4])));
21678 size_t item_size2valsecond=((sizeof(double))*shape[4]);
21679 size_t length2valsecond=shape[4];
21680 size_t item_size3valsecondelem=sizeof(double);
21684 if(total_item_size0*val0.size()>column){
21685 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator eraseit=val0.begin();
21686 std::advance(eraseit, column/total_item_size0);
21687 val0.erase(eraseit,val0.end());
21688
21689 }
21690 unsigned int count0=0;
21691 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
21692 for(;it0!=val0.end();++it0){
21693 valuelen1key=std::min(it0->first.size(), item_size1key);
21694 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
21696 unsigned int count1val=0;
21697 hasher_.Clear();
21698 hasher_.Update(it0->second.first);
21699 Digest key2valfirst = hasher_.digest();
21700 hid_t keysds2valfirst = VLDataset(VL_STRING, true);
21701 hid_t valsds2valfirst = VLDataset(VL_STRING, false);
21702 if (vlkeys_[VL_STRING].count(key2valfirst) != 1) {
21703 AppendVLKey(keysds2valfirst, VL_STRING, key2valfirst);
21704 InsertVLVal(valsds2valfirst, VL_STRING, key2valfirst, it0->second.first);
21705 }
21707 unsigned int count2valsecond=0;
21708 std::vector<double>::iterator it2valsecond=it0->second.second.begin();
21709 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
21712
21713 }
21715 ++count0;
21716
21717 }
21720
21721 }
21722}
21723template<>
21724void Hdf5Back::WriteToBuf<MAP_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21725 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
21726 size_t item_size0=((shape[1]+((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))))*shape[0]);
21727 size_t length0=shape[0];
21728 size_t item_size1key=shape[1];
21729 size_t valuelen1key;
21733 size_t item_size3valsecondelem=sizeof(double);
21737 if(total_item_size0*val0.size()>column){
21738 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator eraseit=val0.begin();
21739 std::advance(eraseit, column/total_item_size0);
21740 val0.erase(eraseit,val0.end());
21741
21742 }
21743 unsigned int count0=0;
21744 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
21745 for(;it0!=val0.end();++it0){
21746 valuelen1key=std::min(it0->first.size(), item_size1key);
21747 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
21749 unsigned int count1val=0;
21750 hasher_.Clear();
21751 hasher_.Update(it0->second.first);
21752 Digest key2valfirst = hasher_.digest();
21753 hid_t keysds2valfirst = VLDataset(VL_STRING, true);
21754 hid_t valsds2valfirst = VLDataset(VL_STRING, false);
21755 if (vlkeys_[VL_STRING].count(key2valfirst) != 1) {
21756 AppendVLKey(keysds2valfirst, VL_STRING, key2valfirst);
21757 InsertVLVal(valsds2valfirst, VL_STRING, key2valfirst, it0->second.first);
21758 }
21760 hasher_.Clear();
21761 hasher_.Update(it0->second.second);
21762 Digest key2valsecond = hasher_.digest();
21763 hid_t keysds2valsecond = VLDataset(VL_VECTOR_DOUBLE, true);
21764 hid_t valsds2valsecond = VLDataset(VL_VECTOR_DOUBLE, false);
21765 if (vlkeys_[VL_VECTOR_DOUBLE].count(key2valsecond) != 1) {
21766 hvl_t buf2valsecond = VLValToBuf(it0->second.second);
21769 }
21771 ++count0;
21772
21773 }
21776
21777 }
21778}
21779template<>
21780void Hdf5Back::WriteToBuf<MAP_VL_STRING_PAIR_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21781 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
21782 size_t item_size0=((CYCLUS_SHA1_SIZE+((shape[3]+((sizeof(double))*shape[4]))))*shape[0]);
21783 size_t length0=shape[0];
21785 size_t item_size1val=((shape[3]+((sizeof(double))*shape[4])));
21786 size_t item_size2valfirst=shape[3];
21787 size_t valuelen2valfirst;
21788 size_t item_size2valsecond=((sizeof(double))*shape[4]);
21789 size_t length2valsecond=shape[4];
21790 size_t item_size3valsecondelem=sizeof(double);
21794 if(total_item_size0*val0.size()>column){
21795 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator eraseit=val0.begin();
21796 std::advance(eraseit, column/total_item_size0);
21797 val0.erase(eraseit,val0.end());
21798
21799 }
21800 unsigned int count0=0;
21801 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
21802 for(;it0!=val0.end();++it0){
21803 hasher_.Clear();
21804 hasher_.Update(it0->first);
21805 Digest key1key = hasher_.digest();
21806 hid_t keysds1key = VLDataset(VL_STRING, true);
21807 hid_t valsds1key = VLDataset(VL_STRING, false);
21808 if (vlkeys_[VL_STRING].count(key1key) != 1) {
21809 AppendVLKey(keysds1key, VL_STRING, key1key);
21810 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
21811 }
21813 unsigned int count1val=0;
21814 valuelen2valfirst=std::min(it0->second.first.size(), item_size2valfirst);
21817 unsigned int count2valsecond=0;
21818 std::vector<double>::iterator it2valsecond=it0->second.second.begin();
21819 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
21822
21823 }
21825 ++count0;
21826
21827 }
21830
21831 }
21832}
21833template<>
21834void Hdf5Back::WriteToBuf<MAP_VL_STRING_PAIR_VL_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21835 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
21836 size_t item_size0=((CYCLUS_SHA1_SIZE+((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[4]))))*shape[0]);
21837 size_t length0=shape[0];
21839 size_t item_size1val=((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[4])));
21841 size_t item_size2valsecond=((sizeof(double))*shape[4]);
21842 size_t length2valsecond=shape[4];
21843 size_t item_size3valsecondelem=sizeof(double);
21847 if(total_item_size0*val0.size()>column){
21848 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator eraseit=val0.begin();
21849 std::advance(eraseit, column/total_item_size0);
21850 val0.erase(eraseit,val0.end());
21851
21852 }
21853 unsigned int count0=0;
21854 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
21855 for(;it0!=val0.end();++it0){
21856 hasher_.Clear();
21857 hasher_.Update(it0->first);
21858 Digest key1key = hasher_.digest();
21859 hid_t keysds1key = VLDataset(VL_STRING, true);
21860 hid_t valsds1key = VLDataset(VL_STRING, false);
21861 if (vlkeys_[VL_STRING].count(key1key) != 1) {
21862 AppendVLKey(keysds1key, VL_STRING, key1key);
21863 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
21864 }
21866 unsigned int count1val=0;
21867 hasher_.Clear();
21868 hasher_.Update(it0->second.first);
21869 Digest key2valfirst = hasher_.digest();
21870 hid_t keysds2valfirst = VLDataset(VL_STRING, true);
21871 hid_t valsds2valfirst = VLDataset(VL_STRING, false);
21872 if (vlkeys_[VL_STRING].count(key2valfirst) != 1) {
21873 AppendVLKey(keysds2valfirst, VL_STRING, key2valfirst);
21874 InsertVLVal(valsds2valfirst, VL_STRING, key2valfirst, it0->second.first);
21875 }
21877 unsigned int count2valsecond=0;
21878 std::vector<double>::iterator it2valsecond=it0->second.second.begin();
21879 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
21882
21883 }
21885 ++count0;
21886
21887 }
21890
21891 }
21892}
21893template<>
21894void Hdf5Back::WriteToBuf<MAP_VL_STRING_PAIR_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21895 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
21896 size_t item_size0=((CYCLUS_SHA1_SIZE+((shape[3]+(CYCLUS_SHA1_SIZE))))*shape[0]);
21897 size_t length0=shape[0];
21899 size_t item_size1val=((shape[3]+(CYCLUS_SHA1_SIZE)));
21900 size_t item_size2valfirst=shape[3];
21901 size_t valuelen2valfirst;
21903 size_t item_size3valsecondelem=sizeof(double);
21907 if(total_item_size0*val0.size()>column){
21908 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator eraseit=val0.begin();
21909 std::advance(eraseit, column/total_item_size0);
21910 val0.erase(eraseit,val0.end());
21911
21912 }
21913 unsigned int count0=0;
21914 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
21915 for(;it0!=val0.end();++it0){
21916 hasher_.Clear();
21917 hasher_.Update(it0->first);
21918 Digest key1key = hasher_.digest();
21919 hid_t keysds1key = VLDataset(VL_STRING, true);
21920 hid_t valsds1key = VLDataset(VL_STRING, false);
21921 if (vlkeys_[VL_STRING].count(key1key) != 1) {
21922 AppendVLKey(keysds1key, VL_STRING, key1key);
21923 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
21924 }
21926 unsigned int count1val=0;
21927 valuelen2valfirst=std::min(it0->second.first.size(), item_size2valfirst);
21930 hasher_.Clear();
21931 hasher_.Update(it0->second.second);
21932 Digest key2valsecond = hasher_.digest();
21933 hid_t keysds2valsecond = VLDataset(VL_VECTOR_DOUBLE, true);
21934 hid_t valsds2valsecond = VLDataset(VL_VECTOR_DOUBLE, false);
21935 if (vlkeys_[VL_VECTOR_DOUBLE].count(key2valsecond) != 1) {
21936 hvl_t buf2valsecond = VLValToBuf(it0->second.second);
21939 }
21941 ++count0;
21942
21943 }
21946
21947 }
21948}
21949template<>
21950void Hdf5Back::WriteToBuf<MAP_VL_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
21951 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
21953 size_t length0=shape[0];
21958 size_t item_size3valsecondelem=sizeof(double);
21962 if(total_item_size0*val0.size()>column){
21963 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator eraseit=val0.begin();
21964 std::advance(eraseit, column/total_item_size0);
21965 val0.erase(eraseit,val0.end());
21966
21967 }
21968 unsigned int count0=0;
21969 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
21970 for(;it0!=val0.end();++it0){
21971 hasher_.Clear();
21972 hasher_.Update(it0->first);
21973 Digest key1key = hasher_.digest();
21974 hid_t keysds1key = VLDataset(VL_STRING, true);
21975 hid_t valsds1key = VLDataset(VL_STRING, false);
21976 if (vlkeys_[VL_STRING].count(key1key) != 1) {
21977 AppendVLKey(keysds1key, VL_STRING, key1key);
21978 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
21979 }
21981 unsigned int count1val=0;
21982 hasher_.Clear();
21983 hasher_.Update(it0->second.first);
21984 Digest key2valfirst = hasher_.digest();
21985 hid_t keysds2valfirst = VLDataset(VL_STRING, true);
21986 hid_t valsds2valfirst = VLDataset(VL_STRING, false);
21987 if (vlkeys_[VL_STRING].count(key2valfirst) != 1) {
21988 AppendVLKey(keysds2valfirst, VL_STRING, key2valfirst);
21989 InsertVLVal(valsds2valfirst, VL_STRING, key2valfirst, it0->second.first);
21990 }
21992 hasher_.Clear();
21993 hasher_.Update(it0->second.second);
21994 Digest key2valsecond = hasher_.digest();
21995 hid_t keysds2valsecond = VLDataset(VL_VECTOR_DOUBLE, true);
21996 hid_t valsds2valsecond = VLDataset(VL_VECTOR_DOUBLE, false);
21997 if (vlkeys_[VL_VECTOR_DOUBLE].count(key2valsecond) != 1) {
21998 hvl_t buf2valsecond = VLValToBuf(it0->second.second);
22001 }
22003 ++count0;
22004
22005 }
22008
22009 }
22010}
22011template<>
22012void Hdf5Back::WriteToBuf<VL_MAP_STRING_PAIR_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22013 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
22015 size_t item_size1key=shape[1];
22016 size_t valuelen1key;
22017 size_t item_size1val=((shape[3]+((sizeof(double))*shape[4])));
22018 size_t item_size2valfirst=shape[3];
22019 size_t valuelen2valfirst;
22020 size_t item_size2valsecond=((sizeof(double))*shape[4]);
22021 size_t length2valsecond=shape[4];
22022 size_t item_size3valsecondelem=sizeof(double);
22026 unsigned int count0=0;
22027 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
22028 std::map<std::string, std::pair<std::string, std::vector<double>>> fixed_val0;
22029 unsigned int pad_count0=0;
22030 for(;it0!=val0.end();++it0){
22031 std::string child1key=std::string(it0->first,0,item_size1key);
22032 std::pair<std::string, std::vector<double>> child1val;
22033 unsigned int pad_count1val=0;
22034 std::string child2valfirst=std::string(it0->second.first,0,item_size2valfirst);
22035 std::vector<double> child2valsecond;
22036 unsigned int pad_count2valsecond=0;
22037 std::vector<double>::iterator it2valsecond=it0->second.second.begin();
22038 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
22039 child2valsecond.push_back((*it2valsecond));
22041
22042 }
22045 child1val = std::make_pair(child2valfirst,child2valsecond);
22047 ++pad_count0;
22048
22049 }
22050 hasher_.Clear();
22051 hasher_.Update(fixed_val0);
22052 Digest key0 = hasher_.digest();
22055 if (vlkeys_[VL_MAP_STRING_PAIR_STRING_VECTOR_DOUBLE].count(key0) != 1) {
22056 hvl_t buf0 = VLValToBuf(fixed_val0);
22059 }
22061}
22062template<>
22063void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_PAIR_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22064 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
22067 size_t item_size1val=((shape[3]+((sizeof(double))*shape[4])));
22068 size_t item_size2valfirst=shape[3];
22069 size_t valuelen2valfirst;
22070 size_t item_size2valsecond=((sizeof(double))*shape[4]);
22071 size_t length2valsecond=shape[4];
22072 size_t item_size3valsecondelem=sizeof(double);
22076 unsigned int count0=0;
22077 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
22078 std::map<std::string, std::pair<std::string, std::vector<double>>> fixed_val0;
22079 unsigned int pad_count0=0;
22080 for(;it0!=val0.end();++it0){
22081 std::pair<std::string, std::vector<double>> child1val;
22082 unsigned int pad_count1val=0;
22083 std::string child2valfirst=std::string(it0->second.first,0,item_size2valfirst);
22084 std::vector<double> child2valsecond;
22085 unsigned int pad_count2valsecond=0;
22086 std::vector<double>::iterator it2valsecond=it0->second.second.begin();
22087 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
22088 child2valsecond.push_back((*it2valsecond));
22090
22091 }
22094 child1val = std::make_pair(child2valfirst,child2valsecond);
22095 fixed_val0[it0->first] = child1val;
22096 ++pad_count0;
22097
22098 }
22099 hasher_.Clear();
22100 hasher_.Update(fixed_val0);
22101 Digest key0 = hasher_.digest();
22104 if (vlkeys_[VL_MAP_VL_STRING_PAIR_STRING_VECTOR_DOUBLE].count(key0) != 1) {
22105 hvl_t buf0 = VLValToBuf(fixed_val0);
22108 }
22110}
22111template<>
22112void Hdf5Back::WriteToBuf<VL_MAP_STRING_PAIR_VL_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22113 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
22115 size_t item_size1key=shape[1];
22116 size_t valuelen1key;
22117 size_t item_size1val=((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[4])));
22119 size_t item_size2valsecond=((sizeof(double))*shape[4]);
22120 size_t length2valsecond=shape[4];
22121 size_t item_size3valsecondelem=sizeof(double);
22125 unsigned int count0=0;
22126 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
22127 std::map<std::string, std::pair<std::string, std::vector<double>>> fixed_val0;
22128 unsigned int pad_count0=0;
22129 for(;it0!=val0.end();++it0){
22130 std::string child1key=std::string(it0->first,0,item_size1key);
22131 std::pair<std::string, std::vector<double>> child1val;
22132 unsigned int pad_count1val=0;
22133 std::vector<double> child2valsecond;
22134 unsigned int pad_count2valsecond=0;
22135 std::vector<double>::iterator it2valsecond=it0->second.second.begin();
22136 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
22137 child2valsecond.push_back((*it2valsecond));
22139
22140 }
22143 child1val = std::make_pair(it0->second.first,child2valsecond);
22145 ++pad_count0;
22146
22147 }
22148 hasher_.Clear();
22149 hasher_.Update(fixed_val0);
22150 Digest key0 = hasher_.digest();
22153 if (vlkeys_[VL_MAP_STRING_PAIR_VL_STRING_VECTOR_DOUBLE].count(key0) != 1) {
22154 hvl_t buf0 = VLValToBuf(fixed_val0);
22157 }
22159}
22160template<>
22161void Hdf5Back::WriteToBuf<VL_MAP_STRING_PAIR_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22162 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
22164 size_t item_size1key=shape[1];
22165 size_t valuelen1key;
22166 size_t item_size1val=((shape[3]+(CYCLUS_SHA1_SIZE)));
22167 size_t item_size2valfirst=shape[3];
22168 size_t valuelen2valfirst;
22170 size_t item_size3valsecondelem=sizeof(double);
22174 unsigned int count0=0;
22175 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
22176 std::map<std::string, std::pair<std::string, std::vector<double>>> fixed_val0;
22177 unsigned int pad_count0=0;
22178 for(;it0!=val0.end();++it0){
22179 std::string child1key=std::string(it0->first,0,item_size1key);
22180 std::pair<std::string, std::vector<double>> child1val;
22181 unsigned int pad_count1val=0;
22182 std::string child2valfirst=std::string(it0->second.first,0,item_size2valfirst);
22183 child1val = std::make_pair(child2valfirst,it0->second.second);
22185 ++pad_count0;
22186
22187 }
22188 hasher_.Clear();
22189 hasher_.Update(fixed_val0);
22190 Digest key0 = hasher_.digest();
22193 if (vlkeys_[VL_MAP_STRING_PAIR_STRING_VL_VECTOR_DOUBLE].count(key0) != 1) {
22194 hvl_t buf0 = VLValToBuf(fixed_val0);
22197 }
22199}
22200template<>
22201void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_PAIR_VL_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22202 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
22205 size_t item_size1val=((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[4])));
22207 size_t item_size2valsecond=((sizeof(double))*shape[4]);
22208 size_t length2valsecond=shape[4];
22209 size_t item_size3valsecondelem=sizeof(double);
22213 unsigned int count0=0;
22214 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
22215 std::map<std::string, std::pair<std::string, std::vector<double>>> fixed_val0;
22216 unsigned int pad_count0=0;
22217 for(;it0!=val0.end();++it0){
22218 std::pair<std::string, std::vector<double>> child1val;
22219 unsigned int pad_count1val=0;
22220 std::vector<double> child2valsecond;
22221 unsigned int pad_count2valsecond=0;
22222 std::vector<double>::iterator it2valsecond=it0->second.second.begin();
22223 for(;it2valsecond!=it0->second.second.end();++it2valsecond){
22224 child2valsecond.push_back((*it2valsecond));
22226
22227 }
22230 child1val = std::make_pair(it0->second.first,child2valsecond);
22231 fixed_val0[it0->first] = child1val;
22232 ++pad_count0;
22233
22234 }
22235 hasher_.Clear();
22236 hasher_.Update(fixed_val0);
22237 Digest key0 = hasher_.digest();
22240 if (vlkeys_[VL_MAP_VL_STRING_PAIR_VL_STRING_VECTOR_DOUBLE].count(key0) != 1) {
22241 hvl_t buf0 = VLValToBuf(fixed_val0);
22244 }
22246}
22247template<>
22248void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_PAIR_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22249 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
22252 size_t item_size1val=((shape[3]+(CYCLUS_SHA1_SIZE)));
22253 size_t item_size2valfirst=shape[3];
22254 size_t valuelen2valfirst;
22256 size_t item_size3valsecondelem=sizeof(double);
22260 unsigned int count0=0;
22261 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
22262 std::map<std::string, std::pair<std::string, std::vector<double>>> fixed_val0;
22263 unsigned int pad_count0=0;
22264 for(;it0!=val0.end();++it0){
22265 std::pair<std::string, std::vector<double>> child1val;
22266 unsigned int pad_count1val=0;
22267 std::string child2valfirst=std::string(it0->second.first,0,item_size2valfirst);
22268 child1val = std::make_pair(child2valfirst,it0->second.second);
22269 fixed_val0[it0->first] = child1val;
22270 ++pad_count0;
22271
22272 }
22273 hasher_.Clear();
22274 hasher_.Update(fixed_val0);
22275 Digest key0 = hasher_.digest();
22278 if (vlkeys_[VL_MAP_VL_STRING_PAIR_STRING_VL_VECTOR_DOUBLE].count(key0) != 1) {
22279 hvl_t buf0 = VLValToBuf(fixed_val0);
22282 }
22284}
22285template<>
22286void Hdf5Back::WriteToBuf<VL_MAP_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22287 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
22289 size_t item_size1key=shape[1];
22290 size_t valuelen1key;
22294 size_t item_size3valsecondelem=sizeof(double);
22298 unsigned int count0=0;
22299 std::map<std::string, std::pair<std::string, std::vector<double>>>::iterator it0=val0.begin();
22300 std::map<std::string, std::pair<std::string, std::vector<double>>> fixed_val0;
22301 unsigned int pad_count0=0;
22302 for(;it0!=val0.end();++it0){
22303 std::string child1key=std::string(it0->first,0,item_size1key);
22304 std::pair<std::string, std::vector<double>> child1val;
22305 unsigned int pad_count1val=0;
22306 child1val = std::make_pair(it0->second.first,it0->second.second);
22308 ++pad_count0;
22309
22310 }
22311 hasher_.Clear();
22312 hasher_.Update(fixed_val0);
22313 Digest key0 = hasher_.digest();
22316 if (vlkeys_[VL_MAP_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE].count(key0) != 1) {
22317 hvl_t buf0 = VLValToBuf(fixed_val0);
22320 }
22322}
22323template<>
22324void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22325 std::map<std::string, std::pair<std::string, std::vector<double>>> val0=a->cast<std::map<std::string, std::pair<std::string, std::vector<double>>>>();
22331 size_t item_size3valsecondelem=sizeof(double);
22335 hasher_.Clear();
22336 hasher_.Update(val0);
22337 Digest key0 = hasher_.digest();
22340 if (vlkeys_[VL_MAP_VL_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE].count(key0) != 1) {
22341 hvl_t buf0 = VLValToBuf(val0);
22344 }
22346}
22347template<>
22348void Hdf5Back::WriteToBuf<MAP_STRING_MAP_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22349 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22350 size_t item_size0=((shape[1]+((shape[3]+sizeof(int))*shape[2]))*shape[0]);
22351 size_t length0=shape[0];
22352 size_t item_size1key=shape[1];
22353 size_t valuelen1key;
22354 size_t item_size1val=((shape[3]+sizeof(int))*shape[2]);
22355 size_t length1val=shape[2];
22356 size_t item_size2valkey=shape[3];
22357 size_t valuelen2valkey;
22358 size_t item_size2valval=sizeof(int);
22361 if(total_item_size0*val0.size()>column){
22362 std::map<std::string, std::map<std::string, int>>::iterator eraseit=val0.begin();
22363 std::advance(eraseit, column/total_item_size0);
22364 val0.erase(eraseit,val0.end());
22365
22366 }
22367 unsigned int count0=0;
22368 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22369 for(;it0!=val0.end();++it0){
22370 valuelen1key=std::min(it0->first.size(), item_size1key);
22371 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
22373 unsigned int count1val=0;
22374 std::map<std::string, int>::iterator it1val=it0->second.begin();
22375 for(;it1val!=it0->second.end();++it1val){
22376 valuelen2valkey=std::min(it1val->first.size(), item_size2valkey);
22380 ++count1val;
22381
22382 }
22384 ++count0;
22385
22386 }
22389
22390 }
22391}
22392template<>
22393void Hdf5Back::WriteToBuf<MAP_STRING_MAP_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22394 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22395 size_t item_size0=((shape[1]+((CYCLUS_SHA1_SIZE+sizeof(int))*shape[2]))*shape[0]);
22396 size_t length0=shape[0];
22397 size_t item_size1key=shape[1];
22398 size_t valuelen1key;
22399 size_t item_size1val=((CYCLUS_SHA1_SIZE+sizeof(int))*shape[2]);
22400 size_t length1val=shape[2];
22402 size_t item_size2valval=sizeof(int);
22405 if(total_item_size0*val0.size()>column){
22406 std::map<std::string, std::map<std::string, int>>::iterator eraseit=val0.begin();
22407 std::advance(eraseit, column/total_item_size0);
22408 val0.erase(eraseit,val0.end());
22409
22410 }
22411 unsigned int count0=0;
22412 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22413 for(;it0!=val0.end();++it0){
22414 valuelen1key=std::min(it0->first.size(), item_size1key);
22415 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
22417 unsigned int count1val=0;
22418 std::map<std::string, int>::iterator it1val=it0->second.begin();
22419 for(;it1val!=it0->second.end();++it1val){
22420 hasher_.Clear();
22421 hasher_.Update(it1val->first);
22422 Digest key2valkey = hasher_.digest();
22423 hid_t keysds2valkey = VLDataset(VL_STRING, true);
22424 hid_t valsds2valkey = VLDataset(VL_STRING, false);
22425 if (vlkeys_[VL_STRING].count(key2valkey) != 1) {
22426 AppendVLKey(keysds2valkey, VL_STRING, key2valkey);
22427 InsertVLVal(valsds2valkey, VL_STRING, key2valkey, it1val->first);
22428 }
22431 ++count1val;
22432
22433 }
22435 ++count0;
22436
22437 }
22440
22441 }
22442}
22443template<>
22444void Hdf5Back::WriteToBuf<MAP_STRING_VL_MAP_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22445 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22446 size_t item_size0=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
22447 size_t length0=shape[0];
22448 size_t item_size1key=shape[1];
22449 size_t valuelen1key;
22451 size_t item_size2valkey=shape[3];
22452 size_t valuelen2valkey;
22453 size_t item_size2valval=sizeof(int);
22456 if(total_item_size0*val0.size()>column){
22457 std::map<std::string, std::map<std::string, int>>::iterator eraseit=val0.begin();
22458 std::advance(eraseit, column/total_item_size0);
22459 val0.erase(eraseit,val0.end());
22460
22461 }
22462 unsigned int count0=0;
22463 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22464 for(;it0!=val0.end();++it0){
22465 valuelen1key=std::min(it0->first.size(), item_size1key);
22466 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
22468 unsigned int count1val=0;
22469 std::map<std::string, int>::iterator it1val=it0->second.begin();
22470 std::map<std::string, int> fixed_val1val;
22471 unsigned int pad_count1val=0;
22472 for(;it1val!=it0->second.end();++it1val){
22473 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
22475 ++pad_count1val;
22476
22477 }
22478 hasher_.Clear();
22479 hasher_.Update(fixed_val1val);
22480 Digest key1val = hasher_.digest();
22481 hid_t keysds1val = VLDataset(VL_MAP_STRING_INT, true);
22482 hid_t valsds1val = VLDataset(VL_MAP_STRING_INT, false);
22483 if (vlkeys_[VL_MAP_STRING_INT].count(key1val) != 1) {
22484 hvl_t buf1val = VLValToBuf(fixed_val1val);
22485 AppendVLKey(keysds1val, VL_MAP_STRING_INT, key1val);
22487 }
22489 ++count0;
22490
22491 }
22494
22495 }
22496}
22497template<>
22498void Hdf5Back::WriteToBuf<MAP_STRING_VL_MAP_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22499 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22500 size_t item_size0=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
22501 size_t length0=shape[0];
22502 size_t item_size1key=shape[1];
22503 size_t valuelen1key;
22506 size_t item_size2valval=sizeof(int);
22509 if(total_item_size0*val0.size()>column){
22510 std::map<std::string, std::map<std::string, int>>::iterator eraseit=val0.begin();
22511 std::advance(eraseit, column/total_item_size0);
22512 val0.erase(eraseit,val0.end());
22513
22514 }
22515 unsigned int count0=0;
22516 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22517 for(;it0!=val0.end();++it0){
22518 valuelen1key=std::min(it0->first.size(), item_size1key);
22519 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
22521 hasher_.Clear();
22522 hasher_.Update(it0->second);
22523 Digest key1val = hasher_.digest();
22524 hid_t keysds1val = VLDataset(VL_MAP_VL_STRING_INT, true);
22525 hid_t valsds1val = VLDataset(VL_MAP_VL_STRING_INT, false);
22526 if (vlkeys_[VL_MAP_VL_STRING_INT].count(key1val) != 1) {
22527 hvl_t buf1val = VLValToBuf(it0->second);
22530 }
22532 ++count0;
22533
22534 }
22537
22538 }
22539}
22540template<>
22541void Hdf5Back::WriteToBuf<MAP_VL_STRING_MAP_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22542 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22543 size_t item_size0=((CYCLUS_SHA1_SIZE+((shape[3]+sizeof(int))*shape[2]))*shape[0]);
22544 size_t length0=shape[0];
22546 size_t item_size1val=((shape[3]+sizeof(int))*shape[2]);
22547 size_t length1val=shape[2];
22548 size_t item_size2valkey=shape[3];
22549 size_t valuelen2valkey;
22550 size_t item_size2valval=sizeof(int);
22553 if(total_item_size0*val0.size()>column){
22554 std::map<std::string, std::map<std::string, int>>::iterator eraseit=val0.begin();
22555 std::advance(eraseit, column/total_item_size0);
22556 val0.erase(eraseit,val0.end());
22557
22558 }
22559 unsigned int count0=0;
22560 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22561 for(;it0!=val0.end();++it0){
22562 hasher_.Clear();
22563 hasher_.Update(it0->first);
22564 Digest key1key = hasher_.digest();
22565 hid_t keysds1key = VLDataset(VL_STRING, true);
22566 hid_t valsds1key = VLDataset(VL_STRING, false);
22567 if (vlkeys_[VL_STRING].count(key1key) != 1) {
22568 AppendVLKey(keysds1key, VL_STRING, key1key);
22569 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
22570 }
22572 unsigned int count1val=0;
22573 std::map<std::string, int>::iterator it1val=it0->second.begin();
22574 for(;it1val!=it0->second.end();++it1val){
22575 valuelen2valkey=std::min(it1val->first.size(), item_size2valkey);
22579 ++count1val;
22580
22581 }
22583 ++count0;
22584
22585 }
22588
22589 }
22590}
22591template<>
22592void Hdf5Back::WriteToBuf<MAP_VL_STRING_VL_MAP_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22593 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22594 size_t item_size0=((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))*shape[0]);
22595 size_t length0=shape[0];
22598 size_t item_size2valkey=shape[3];
22599 size_t valuelen2valkey;
22600 size_t item_size2valval=sizeof(int);
22603 if(total_item_size0*val0.size()>column){
22604 std::map<std::string, std::map<std::string, int>>::iterator eraseit=val0.begin();
22605 std::advance(eraseit, column/total_item_size0);
22606 val0.erase(eraseit,val0.end());
22607
22608 }
22609 unsigned int count0=0;
22610 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22611 for(;it0!=val0.end();++it0){
22612 hasher_.Clear();
22613 hasher_.Update(it0->first);
22614 Digest key1key = hasher_.digest();
22615 hid_t keysds1key = VLDataset(VL_STRING, true);
22616 hid_t valsds1key = VLDataset(VL_STRING, false);
22617 if (vlkeys_[VL_STRING].count(key1key) != 1) {
22618 AppendVLKey(keysds1key, VL_STRING, key1key);
22619 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
22620 }
22622 unsigned int count1val=0;
22623 std::map<std::string, int>::iterator it1val=it0->second.begin();
22624 std::map<std::string, int> fixed_val1val;
22625 unsigned int pad_count1val=0;
22626 for(;it1val!=it0->second.end();++it1val){
22627 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
22629 ++pad_count1val;
22630
22631 }
22632 hasher_.Clear();
22633 hasher_.Update(fixed_val1val);
22634 Digest key1val = hasher_.digest();
22635 hid_t keysds1val = VLDataset(VL_MAP_STRING_INT, true);
22636 hid_t valsds1val = VLDataset(VL_MAP_STRING_INT, false);
22637 if (vlkeys_[VL_MAP_STRING_INT].count(key1val) != 1) {
22638 hvl_t buf1val = VLValToBuf(fixed_val1val);
22639 AppendVLKey(keysds1val, VL_MAP_STRING_INT, key1val);
22641 }
22643 ++count0;
22644
22645 }
22648
22649 }
22650}
22651template<>
22652void Hdf5Back::WriteToBuf<MAP_VL_STRING_MAP_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22653 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22654 size_t item_size0=((CYCLUS_SHA1_SIZE+((CYCLUS_SHA1_SIZE+sizeof(int))*shape[2]))*shape[0]);
22655 size_t length0=shape[0];
22657 size_t item_size1val=((CYCLUS_SHA1_SIZE+sizeof(int))*shape[2]);
22658 size_t length1val=shape[2];
22660 size_t item_size2valval=sizeof(int);
22663 if(total_item_size0*val0.size()>column){
22664 std::map<std::string, std::map<std::string, int>>::iterator eraseit=val0.begin();
22665 std::advance(eraseit, column/total_item_size0);
22666 val0.erase(eraseit,val0.end());
22667
22668 }
22669 unsigned int count0=0;
22670 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22671 for(;it0!=val0.end();++it0){
22672 hasher_.Clear();
22673 hasher_.Update(it0->first);
22674 Digest key1key = hasher_.digest();
22675 hid_t keysds1key = VLDataset(VL_STRING, true);
22676 hid_t valsds1key = VLDataset(VL_STRING, false);
22677 if (vlkeys_[VL_STRING].count(key1key) != 1) {
22678 AppendVLKey(keysds1key, VL_STRING, key1key);
22679 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
22680 }
22682 unsigned int count1val=0;
22683 std::map<std::string, int>::iterator it1val=it0->second.begin();
22684 for(;it1val!=it0->second.end();++it1val){
22685 hasher_.Clear();
22686 hasher_.Update(it1val->first);
22687 Digest key2valkey = hasher_.digest();
22688 hid_t keysds2valkey = VLDataset(VL_STRING, true);
22689 hid_t valsds2valkey = VLDataset(VL_STRING, false);
22690 if (vlkeys_[VL_STRING].count(key2valkey) != 1) {
22691 AppendVLKey(keysds2valkey, VL_STRING, key2valkey);
22692 InsertVLVal(valsds2valkey, VL_STRING, key2valkey, it1val->first);
22693 }
22696 ++count1val;
22697
22698 }
22700 ++count0;
22701
22702 }
22705
22706 }
22707}
22708template<>
22709void Hdf5Back::WriteToBuf<MAP_VL_STRING_VL_MAP_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22710 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22711 size_t item_size0=((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))*shape[0]);
22712 size_t length0=shape[0];
22716 size_t item_size2valval=sizeof(int);
22719 if(total_item_size0*val0.size()>column){
22720 std::map<std::string, std::map<std::string, int>>::iterator eraseit=val0.begin();
22721 std::advance(eraseit, column/total_item_size0);
22722 val0.erase(eraseit,val0.end());
22723
22724 }
22725 unsigned int count0=0;
22726 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22727 for(;it0!=val0.end();++it0){
22728 hasher_.Clear();
22729 hasher_.Update(it0->first);
22730 Digest key1key = hasher_.digest();
22731 hid_t keysds1key = VLDataset(VL_STRING, true);
22732 hid_t valsds1key = VLDataset(VL_STRING, false);
22733 if (vlkeys_[VL_STRING].count(key1key) != 1) {
22734 AppendVLKey(keysds1key, VL_STRING, key1key);
22735 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
22736 }
22738 hasher_.Clear();
22739 hasher_.Update(it0->second);
22740 Digest key1val = hasher_.digest();
22741 hid_t keysds1val = VLDataset(VL_MAP_VL_STRING_INT, true);
22742 hid_t valsds1val = VLDataset(VL_MAP_VL_STRING_INT, false);
22743 if (vlkeys_[VL_MAP_VL_STRING_INT].count(key1val) != 1) {
22744 hvl_t buf1val = VLValToBuf(it0->second);
22747 }
22749 ++count0;
22750
22751 }
22754
22755 }
22756}
22757template<>
22758void Hdf5Back::WriteToBuf<VL_MAP_STRING_MAP_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22759 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22761 size_t item_size1key=shape[1];
22762 size_t valuelen1key;
22763 size_t item_size1val=((shape[3]+sizeof(int))*shape[2]);
22764 size_t length1val=shape[2];
22765 size_t item_size2valkey=shape[3];
22766 size_t valuelen2valkey;
22767 size_t item_size2valval=sizeof(int);
22770 unsigned int count0=0;
22771 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22772 std::map<std::string, std::map<std::string, int>> fixed_val0;
22773 unsigned int pad_count0=0;
22774 for(;it0!=val0.end();++it0){
22775 std::string child1key=std::string(it0->first,0,item_size1key);
22776 std::map<std::string, int> child1val;
22777 unsigned int pad_count1val=0;
22778 std::map<std::string, int>::iterator it1val=it0->second.begin();
22779 for(;it1val!=it0->second.end();++it1val){
22780 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
22781 child1val[child2valkey] = it1val->second;
22782 ++pad_count1val;
22783
22784 }
22786 ++pad_count0;
22787
22788 }
22789 hasher_.Clear();
22790 hasher_.Update(fixed_val0);
22791 Digest key0 = hasher_.digest();
22792 hid_t keysds0 = VLDataset(VL_MAP_STRING_MAP_STRING_INT, true);
22793 hid_t valsds0 = VLDataset(VL_MAP_STRING_MAP_STRING_INT, false);
22794 if (vlkeys_[VL_MAP_STRING_MAP_STRING_INT].count(key0) != 1) {
22795 hvl_t buf0 = VLValToBuf(fixed_val0);
22798 }
22800}
22801template<>
22802void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_MAP_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22803 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22806 size_t item_size1val=((shape[3]+sizeof(int))*shape[2]);
22807 size_t length1val=shape[2];
22808 size_t item_size2valkey=shape[3];
22809 size_t valuelen2valkey;
22810 size_t item_size2valval=sizeof(int);
22813 unsigned int count0=0;
22814 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22815 std::map<std::string, std::map<std::string, int>> fixed_val0;
22816 unsigned int pad_count0=0;
22817 for(;it0!=val0.end();++it0){
22818 std::map<std::string, int> child1val;
22819 unsigned int pad_count1val=0;
22820 std::map<std::string, int>::iterator it1val=it0->second.begin();
22821 for(;it1val!=it0->second.end();++it1val){
22822 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
22823 child1val[child2valkey] = it1val->second;
22824 ++pad_count1val;
22825
22826 }
22827 fixed_val0[it0->first] = child1val;
22828 ++pad_count0;
22829
22830 }
22831 hasher_.Clear();
22832 hasher_.Update(fixed_val0);
22833 Digest key0 = hasher_.digest();
22835 hid_t valsds0 = VLDataset(VL_MAP_VL_STRING_MAP_STRING_INT, false);
22836 if (vlkeys_[VL_MAP_VL_STRING_MAP_STRING_INT].count(key0) != 1) {
22837 hvl_t buf0 = VLValToBuf(fixed_val0);
22840 }
22842}
22843template<>
22844void Hdf5Back::WriteToBuf<VL_MAP_STRING_VL_MAP_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22845 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22847 size_t item_size1key=shape[1];
22848 size_t valuelen1key;
22850 size_t item_size2valkey=shape[3];
22851 size_t valuelen2valkey;
22852 size_t item_size2valval=sizeof(int);
22855 unsigned int count0=0;
22856 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22857 std::map<std::string, std::map<std::string, int>> fixed_val0;
22858 unsigned int pad_count0=0;
22859 for(;it0!=val0.end();++it0){
22860 std::string child1key=std::string(it0->first,0,item_size1key);
22861 std::map<std::string, int> child1val;
22862 unsigned int pad_count1val=0;
22863 std::map<std::string, int>::iterator it1val=it0->second.begin();
22864 for(;it1val!=it0->second.end();++it1val){
22865 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
22866 child1val[child2valkey] = it1val->second;
22867 ++pad_count1val;
22868
22869 }
22871 ++pad_count0;
22872
22873 }
22874 hasher_.Clear();
22875 hasher_.Update(fixed_val0);
22876 Digest key0 = hasher_.digest();
22878 hid_t valsds0 = VLDataset(VL_MAP_STRING_VL_MAP_STRING_INT, false);
22879 if (vlkeys_[VL_MAP_STRING_VL_MAP_STRING_INT].count(key0) != 1) {
22880 hvl_t buf0 = VLValToBuf(fixed_val0);
22883 }
22885}
22886template<>
22887void Hdf5Back::WriteToBuf<VL_MAP_STRING_MAP_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22888 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22890 size_t item_size1key=shape[1];
22891 size_t valuelen1key;
22892 size_t item_size1val=((CYCLUS_SHA1_SIZE+sizeof(int))*shape[2]);
22893 size_t length1val=shape[2];
22895 size_t item_size2valval=sizeof(int);
22898 unsigned int count0=0;
22899 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22900 std::map<std::string, std::map<std::string, int>> fixed_val0;
22901 unsigned int pad_count0=0;
22902 for(;it0!=val0.end();++it0){
22903 std::string child1key=std::string(it0->first,0,item_size1key);
22904 std::map<std::string, int> child1val;
22905 unsigned int pad_count1val=0;
22906 std::map<std::string, int>::iterator it1val=it0->second.begin();
22907 for(;it1val!=it0->second.end();++it1val){
22908 child1val[it1val->first] = it1val->second;
22909 ++pad_count1val;
22910
22911 }
22913 ++pad_count0;
22914
22915 }
22916 hasher_.Clear();
22917 hasher_.Update(fixed_val0);
22918 Digest key0 = hasher_.digest();
22920 hid_t valsds0 = VLDataset(VL_MAP_STRING_MAP_VL_STRING_INT, false);
22921 if (vlkeys_[VL_MAP_STRING_MAP_VL_STRING_INT].count(key0) != 1) {
22922 hvl_t buf0 = VLValToBuf(fixed_val0);
22925 }
22927}
22928template<>
22929void Hdf5Back::WriteToBuf<VL_MAP_STRING_VL_MAP_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22930 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22932 size_t item_size1key=shape[1];
22933 size_t valuelen1key;
22936 size_t item_size2valval=sizeof(int);
22939 unsigned int count0=0;
22940 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22941 std::map<std::string, std::map<std::string, int>> fixed_val0;
22942 unsigned int pad_count0=0;
22943 for(;it0!=val0.end();++it0){
22944 std::string child1key=std::string(it0->first,0,item_size1key);
22945 fixed_val0[child1key] = it0->second;
22946 ++pad_count0;
22947
22948 }
22949 hasher_.Clear();
22950 hasher_.Update(fixed_val0);
22951 Digest key0 = hasher_.digest();
22954 if (vlkeys_[VL_MAP_STRING_VL_MAP_VL_STRING_INT].count(key0) != 1) {
22955 hvl_t buf0 = VLValToBuf(fixed_val0);
22958 }
22960}
22961template<>
22962void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_MAP_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
22963 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
22966 size_t item_size1val=((CYCLUS_SHA1_SIZE+sizeof(int))*shape[2]);
22967 size_t length1val=shape[2];
22969 size_t item_size2valval=sizeof(int);
22972 unsigned int count0=0;
22973 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
22974 std::map<std::string, std::map<std::string, int>> fixed_val0;
22975 unsigned int pad_count0=0;
22976 for(;it0!=val0.end();++it0){
22977 std::map<std::string, int> child1val;
22978 unsigned int pad_count1val=0;
22979 std::map<std::string, int>::iterator it1val=it0->second.begin();
22980 for(;it1val!=it0->second.end();++it1val){
22981 child1val[it1val->first] = it1val->second;
22982 ++pad_count1val;
22983
22984 }
22985 fixed_val0[it0->first] = child1val;
22986 ++pad_count0;
22987
22988 }
22989 hasher_.Clear();
22990 hasher_.Update(fixed_val0);
22991 Digest key0 = hasher_.digest();
22994 if (vlkeys_[VL_MAP_VL_STRING_MAP_VL_STRING_INT].count(key0) != 1) {
22995 hvl_t buf0 = VLValToBuf(fixed_val0);
22998 }
23000}
23001template<>
23002void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VL_MAP_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23003 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
23007 size_t item_size2valkey=shape[3];
23008 size_t valuelen2valkey;
23009 size_t item_size2valval=sizeof(int);
23012 unsigned int count0=0;
23013 std::map<std::string, std::map<std::string, int>>::iterator it0=val0.begin();
23014 std::map<std::string, std::map<std::string, int>> fixed_val0;
23015 unsigned int pad_count0=0;
23016 for(;it0!=val0.end();++it0){
23017 std::map<std::string, int> child1val;
23018 unsigned int pad_count1val=0;
23019 std::map<std::string, int>::iterator it1val=it0->second.begin();
23020 for(;it1val!=it0->second.end();++it1val){
23021 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
23022 child1val[child2valkey] = it1val->second;
23023 ++pad_count1val;
23024
23025 }
23026 fixed_val0[it0->first] = child1val;
23027 ++pad_count0;
23028
23029 }
23030 hasher_.Clear();
23031 hasher_.Update(fixed_val0);
23032 Digest key0 = hasher_.digest();
23035 if (vlkeys_[VL_MAP_VL_STRING_VL_MAP_STRING_INT].count(key0) != 1) {
23036 hvl_t buf0 = VLValToBuf(fixed_val0);
23039 }
23041}
23042template<>
23043void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VL_MAP_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23044 std::map<std::string, std::map<std::string, int>> val0=a->cast<std::map<std::string, std::map<std::string, int>>>();
23049 size_t item_size2valval=sizeof(int);
23052 hasher_.Clear();
23053 hasher_.Update(val0);
23054 Digest key0 = hasher_.digest();
23057 if (vlkeys_[VL_MAP_VL_STRING_VL_MAP_VL_STRING_INT].count(key0) != 1) {
23058 hvl_t buf0 = VLValToBuf(val0);
23061 }
23063}
23064template<>
23065void Hdf5Back::WriteToBuf<VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23066 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> val0=a->cast<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>();
23067 size_t item_size0=((((((sizeof(double)+sizeof(double)))+((shape[6]+sizeof(double))*shape[5]))))*shape[0]);
23068 size_t length0=shape[0];
23069 size_t item_size1elem=((((sizeof(double)+sizeof(double)))+((shape[6]+sizeof(double))*shape[5])));
23070 size_t item_size2elemfirst=((sizeof(double)+sizeof(double)));
23071 size_t item_size3elemfirstfirst=sizeof(double);
23072 size_t item_size3elemfirstsecond=sizeof(double);
23074 size_t item_size2elemsecond=((shape[6]+sizeof(double))*shape[5]);
23075 size_t length2elemsecond=shape[5];
23076 size_t item_size3elemsecondkey=shape[6];
23078 size_t item_size3elemsecondval=sizeof(double);
23082 if(total_item_size0*val0.size()>column){
23083 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::iterator eraseit=val0.begin();
23084 std::advance(eraseit, column/total_item_size0);
23085 val0.erase(eraseit,val0.end());
23086
23087 }
23088 unsigned int count0=0;
23089 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::iterator it0=val0.begin();
23090 for(;it0!=val0.end();++it0){
23091 unsigned int count1elem=0;
23092 unsigned int count2elemfirst=0;
23095 unsigned int count2elemsecond=0;
23096 std::map<std::string, double>::iterator it2elemsecond=it0->second.begin();
23097 for(;it2elemsecond!=it0->second.end();++it2elemsecond){
23103
23104 }
23106 ++count0;
23107
23108 }
23111
23112 }
23113}
23114template<>
23115void Hdf5Back::WriteToBuf<VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23116 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> val0=a->cast<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>();
23117 size_t item_size0=((((((sizeof(double)+sizeof(double)))+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[5]))))*shape[0]);
23118 size_t length0=shape[0];
23119 size_t item_size1elem=((((sizeof(double)+sizeof(double)))+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[5])));
23120 size_t item_size2elemfirst=((sizeof(double)+sizeof(double)));
23121 size_t item_size3elemfirstfirst=sizeof(double);
23122 size_t item_size3elemfirstsecond=sizeof(double);
23124 size_t item_size2elemsecond=((CYCLUS_SHA1_SIZE+sizeof(double))*shape[5]);
23125 size_t length2elemsecond=shape[5];
23127 size_t item_size3elemsecondval=sizeof(double);
23131 if(total_item_size0*val0.size()>column){
23132 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::iterator eraseit=val0.begin();
23133 std::advance(eraseit, column/total_item_size0);
23134 val0.erase(eraseit,val0.end());
23135
23136 }
23137 unsigned int count0=0;
23138 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::iterator it0=val0.begin();
23139 for(;it0!=val0.end();++it0){
23140 unsigned int count1elem=0;
23141 unsigned int count2elemfirst=0;
23144 unsigned int count2elemsecond=0;
23145 std::map<std::string, double>::iterator it2elemsecond=it0->second.begin();
23146 for(;it2elemsecond!=it0->second.end();++it2elemsecond){
23147 hasher_.Clear();
23148 hasher_.Update(it2elemsecond->first);
23149 Digest key3elemsecondkey = hasher_.digest();
23150 hid_t keysds3elemsecondkey = VLDataset(VL_STRING, true);
23151 hid_t valsds3elemsecondkey = VLDataset(VL_STRING, false);
23152 if (vlkeys_[VL_STRING].count(key3elemsecondkey) != 1) {
23155 }
23159
23160 }
23162 ++count0;
23163
23164 }
23167
23168 }
23169}
23170template<>
23171void Hdf5Back::WriteToBuf<VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23172 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> val0=a->cast<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>();
23173 size_t item_size0=((((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE))))*shape[0]);
23174 size_t length0=shape[0];
23175 size_t item_size1elem=((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE)));
23176 size_t item_size2elemfirst=((sizeof(double)+sizeof(double)));
23177 size_t item_size3elemfirstfirst=sizeof(double);
23178 size_t item_size3elemfirstsecond=sizeof(double);
23181 size_t item_size3elemsecondkey=shape[6];
23183 size_t item_size3elemsecondval=sizeof(double);
23187 if(total_item_size0*val0.size()>column){
23188 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::iterator eraseit=val0.begin();
23189 std::advance(eraseit, column/total_item_size0);
23190 val0.erase(eraseit,val0.end());
23191
23192 }
23193 unsigned int count0=0;
23194 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::iterator it0=val0.begin();
23195 for(;it0!=val0.end();++it0){
23196 unsigned int count1elem=0;
23197 unsigned int count2elemfirst=0;
23200 unsigned int count2elemsecond=0;
23201 std::map<std::string, double>::iterator it2elemsecond=it0->second.begin();
23202 std::map<std::string, double> fixed_val2elemsecond;
23203 unsigned int pad_count2elemsecond=0;
23204 for(;it2elemsecond!=it0->second.end();++it2elemsecond){
23205 std::string child3elemsecondkey=std::string(it2elemsecond->first,0,item_size3elemsecondkey);
23208
23209 }
23210 hasher_.Clear();
23212 Digest key2elemsecond = hasher_.digest();
23213 hid_t keysds2elemsecond = VLDataset(VL_MAP_STRING_DOUBLE, true);
23214 hid_t valsds2elemsecond = VLDataset(VL_MAP_STRING_DOUBLE, false);
23215 if (vlkeys_[VL_MAP_STRING_DOUBLE].count(key2elemsecond) != 1) {
23219 }
23221 ++count0;
23222
23223 }
23226
23227 }
23228}
23229template<>
23230void Hdf5Back::WriteToBuf<VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23231 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> val0=a->cast<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>();
23232 size_t item_size0=((((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE))))*shape[0]);
23233 size_t length0=shape[0];
23234 size_t item_size1elem=((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE)));
23235 size_t item_size2elemfirst=((sizeof(double)+sizeof(double)));
23236 size_t item_size3elemfirstfirst=sizeof(double);
23237 size_t item_size3elemfirstsecond=sizeof(double);
23241 size_t item_size3elemsecondval=sizeof(double);
23245 if(total_item_size0*val0.size()>column){
23246 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::iterator eraseit=val0.begin();
23247 std::advance(eraseit, column/total_item_size0);
23248 val0.erase(eraseit,val0.end());
23249
23250 }
23251 unsigned int count0=0;
23252 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::iterator it0=val0.begin();
23253 for(;it0!=val0.end();++it0){
23254 unsigned int count1elem=0;
23255 unsigned int count2elemfirst=0;
23258 hasher_.Clear();
23259 hasher_.Update(it0->second);
23260 Digest key2elemsecond = hasher_.digest();
23263 if (vlkeys_[VL_MAP_VL_STRING_DOUBLE].count(key2elemsecond) != 1) {
23264 hvl_t buf2elemsecond = VLValToBuf(it0->second);
23267 }
23269 ++count0;
23270
23271 }
23274
23275 }
23276}
23277template<>
23278void Hdf5Back::WriteToBuf<VL_VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23279 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> val0=a->cast<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>();
23281 size_t item_size1elem=((((sizeof(double)+sizeof(double)))+((shape[6]+sizeof(double))*shape[5])));
23282 size_t item_size2elemfirst=((sizeof(double)+sizeof(double)));
23283 size_t item_size3elemfirstfirst=sizeof(double);
23284 size_t item_size3elemfirstsecond=sizeof(double);
23286 size_t item_size2elemsecond=((shape[6]+sizeof(double))*shape[5]);
23287 size_t length2elemsecond=shape[5];
23288 size_t item_size3elemsecondkey=shape[6];
23290 size_t item_size3elemsecondval=sizeof(double);
23294 unsigned int count0=0;
23295 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::iterator it0=val0.begin();
23296 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> fixed_val0;
23297 unsigned int pad_count0=0;
23298 for(;it0!=val0.end();++it0){
23299 std::pair<std::pair<double, double>, std::map<std::string, double>> child1elem;
23300 unsigned int pad_count1elem=0;
23301 std::pair<double, double> child2elemfirst;
23302 unsigned int pad_count2elemfirst=0;
23303 child2elemfirst = std::make_pair((*it0).first.first,(*it0).first.second);
23304 std::map<std::string, double> child2elemsecond;
23305 unsigned int pad_count2elemsecond=0;
23306 std::map<std::string, double>::iterator it2elemsecond=(*it0).second.begin();
23307 for(;it2elemsecond!=(*it0).second.end();++it2elemsecond){
23308 std::string child3elemsecondkey=std::string(it2elemsecond->first,0,item_size3elemsecondkey);
23311
23312 }
23314 fixed_val0.push_back(child1elem);
23315 ++pad_count0;
23316
23317 }
23318 hasher_.Clear();
23319 hasher_.Update(fixed_val0);
23320 Digest key0 = hasher_.digest();
23324 hvl_t buf0 = VLValToBuf(fixed_val0);
23327 }
23329}
23330template<>
23331void Hdf5Back::WriteToBuf<VL_VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23332 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> val0=a->cast<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>();
23334 size_t item_size1elem=((((sizeof(double)+sizeof(double)))+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[5])));
23335 size_t item_size2elemfirst=((sizeof(double)+sizeof(double)));
23336 size_t item_size3elemfirstfirst=sizeof(double);
23337 size_t item_size3elemfirstsecond=sizeof(double);
23339 size_t item_size2elemsecond=((CYCLUS_SHA1_SIZE+sizeof(double))*shape[5]);
23340 size_t length2elemsecond=shape[5];
23342 size_t item_size3elemsecondval=sizeof(double);
23346 unsigned int count0=0;
23347 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::iterator it0=val0.begin();
23348 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> fixed_val0;
23349 unsigned int pad_count0=0;
23350 for(;it0!=val0.end();++it0){
23351 std::pair<std::pair<double, double>, std::map<std::string, double>> child1elem;
23352 unsigned int pad_count1elem=0;
23353 std::pair<double, double> child2elemfirst;
23354 unsigned int pad_count2elemfirst=0;
23355 child2elemfirst = std::make_pair((*it0).first.first,(*it0).first.second);
23356 std::map<std::string, double> child2elemsecond;
23357 unsigned int pad_count2elemsecond=0;
23358 std::map<std::string, double>::iterator it2elemsecond=(*it0).second.begin();
23359 for(;it2elemsecond!=(*it0).second.end();++it2elemsecond){
23362
23363 }
23365 fixed_val0.push_back(child1elem);
23366 ++pad_count0;
23367
23368 }
23369 hasher_.Clear();
23370 hasher_.Update(fixed_val0);
23371 Digest key0 = hasher_.digest();
23375 hvl_t buf0 = VLValToBuf(fixed_val0);
23378 }
23380}
23381template<>
23382void Hdf5Back::WriteToBuf<VL_VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23383 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> val0=a->cast<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>();
23385 size_t item_size1elem=((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE)));
23386 size_t item_size2elemfirst=((sizeof(double)+sizeof(double)));
23387 size_t item_size3elemfirstfirst=sizeof(double);
23388 size_t item_size3elemfirstsecond=sizeof(double);
23391 size_t item_size3elemsecondkey=shape[6];
23393 size_t item_size3elemsecondval=sizeof(double);
23397 unsigned int count0=0;
23398 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::iterator it0=val0.begin();
23399 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> fixed_val0;
23400 unsigned int pad_count0=0;
23401 for(;it0!=val0.end();++it0){
23402 std::pair<std::pair<double, double>, std::map<std::string, double>> child1elem;
23403 unsigned int pad_count1elem=0;
23404 std::pair<double, double> child2elemfirst;
23405 unsigned int pad_count2elemfirst=0;
23406 child2elemfirst = std::make_pair((*it0).first.first,(*it0).first.second);
23407 std::map<std::string, double> child2elemsecond;
23408 unsigned int pad_count2elemsecond=0;
23409 std::map<std::string, double>::iterator it2elemsecond=(*it0).second.begin();
23410 for(;it2elemsecond!=(*it0).second.end();++it2elemsecond){
23411 std::string child3elemsecondkey=std::string(it2elemsecond->first,0,item_size3elemsecondkey);
23414
23415 }
23417 fixed_val0.push_back(child1elem);
23418 ++pad_count0;
23419
23420 }
23421 hasher_.Clear();
23422 hasher_.Update(fixed_val0);
23423 Digest key0 = hasher_.digest();
23427 hvl_t buf0 = VLValToBuf(fixed_val0);
23430 }
23432}
23433template<>
23434void Hdf5Back::WriteToBuf<VL_VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23435 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> val0=a->cast<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>();
23437 size_t item_size1elem=((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE)));
23438 size_t item_size2elemfirst=((sizeof(double)+sizeof(double)));
23439 size_t item_size3elemfirstfirst=sizeof(double);
23440 size_t item_size3elemfirstsecond=sizeof(double);
23444 size_t item_size3elemsecondval=sizeof(double);
23448 hasher_.Clear();
23449 hasher_.Update(val0);
23450 Digest key0 = hasher_.digest();
23454 hvl_t buf0 = VLValToBuf(val0);
23457 }
23459}
23460template<>
23461void Hdf5Back::WriteToBuf<PAIR_INT_PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23462 std::pair<int, std::pair<std::string, std::string>> val0=a->cast<std::pair<int, std::pair<std::string, std::string>>>();
23463 size_t item_size0=((sizeof(int)+((shape[3]+shape[4]))));
23464 size_t item_size1first=sizeof(int);
23465 size_t item_size1second=((shape[3]+shape[4]));
23466 size_t item_size2secondfirst=shape[3];
23467 size_t valuelen2secondfirst;
23468 size_t item_size2secondsecond=shape[4];
23469 size_t valuelen2secondsecond;
23472 unsigned int count0=0;
23474 unsigned int count1second=0;
23475 valuelen2secondfirst=std::min(val0.second.first.size(), item_size2secondfirst);
23478 valuelen2secondsecond=std::min(val0.second.second.size(), item_size2secondsecond);
23481}
23482template<>
23483void Hdf5Back::WriteToBuf<PAIR_INT_PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23484 std::pair<int, std::pair<std::string, std::string>> val0=a->cast<std::pair<int, std::pair<std::string, std::string>>>();
23485 size_t item_size0=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[4]))));
23486 size_t item_size1first=sizeof(int);
23487 size_t item_size1second=((CYCLUS_SHA1_SIZE+shape[4]));
23489 size_t item_size2secondsecond=shape[4];
23490 size_t valuelen2secondsecond;
23493 unsigned int count0=0;
23495 unsigned int count1second=0;
23496 hasher_.Clear();
23497 hasher_.Update(val0.second.first);
23498 Digest key2secondfirst = hasher_.digest();
23499 hid_t keysds2secondfirst = VLDataset(VL_STRING, true);
23500 hid_t valsds2secondfirst = VLDataset(VL_STRING, false);
23501 if (vlkeys_[VL_STRING].count(key2secondfirst) != 1) {
23503 InsertVLVal(valsds2secondfirst, VL_STRING, key2secondfirst, val0.second.first);
23504 }
23506 valuelen2secondsecond=std::min(val0.second.second.size(), item_size2secondsecond);
23509}
23510template<>
23511void Hdf5Back::WriteToBuf<PAIR_INT_PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23512 std::pair<int, std::pair<std::string, std::string>> val0=a->cast<std::pair<int, std::pair<std::string, std::string>>>();
23513 size_t item_size0=((sizeof(int)+((shape[3]+CYCLUS_SHA1_SIZE))));
23514 size_t item_size1first=sizeof(int);
23515 size_t item_size1second=((shape[3]+CYCLUS_SHA1_SIZE));
23516 size_t item_size2secondfirst=shape[3];
23517 size_t valuelen2secondfirst;
23521 unsigned int count0=0;
23523 unsigned int count1second=0;
23524 valuelen2secondfirst=std::min(val0.second.first.size(), item_size2secondfirst);
23527 hasher_.Clear();
23528 hasher_.Update(val0.second.second);
23529 Digest key2secondsecond = hasher_.digest();
23530 hid_t keysds2secondsecond = VLDataset(VL_STRING, true);
23531 hid_t valsds2secondsecond = VLDataset(VL_STRING, false);
23532 if (vlkeys_[VL_STRING].count(key2secondsecond) != 1) {
23534 InsertVLVal(valsds2secondsecond, VL_STRING, key2secondsecond, val0.second.second);
23535 }
23537}
23538template<>
23539void Hdf5Back::WriteToBuf<PAIR_INT_PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23540 std::pair<int, std::pair<std::string, std::string>> val0=a->cast<std::pair<int, std::pair<std::string, std::string>>>();
23541 size_t item_size0=((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE))));
23542 size_t item_size1first=sizeof(int);
23548 unsigned int count0=0;
23550 unsigned int count1second=0;
23551 hasher_.Clear();
23552 hasher_.Update(val0.second.first);
23553 Digest key2secondfirst = hasher_.digest();
23554 hid_t keysds2secondfirst = VLDataset(VL_STRING, true);
23555 hid_t valsds2secondfirst = VLDataset(VL_STRING, false);
23556 if (vlkeys_[VL_STRING].count(key2secondfirst) != 1) {
23558 InsertVLVal(valsds2secondfirst, VL_STRING, key2secondfirst, val0.second.first);
23559 }
23561 hasher_.Clear();
23562 hasher_.Update(val0.second.second);
23563 Digest key2secondsecond = hasher_.digest();
23564 hid_t keysds2secondsecond = VLDataset(VL_STRING, true);
23565 hid_t valsds2secondsecond = VLDataset(VL_STRING, false);
23566 if (vlkeys_[VL_STRING].count(key2secondsecond) != 1) {
23568 InsertVLVal(valsds2secondsecond, VL_STRING, key2secondsecond, val0.second.second);
23569 }
23571}
23572template<>
23573void Hdf5Back::WriteToBuf<PAIR_DOUBLE_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23574 std::pair<double, double> val0=a->cast<std::pair<double, double>>();
23575 size_t item_size0=((sizeof(double)+sizeof(double)));
23576 size_t item_size1first=sizeof(double);
23577 size_t item_size1second=sizeof(double);
23579 unsigned int count0=0;
23582}
23583template<>
23584void Hdf5Back::WriteToBuf<PAIR_PAIR_DOUBLE_DOUBLE_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23585 std::pair<std::pair<double, double>, std::map<std::string, double>> val0=a->cast<std::pair<std::pair<double, double>, std::map<std::string, double>>>();
23586 size_t item_size0=((((sizeof(double)+sizeof(double)))+((shape[5]+sizeof(double))*shape[4])));
23587 size_t item_size1first=((sizeof(double)+sizeof(double)));
23588 size_t item_size2firstfirst=sizeof(double);
23589 size_t item_size2firstsecond=sizeof(double);
23591 size_t item_size1second=((shape[5]+sizeof(double))*shape[4]);
23592 size_t length1second=shape[4];
23593 size_t item_size2secondkey=shape[5];
23594 size_t valuelen2secondkey;
23595 size_t item_size2secondval=sizeof(double);
23598 unsigned int count0=0;
23599 unsigned int count1first=0;
23602 unsigned int count1second=0;
23603 std::map<std::string, double>::iterator it1second=val0.second.begin();
23604 for(;it1second!=val0.second.end();++it1second){
23605 valuelen2secondkey=std::min(it1second->first.size(), item_size2secondkey);
23609 ++count1second;
23610
23611 }
23613}
23614template<>
23615void Hdf5Back::WriteToBuf<PAIR_PAIR_DOUBLE_DOUBLE_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23616 std::pair<std::pair<double, double>, std::map<std::string, double>> val0=a->cast<std::pair<std::pair<double, double>, std::map<std::string, double>>>();
23617 size_t item_size0=((((sizeof(double)+sizeof(double)))+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[4])));
23618 size_t item_size1first=((sizeof(double)+sizeof(double)));
23619 size_t item_size2firstfirst=sizeof(double);
23620 size_t item_size2firstsecond=sizeof(double);
23622 size_t item_size1second=((CYCLUS_SHA1_SIZE+sizeof(double))*shape[4]);
23623 size_t length1second=shape[4];
23625 size_t item_size2secondval=sizeof(double);
23628 unsigned int count0=0;
23629 unsigned int count1first=0;
23632 unsigned int count1second=0;
23633 std::map<std::string, double>::iterator it1second=val0.second.begin();
23634 for(;it1second!=val0.second.end();++it1second){
23635 hasher_.Clear();
23636 hasher_.Update(it1second->first);
23637 Digest key2secondkey = hasher_.digest();
23638 hid_t keysds2secondkey = VLDataset(VL_STRING, true);
23639 hid_t valsds2secondkey = VLDataset(VL_STRING, false);
23640 if (vlkeys_[VL_STRING].count(key2secondkey) != 1) {
23642 InsertVLVal(valsds2secondkey, VL_STRING, key2secondkey, it1second->first);
23643 }
23646 ++count1second;
23647
23648 }
23650}
23651template<>
23652void Hdf5Back::WriteToBuf<PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23653 std::pair<std::pair<double, double>, std::map<std::string, double>> val0=a->cast<std::pair<std::pair<double, double>, std::map<std::string, double>>>();
23654 size_t item_size0=((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE)));
23655 size_t item_size1first=((sizeof(double)+sizeof(double)));
23656 size_t item_size2firstfirst=sizeof(double);
23657 size_t item_size2firstsecond=sizeof(double);
23660 size_t item_size2secondkey=shape[5];
23661 size_t valuelen2secondkey;
23662 size_t item_size2secondval=sizeof(double);
23665 unsigned int count0=0;
23666 unsigned int count1first=0;
23669 unsigned int count1second=0;
23670 std::map<std::string, double>::iterator it1second=val0.second.begin();
23671 std::map<std::string, double> fixed_val1second;
23672 unsigned int pad_count1second=0;
23673 for(;it1second!=val0.second.end();++it1second){
23674 std::string child2secondkey=std::string(it1second->first,0,item_size2secondkey);
23677
23678 }
23679 hasher_.Clear();
23680 hasher_.Update(fixed_val1second);
23681 Digest key1second = hasher_.digest();
23682 hid_t keysds1second = VLDataset(VL_MAP_STRING_DOUBLE, true);
23683 hid_t valsds1second = VLDataset(VL_MAP_STRING_DOUBLE, false);
23684 if (vlkeys_[VL_MAP_STRING_DOUBLE].count(key1second) != 1) {
23685 hvl_t buf1second = VLValToBuf(fixed_val1second);
23688 }
23690}
23691template<>
23692void Hdf5Back::WriteToBuf<PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23693 std::pair<std::pair<double, double>, std::map<std::string, double>> val0=a->cast<std::pair<std::pair<double, double>, std::map<std::string, double>>>();
23694 size_t item_size0=((((sizeof(double)+sizeof(double)))+(CYCLUS_SHA1_SIZE)));
23695 size_t item_size1first=((sizeof(double)+sizeof(double)));
23696 size_t item_size2firstfirst=sizeof(double);
23697 size_t item_size2firstsecond=sizeof(double);
23701 size_t item_size2secondval=sizeof(double);
23704 unsigned int count0=0;
23705 unsigned int count1first=0;
23708 hasher_.Clear();
23709 hasher_.Update(val0.second);
23710 Digest key1second = hasher_.digest();
23711 hid_t keysds1second = VLDataset(VL_MAP_VL_STRING_DOUBLE, true);
23712 hid_t valsds1second = VLDataset(VL_MAP_VL_STRING_DOUBLE, false);
23713 if (vlkeys_[VL_MAP_VL_STRING_DOUBLE].count(key1second) != 1) {
23714 hvl_t buf1second = VLValToBuf(val0.second);
23717 }
23719}
23720template<>
23721void Hdf5Back::WriteToBuf<PAIR_DOUBLE_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23722 std::pair<double, std::map<int, double>> val0=a->cast<std::pair<double, std::map<int, double>>>();
23723 size_t item_size0=((sizeof(double)+((sizeof(int)+sizeof(double))*shape[2])));
23724 size_t item_size1first=sizeof(double);
23725 size_t item_size1second=((sizeof(int)+sizeof(double))*shape[2]);
23726 size_t length1second=shape[2];
23727 size_t item_size2secondkey=sizeof(int);
23728 size_t item_size2secondval=sizeof(double);
23731 unsigned int count0=0;
23733 unsigned int count1second=0;
23734 std::map<int, double>::iterator it1second=val0.second.begin();
23735 for(;it1second!=val0.second.end();++it1second){
23738 ++count1second;
23739
23740 }
23742}
23743template<>
23744void Hdf5Back::WriteToBuf<PAIR_DOUBLE_VL_MAP_INT_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23745 std::pair<double, std::map<int, double>> val0=a->cast<std::pair<double, std::map<int, double>>>();
23746 size_t item_size0=((sizeof(double)+(CYCLUS_SHA1_SIZE)));
23747 size_t item_size1first=sizeof(double);
23749 size_t item_size2secondkey=sizeof(int);
23750 size_t item_size2secondval=sizeof(double);
23753 unsigned int count0=0;
23755 hasher_.Clear();
23756 hasher_.Update(val0.second);
23757 Digest key1second = hasher_.digest();
23758 hid_t keysds1second = VLDataset(VL_MAP_INT_DOUBLE, true);
23759 hid_t valsds1second = VLDataset(VL_MAP_INT_DOUBLE, false);
23760 if (vlkeys_[VL_MAP_INT_DOUBLE].count(key1second) != 1) {
23761 hvl_t buf1second = VLValToBuf(val0.second);
23764 }
23766}
23767template<>
23768void Hdf5Back::WriteToBuf<VECTOR_PAIR_INT_PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23769 std::vector<std::pair<int, std::pair<std::string, std::string>>> val0=a->cast<std::vector<std::pair<int, std::pair<std::string, std::string>>>>();
23770 size_t item_size0=((((sizeof(int)+((shape[4]+shape[5])))))*shape[0]);
23771 size_t length0=shape[0];
23772 size_t item_size1elem=((sizeof(int)+((shape[4]+shape[5]))));
23773 size_t item_size2elemfirst=sizeof(int);
23774 size_t item_size2elemsecond=((shape[4]+shape[5]));
23775 size_t item_size3elemsecondfirst=shape[4];
23777 size_t item_size3elemsecondsecond=shape[5];
23782 if(total_item_size0*val0.size()>column){
23783 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator eraseit=val0.begin();
23784 std::advance(eraseit, column/total_item_size0);
23785 val0.erase(eraseit,val0.end());
23786
23787 }
23788 unsigned int count0=0;
23789 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it0=val0.begin();
23790 for(;it0!=val0.end();++it0){
23791 unsigned int count1elem=0;
23793 unsigned int count2elemsecond=0;
23794 valuelen3elemsecondfirst=std::min(it0->second.first.size(), item_size3elemsecondfirst);
23797 valuelen3elemsecondsecond=std::min(it0->second.second.size(), item_size3elemsecondsecond);
23800 ++count0;
23801
23802 }
23805
23806 }
23807}
23808template<>
23809void Hdf5Back::WriteToBuf<VECTOR_PAIR_INT_PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23810 std::vector<std::pair<int, std::pair<std::string, std::string>>> val0=a->cast<std::vector<std::pair<int, std::pair<std::string, std::string>>>>();
23811 size_t item_size0=((((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[5])))))*shape[0]);
23812 size_t length0=shape[0];
23813 size_t item_size1elem=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[5]))));
23814 size_t item_size2elemfirst=sizeof(int);
23815 size_t item_size2elemsecond=((CYCLUS_SHA1_SIZE+shape[5]));
23817 size_t item_size3elemsecondsecond=shape[5];
23822 if(total_item_size0*val0.size()>column){
23823 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator eraseit=val0.begin();
23824 std::advance(eraseit, column/total_item_size0);
23825 val0.erase(eraseit,val0.end());
23826
23827 }
23828 unsigned int count0=0;
23829 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it0=val0.begin();
23830 for(;it0!=val0.end();++it0){
23831 unsigned int count1elem=0;
23833 unsigned int count2elemsecond=0;
23834 hasher_.Clear();
23835 hasher_.Update(it0->second.first);
23836 Digest key3elemsecondfirst = hasher_.digest();
23837 hid_t keysds3elemsecondfirst = VLDataset(VL_STRING, true);
23838 hid_t valsds3elemsecondfirst = VLDataset(VL_STRING, false);
23839 if (vlkeys_[VL_STRING].count(key3elemsecondfirst) != 1) {
23841 InsertVLVal(valsds3elemsecondfirst, VL_STRING, key3elemsecondfirst, it0->second.first);
23842 }
23844 valuelen3elemsecondsecond=std::min(it0->second.second.size(), item_size3elemsecondsecond);
23847 ++count0;
23848
23849 }
23852
23853 }
23854}
23855template<>
23856void Hdf5Back::WriteToBuf<VECTOR_PAIR_INT_PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23857 std::vector<std::pair<int, std::pair<std::string, std::string>>> val0=a->cast<std::vector<std::pair<int, std::pair<std::string, std::string>>>>();
23858 size_t item_size0=((((sizeof(int)+((shape[4]+CYCLUS_SHA1_SIZE)))))*shape[0]);
23859 size_t length0=shape[0];
23860 size_t item_size1elem=((sizeof(int)+((shape[4]+CYCLUS_SHA1_SIZE))));
23861 size_t item_size2elemfirst=sizeof(int);
23862 size_t item_size2elemsecond=((shape[4]+CYCLUS_SHA1_SIZE));
23863 size_t item_size3elemsecondfirst=shape[4];
23869 if(total_item_size0*val0.size()>column){
23870 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator eraseit=val0.begin();
23871 std::advance(eraseit, column/total_item_size0);
23872 val0.erase(eraseit,val0.end());
23873
23874 }
23875 unsigned int count0=0;
23876 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it0=val0.begin();
23877 for(;it0!=val0.end();++it0){
23878 unsigned int count1elem=0;
23880 unsigned int count2elemsecond=0;
23881 valuelen3elemsecondfirst=std::min(it0->second.first.size(), item_size3elemsecondfirst);
23884 hasher_.Clear();
23885 hasher_.Update(it0->second.second);
23886 Digest key3elemsecondsecond = hasher_.digest();
23887 hid_t keysds3elemsecondsecond = VLDataset(VL_STRING, true);
23888 hid_t valsds3elemsecondsecond = VLDataset(VL_STRING, false);
23889 if (vlkeys_[VL_STRING].count(key3elemsecondsecond) != 1) {
23891 InsertVLVal(valsds3elemsecondsecond, VL_STRING, key3elemsecondsecond, it0->second.second);
23892 }
23894 ++count0;
23895
23896 }
23899
23900 }
23901}
23902template<>
23903void Hdf5Back::WriteToBuf<VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23904 std::vector<std::pair<int, std::pair<std::string, std::string>>> val0=a->cast<std::vector<std::pair<int, std::pair<std::string, std::string>>>>();
23905 size_t item_size0=((((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE)))))*shape[0]);
23906 size_t length0=shape[0];
23907 size_t item_size1elem=((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE))));
23908 size_t item_size2elemfirst=sizeof(int);
23915 if(total_item_size0*val0.size()>column){
23916 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator eraseit=val0.begin();
23917 std::advance(eraseit, column/total_item_size0);
23918 val0.erase(eraseit,val0.end());
23919
23920 }
23921 unsigned int count0=0;
23922 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it0=val0.begin();
23923 for(;it0!=val0.end();++it0){
23924 unsigned int count1elem=0;
23926 unsigned int count2elemsecond=0;
23927 hasher_.Clear();
23928 hasher_.Update(it0->second.first);
23929 Digest key3elemsecondfirst = hasher_.digest();
23930 hid_t keysds3elemsecondfirst = VLDataset(VL_STRING, true);
23931 hid_t valsds3elemsecondfirst = VLDataset(VL_STRING, false);
23932 if (vlkeys_[VL_STRING].count(key3elemsecondfirst) != 1) {
23934 InsertVLVal(valsds3elemsecondfirst, VL_STRING, key3elemsecondfirst, it0->second.first);
23935 }
23937 hasher_.Clear();
23938 hasher_.Update(it0->second.second);
23939 Digest key3elemsecondsecond = hasher_.digest();
23940 hid_t keysds3elemsecondsecond = VLDataset(VL_STRING, true);
23941 hid_t valsds3elemsecondsecond = VLDataset(VL_STRING, false);
23942 if (vlkeys_[VL_STRING].count(key3elemsecondsecond) != 1) {
23944 InsertVLVal(valsds3elemsecondsecond, VL_STRING, key3elemsecondsecond, it0->second.second);
23945 }
23947 ++count0;
23948
23949 }
23952
23953 }
23954}
23955template<>
23956void Hdf5Back::WriteToBuf<VL_VECTOR_PAIR_INT_PAIR_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
23957 std::vector<std::pair<int, std::pair<std::string, std::string>>> val0=a->cast<std::vector<std::pair<int, std::pair<std::string, std::string>>>>();
23959 size_t item_size1elem=((sizeof(int)+((shape[4]+shape[5]))));
23960 size_t item_size2elemfirst=sizeof(int);
23961 size_t item_size2elemsecond=((shape[4]+shape[5]));
23962 size_t item_size3elemsecondfirst=shape[4];
23964 size_t item_size3elemsecondsecond=shape[5];
23969 unsigned int count0=0;
23970 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it0=val0.begin();
23971 std::vector<std::pair<int, std::pair<std::string, std::string>>> fixed_val0;
23972 unsigned int pad_count0=0;
23973 for(;it0!=val0.end();++it0){
23974 std::pair<int, std::pair<std::string, std::string>> child1elem;
23975 unsigned int pad_count1elem=0;
23976 std::pair<std::string, std::string> child2elemsecond;
23977 unsigned int pad_count2elemsecond=0;
23978 std::string child3elemsecondfirst=std::string((*it0).second.first,0,item_size3elemsecondfirst);
23979 std::string child3elemsecondsecond=std::string((*it0).second.second,0,item_size3elemsecondsecond);
23981 child1elem = std::make_pair((*it0).first,child2elemsecond);
23982 fixed_val0.push_back(child1elem);
23983 ++pad_count0;
23984
23985 }
23986 hasher_.Clear();
23987 hasher_.Update(fixed_val0);
23988 Digest key0 = hasher_.digest();
23991 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_STRING_STRING].count(key0) != 1) {
23992 hvl_t buf0 = VLValToBuf(fixed_val0);
23995 }
23997}
23998template<>
23999void Hdf5Back::WriteToBuf<VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24000 std::vector<std::pair<int, std::pair<std::string, std::string>>> val0=a->cast<std::vector<std::pair<int, std::pair<std::string, std::string>>>>();
24002 size_t item_size1elem=((sizeof(int)+((CYCLUS_SHA1_SIZE+shape[5]))));
24003 size_t item_size2elemfirst=sizeof(int);
24004 size_t item_size2elemsecond=((CYCLUS_SHA1_SIZE+shape[5]));
24006 size_t item_size3elemsecondsecond=shape[5];
24011 unsigned int count0=0;
24012 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it0=val0.begin();
24013 std::vector<std::pair<int, std::pair<std::string, std::string>>> fixed_val0;
24014 unsigned int pad_count0=0;
24015 for(;it0!=val0.end();++it0){
24016 std::pair<int, std::pair<std::string, std::string>> child1elem;
24017 unsigned int pad_count1elem=0;
24018 std::pair<std::string, std::string> child2elemsecond;
24019 unsigned int pad_count2elemsecond=0;
24020 std::string child3elemsecondsecond=std::string((*it0).second.second,0,item_size3elemsecondsecond);
24021 child2elemsecond = std::make_pair((*it0).second.first,child3elemsecondsecond);
24022 child1elem = std::make_pair((*it0).first,child2elemsecond);
24023 fixed_val0.push_back(child1elem);
24024 ++pad_count0;
24025
24026 }
24027 hasher_.Clear();
24028 hasher_.Update(fixed_val0);
24029 Digest key0 = hasher_.digest();
24032 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING].count(key0) != 1) {
24033 hvl_t buf0 = VLValToBuf(fixed_val0);
24036 }
24038}
24039template<>
24040void Hdf5Back::WriteToBuf<VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24041 std::vector<std::pair<int, std::pair<std::string, std::string>>> val0=a->cast<std::vector<std::pair<int, std::pair<std::string, std::string>>>>();
24043 size_t item_size1elem=((sizeof(int)+((shape[4]+CYCLUS_SHA1_SIZE))));
24044 size_t item_size2elemfirst=sizeof(int);
24045 size_t item_size2elemsecond=((shape[4]+CYCLUS_SHA1_SIZE));
24046 size_t item_size3elemsecondfirst=shape[4];
24052 unsigned int count0=0;
24053 std::vector<std::pair<int, std::pair<std::string, std::string>>>::iterator it0=val0.begin();
24054 std::vector<std::pair<int, std::pair<std::string, std::string>>> fixed_val0;
24055 unsigned int pad_count0=0;
24056 for(;it0!=val0.end();++it0){
24057 std::pair<int, std::pair<std::string, std::string>> child1elem;
24058 unsigned int pad_count1elem=0;
24059 std::pair<std::string, std::string> child2elemsecond;
24060 unsigned int pad_count2elemsecond=0;
24061 std::string child3elemsecondfirst=std::string((*it0).second.first,0,item_size3elemsecondfirst);
24062 child2elemsecond = std::make_pair(child3elemsecondfirst,(*it0).second.second);
24063 child1elem = std::make_pair((*it0).first,child2elemsecond);
24064 fixed_val0.push_back(child1elem);
24065 ++pad_count0;
24066
24067 }
24068 hasher_.Clear();
24069 hasher_.Update(fixed_val0);
24070 Digest key0 = hasher_.digest();
24073 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING].count(key0) != 1) {
24074 hvl_t buf0 = VLValToBuf(fixed_val0);
24077 }
24079}
24080template<>
24081void Hdf5Back::WriteToBuf<VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24082 std::vector<std::pair<int, std::pair<std::string, std::string>>> val0=a->cast<std::vector<std::pair<int, std::pair<std::string, std::string>>>>();
24084 size_t item_size1elem=((sizeof(int)+((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE))));
24085 size_t item_size2elemfirst=sizeof(int);
24092 hasher_.Clear();
24093 hasher_.Update(val0);
24094 Digest key0 = hasher_.digest();
24097 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING].count(key0) != 1) {
24098 hvl_t buf0 = VLValToBuf(val0);
24101 }
24103}
24104template<>
24105void Hdf5Back::WriteToBuf<PAIR_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24106 std::pair<std::string, std::vector<double>> val0=a->cast<std::pair<std::string, std::vector<double>>>();
24107 size_t item_size0=((shape[1]+((sizeof(double))*shape[2])));
24108 size_t item_size1first=shape[1];
24109 size_t valuelen1first;
24110 size_t item_size1second=((sizeof(double))*shape[2]);
24111 size_t length1second=shape[2];
24112 size_t item_size2secondelem=sizeof(double);
24115 unsigned int count0=0;
24116 valuelen1first=std::min(val0.first.size(), item_size1first);
24117 memcpy(buf+(count0*total_item_size0)+0, val0.first.c_str(), valuelen1first);
24119 unsigned int count1second=0;
24120 std::vector<double>::iterator it1second=val0.second.begin();
24121 for(;it1second!=val0.second.end();++it1second){
24123 ++count1second;
24124
24125 }
24127}
24128template<>
24129void Hdf5Back::WriteToBuf<PAIR_VL_STRING_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24130 std::pair<std::string, std::vector<double>> val0=a->cast<std::pair<std::string, std::vector<double>>>();
24131 size_t item_size0=((CYCLUS_SHA1_SIZE+((sizeof(double))*shape[2])));
24133 size_t item_size1second=((sizeof(double))*shape[2]);
24134 size_t length1second=shape[2];
24135 size_t item_size2secondelem=sizeof(double);
24138 unsigned int count0=0;
24139 hasher_.Clear();
24140 hasher_.Update(val0.first);
24141 Digest key1first = hasher_.digest();
24142 hid_t keysds1first = VLDataset(VL_STRING, true);
24143 hid_t valsds1first = VLDataset(VL_STRING, false);
24144 if (vlkeys_[VL_STRING].count(key1first) != 1) {
24145 AppendVLKey(keysds1first, VL_STRING, key1first);
24146 InsertVLVal(valsds1first, VL_STRING, key1first, val0.first);
24147 }
24149 unsigned int count1second=0;
24150 std::vector<double>::iterator it1second=val0.second.begin();
24151 for(;it1second!=val0.second.end();++it1second){
24153 ++count1second;
24154
24155 }
24157}
24158template<>
24159void Hdf5Back::WriteToBuf<PAIR_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24160 std::pair<std::string, std::vector<double>> val0=a->cast<std::pair<std::string, std::vector<double>>>();
24161 size_t item_size0=((shape[1]+(CYCLUS_SHA1_SIZE)));
24162 size_t item_size1first=shape[1];
24163 size_t valuelen1first;
24165 size_t item_size2secondelem=sizeof(double);
24168 unsigned int count0=0;
24169 valuelen1first=std::min(val0.first.size(), item_size1first);
24170 memcpy(buf+(count0*total_item_size0)+0, val0.first.c_str(), valuelen1first);
24172 hasher_.Clear();
24173 hasher_.Update(val0.second);
24174 Digest key1second = hasher_.digest();
24175 hid_t keysds1second = VLDataset(VL_VECTOR_DOUBLE, true);
24176 hid_t valsds1second = VLDataset(VL_VECTOR_DOUBLE, false);
24177 if (vlkeys_[VL_VECTOR_DOUBLE].count(key1second) != 1) {
24178 hvl_t buf1second = VLValToBuf(val0.second);
24181 }
24183}
24184template<>
24185void Hdf5Back::WriteToBuf<PAIR_VL_STRING_VL_VECTOR_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24186 std::pair<std::string, std::vector<double>> val0=a->cast<std::pair<std::string, std::vector<double>>>();
24190 size_t item_size2secondelem=sizeof(double);
24193 unsigned int count0=0;
24194 hasher_.Clear();
24195 hasher_.Update(val0.first);
24196 Digest key1first = hasher_.digest();
24197 hid_t keysds1first = VLDataset(VL_STRING, true);
24198 hid_t valsds1first = VLDataset(VL_STRING, false);
24199 if (vlkeys_[VL_STRING].count(key1first) != 1) {
24200 AppendVLKey(keysds1first, VL_STRING, key1first);
24201 InsertVLVal(valsds1first, VL_STRING, key1first, val0.first);
24202 }
24204 hasher_.Clear();
24205 hasher_.Update(val0.second);
24206 Digest key1second = hasher_.digest();
24207 hid_t keysds1second = VLDataset(VL_VECTOR_DOUBLE, true);
24208 hid_t valsds1second = VLDataset(VL_VECTOR_DOUBLE, false);
24209 if (vlkeys_[VL_VECTOR_DOUBLE].count(key1second) != 1) {
24210 hvl_t buf1second = VLValToBuf(val0.second);
24213 }
24215}
24216template<>
24217void Hdf5Back::WriteToBuf<MAP_PAIR_STRING_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24218 std::map<std::pair<std::string, std::string>, int> val0=a->cast<std::map<std::pair<std::string, std::string>, int>>();
24219 size_t item_size0=((((shape[2]+shape[3]))+sizeof(int))*shape[0]);
24220 size_t length0=shape[0];
24221 size_t item_size1key=((shape[2]+shape[3]));
24222 size_t item_size2keyfirst=shape[2];
24223 size_t valuelen2keyfirst;
24224 size_t item_size2keysecond=shape[3];
24225 size_t valuelen2keysecond;
24227 size_t item_size1val=sizeof(int);
24229 if(total_item_size0*val0.size()>column){
24230 std::map<std::pair<std::string, std::string>, int>::iterator eraseit=val0.begin();
24231 std::advance(eraseit, column/total_item_size0);
24232 val0.erase(eraseit,val0.end());
24233
24234 }
24235 unsigned int count0=0;
24236 std::map<std::pair<std::string, std::string>, int>::iterator it0=val0.begin();
24237 for(;it0!=val0.end();++it0){
24238 unsigned int count1key=0;
24239 valuelen2keyfirst=std::min(it0->first.first.size(), item_size2keyfirst);
24242 valuelen2keysecond=std::min(it0->first.second.size(), item_size2keysecond);
24246 ++count0;
24247
24248 }
24251
24252 }
24253}
24254template<>
24255void Hdf5Back::WriteToBuf<MAP_PAIR_STRING_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24256 std::map<std::pair<std::string, std::string>, int> val0=a->cast<std::map<std::pair<std::string, std::string>, int>>();
24257 size_t item_size0=((((shape[2]+CYCLUS_SHA1_SIZE))+sizeof(int))*shape[0]);
24258 size_t length0=shape[0];
24259 size_t item_size1key=((shape[2]+CYCLUS_SHA1_SIZE));
24260 size_t item_size2keyfirst=shape[2];
24261 size_t valuelen2keyfirst;
24264 size_t item_size1val=sizeof(int);
24266 if(total_item_size0*val0.size()>column){
24267 std::map<std::pair<std::string, std::string>, int>::iterator eraseit=val0.begin();
24268 std::advance(eraseit, column/total_item_size0);
24269 val0.erase(eraseit,val0.end());
24270
24271 }
24272 unsigned int count0=0;
24273 std::map<std::pair<std::string, std::string>, int>::iterator it0=val0.begin();
24274 for(;it0!=val0.end();++it0){
24275 unsigned int count1key=0;
24276 valuelen2keyfirst=std::min(it0->first.first.size(), item_size2keyfirst);
24279 hasher_.Clear();
24280 hasher_.Update(it0->first.second);
24281 Digest key2keysecond = hasher_.digest();
24282 hid_t keysds2keysecond = VLDataset(VL_STRING, true);
24283 hid_t valsds2keysecond = VLDataset(VL_STRING, false);
24284 if (vlkeys_[VL_STRING].count(key2keysecond) != 1) {
24286 InsertVLVal(valsds2keysecond, VL_STRING, key2keysecond, it0->first.second);
24287 }
24290 ++count0;
24291
24292 }
24295
24296 }
24297}
24298template<>
24299void Hdf5Back::WriteToBuf<MAP_PAIR_VL_STRING_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24300 std::map<std::pair<std::string, std::string>, int> val0=a->cast<std::map<std::pair<std::string, std::string>, int>>();
24301 size_t item_size0=((((CYCLUS_SHA1_SIZE+shape[3]))+sizeof(int))*shape[0]);
24302 size_t length0=shape[0];
24303 size_t item_size1key=((CYCLUS_SHA1_SIZE+shape[3]));
24305 size_t item_size2keysecond=shape[3];
24306 size_t valuelen2keysecond;
24308 size_t item_size1val=sizeof(int);
24310 if(total_item_size0*val0.size()>column){
24311 std::map<std::pair<std::string, std::string>, int>::iterator eraseit=val0.begin();
24312 std::advance(eraseit, column/total_item_size0);
24313 val0.erase(eraseit,val0.end());
24314
24315 }
24316 unsigned int count0=0;
24317 std::map<std::pair<std::string, std::string>, int>::iterator it0=val0.begin();
24318 for(;it0!=val0.end();++it0){
24319 unsigned int count1key=0;
24320 hasher_.Clear();
24321 hasher_.Update(it0->first.first);
24322 Digest key2keyfirst = hasher_.digest();
24323 hid_t keysds2keyfirst = VLDataset(VL_STRING, true);
24324 hid_t valsds2keyfirst = VLDataset(VL_STRING, false);
24325 if (vlkeys_[VL_STRING].count(key2keyfirst) != 1) {
24326 AppendVLKey(keysds2keyfirst, VL_STRING, key2keyfirst);
24327 InsertVLVal(valsds2keyfirst, VL_STRING, key2keyfirst, it0->first.first);
24328 }
24330 valuelen2keysecond=std::min(it0->first.second.size(), item_size2keysecond);
24334 ++count0;
24335
24336 }
24339
24340 }
24341}
24342template<>
24343void Hdf5Back::WriteToBuf<MAP_PAIR_VL_STRING_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24344 std::map<std::pair<std::string, std::string>, int> val0=a->cast<std::map<std::pair<std::string, std::string>, int>>();
24345 size_t item_size0=((((CYCLUS_SHA1_SIZE+CYCLUS_SHA1_SIZE))+sizeof(int))*shape[0]);
24346 size_t length0=shape[0];
24351 size_t item_size1val=sizeof(int);
24353 if(total_item_size0*val0.size()>column){
24354 std::map<std::pair<std::string, std::string>, int>::iterator eraseit=val0.begin();
24355 std::advance(eraseit, column/total_item_size0);
24356 val0.erase(eraseit,val0.end());
24357
24358 }
24359 unsigned int count0=0;
24360 std::map<std::pair<std::string, std::string>, int>::iterator it0=val0.begin();
24361 for(;it0!=val0.end();++it0){
24362 unsigned int count1key=0;
24363 hasher_.Clear();
24364 hasher_.Update(it0->first.first);
24365 Digest key2keyfirst = hasher_.digest();
24366 hid_t keysds2keyfirst = VLDataset(VL_STRING, true);
24367 hid_t valsds2keyfirst = VLDataset(VL_STRING, false);
24368 if (vlkeys_[VL_STRING].count(key2keyfirst) != 1) {
24369 AppendVLKey(keysds2keyfirst, VL_STRING, key2keyfirst);
24370 InsertVLVal(valsds2keyfirst, VL_STRING, key2keyfirst, it0->first.first);
24371 }
24373 hasher_.Clear();
24374 hasher_.Update(it0->first.second);
24375 Digest key2keysecond = hasher_.digest();
24376 hid_t keysds2keysecond = VLDataset(VL_STRING, true);
24377 hid_t valsds2keysecond = VLDataset(VL_STRING, false);
24378 if (vlkeys_[VL_STRING].count(key2keysecond) != 1) {
24380 InsertVLVal(valsds2keysecond, VL_STRING, key2keysecond, it0->first.second);
24381 }
24384 ++count0;
24385
24386 }
24389
24390 }
24391}
24392template<>
24393void Hdf5Back::WriteToBuf<VL_MAP_PAIR_STRING_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24394 std::map<std::pair<std::string, std::string>, int> val0=a->cast<std::map<std::pair<std::string, std::string>, int>>();
24396 size_t item_size1key=((shape[2]+shape[3]));
24397 size_t item_size2keyfirst=shape[2];
24398 size_t valuelen2keyfirst;
24399 size_t item_size2keysecond=shape[3];
24400 size_t valuelen2keysecond;
24402 size_t item_size1val=sizeof(int);
24404 unsigned int count0=0;
24405 std::map<std::pair<std::string, std::string>, int>::iterator it0=val0.begin();
24406 std::map<std::pair<std::string, std::string>, int> fixed_val0;
24407 unsigned int pad_count0=0;
24408 for(;it0!=val0.end();++it0){
24409 std::pair<std::string, std::string> child1key;
24410 unsigned int pad_count1key=0;
24411 std::string child2keyfirst=std::string(it0->first.first,0,item_size2keyfirst);
24412 std::string child2keysecond=std::string(it0->first.second,0,item_size2keysecond);
24413 child1key = std::make_pair(child2keyfirst,child2keysecond);
24414 fixed_val0[child1key] = it0->second;
24415 ++pad_count0;
24416
24417 }
24418 hasher_.Clear();
24419 hasher_.Update(fixed_val0);
24420 Digest key0 = hasher_.digest();
24421 hid_t keysds0 = VLDataset(VL_MAP_PAIR_STRING_STRING_INT, true);
24422 hid_t valsds0 = VLDataset(VL_MAP_PAIR_STRING_STRING_INT, false);
24423 if (vlkeys_[VL_MAP_PAIR_STRING_STRING_INT].count(key0) != 1) {
24424 hvl_t buf0 = VLValToBuf(fixed_val0);
24427 }
24429}
24430template<>
24431void Hdf5Back::WriteToBuf<VL_MAP_PAIR_STRING_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24432 std::map<std::pair<std::string, std::string>, int> val0=a->cast<std::map<std::pair<std::string, std::string>, int>>();
24434 size_t item_size1key=((shape[2]+CYCLUS_SHA1_SIZE));
24435 size_t item_size2keyfirst=shape[2];
24436 size_t valuelen2keyfirst;
24439 size_t item_size1val=sizeof(int);
24441 unsigned int count0=0;
24442 std::map<std::pair<std::string, std::string>, int>::iterator it0=val0.begin();
24443 std::map<std::pair<std::string, std::string>, int> fixed_val0;
24444 unsigned int pad_count0=0;
24445 for(;it0!=val0.end();++it0){
24446 std::pair<std::string, std::string> child1key;
24447 unsigned int pad_count1key=0;
24448 std::string child2keyfirst=std::string(it0->first.first,0,item_size2keyfirst);
24449 child1key = std::make_pair(child2keyfirst,it0->first.second);
24450 fixed_val0[child1key] = it0->second;
24451 ++pad_count0;
24452
24453 }
24454 hasher_.Clear();
24455 hasher_.Update(fixed_val0);
24456 Digest key0 = hasher_.digest();
24459 if (vlkeys_[VL_MAP_PAIR_STRING_VL_STRING_INT].count(key0) != 1) {
24460 hvl_t buf0 = VLValToBuf(fixed_val0);
24463 }
24465}
24466template<>
24467void Hdf5Back::WriteToBuf<VL_MAP_PAIR_VL_STRING_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24468 std::map<std::pair<std::string, std::string>, int> val0=a->cast<std::map<std::pair<std::string, std::string>, int>>();
24470 size_t item_size1key=((CYCLUS_SHA1_SIZE+shape[3]));
24472 size_t item_size2keysecond=shape[3];
24473 size_t valuelen2keysecond;
24475 size_t item_size1val=sizeof(int);
24477 unsigned int count0=0;
24478 std::map<std::pair<std::string, std::string>, int>::iterator it0=val0.begin();
24479 std::map<std::pair<std::string, std::string>, int> fixed_val0;
24480 unsigned int pad_count0=0;
24481 for(;it0!=val0.end();++it0){
24482 std::pair<std::string, std::string> child1key;
24483 unsigned int pad_count1key=0;
24484 std::string child2keysecond=std::string(it0->first.second,0,item_size2keysecond);
24485 child1key = std::make_pair(it0->first.first,child2keysecond);
24486 fixed_val0[child1key] = it0->second;
24487 ++pad_count0;
24488
24489 }
24490 hasher_.Clear();
24491 hasher_.Update(fixed_val0);
24492 Digest key0 = hasher_.digest();
24495 if (vlkeys_[VL_MAP_PAIR_VL_STRING_STRING_INT].count(key0) != 1) {
24496 hvl_t buf0 = VLValToBuf(fixed_val0);
24499 }
24501}
24502template<>
24503void Hdf5Back::WriteToBuf<VL_MAP_PAIR_VL_STRING_VL_STRING_INT>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24504 std::map<std::pair<std::string, std::string>, int> val0=a->cast<std::map<std::pair<std::string, std::string>, int>>();
24510 size_t item_size1val=sizeof(int);
24512 hasher_.Clear();
24513 hasher_.Update(val0);
24514 Digest key0 = hasher_.digest();
24517 if (vlkeys_[VL_MAP_PAIR_VL_STRING_VL_STRING_INT].count(key0) != 1) {
24518 hvl_t buf0 = VLValToBuf(val0);
24521 }
24523}
24524template<>
24525void Hdf5Back::WriteToBuf<MAP_STRING_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24526 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
24527 size_t item_size0=((shape[1]+((shape[3]+sizeof(double))*shape[2]))*shape[0]);
24528 size_t length0=shape[0];
24529 size_t item_size1key=shape[1];
24530 size_t valuelen1key;
24531 size_t item_size1val=((shape[3]+sizeof(double))*shape[2]);
24532 size_t length1val=shape[2];
24533 size_t item_size2valkey=shape[3];
24534 size_t valuelen2valkey;
24535 size_t item_size2valval=sizeof(double);
24538 if(total_item_size0*val0.size()>column){
24539 std::map<std::string, std::map<std::string, double>>::iterator eraseit=val0.begin();
24540 std::advance(eraseit, column/total_item_size0);
24541 val0.erase(eraseit,val0.end());
24542
24543 }
24544 unsigned int count0=0;
24545 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
24546 for(;it0!=val0.end();++it0){
24547 valuelen1key=std::min(it0->first.size(), item_size1key);
24548 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
24550 unsigned int count1val=0;
24551 std::map<std::string, double>::iterator it1val=it0->second.begin();
24552 for(;it1val!=it0->second.end();++it1val){
24553 valuelen2valkey=std::min(it1val->first.size(), item_size2valkey);
24557 ++count1val;
24558
24559 }
24561 ++count0;
24562
24563 }
24566
24567 }
24568}
24569template<>
24570void Hdf5Back::WriteToBuf<MAP_STRING_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24571 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
24572 size_t item_size0=((shape[1]+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]))*shape[0]);
24573 size_t length0=shape[0];
24574 size_t item_size1key=shape[1];
24575 size_t valuelen1key;
24576 size_t item_size1val=((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]);
24577 size_t length1val=shape[2];
24579 size_t item_size2valval=sizeof(double);
24582 if(total_item_size0*val0.size()>column){
24583 std::map<std::string, std::map<std::string, double>>::iterator eraseit=val0.begin();
24584 std::advance(eraseit, column/total_item_size0);
24585 val0.erase(eraseit,val0.end());
24586
24587 }
24588 unsigned int count0=0;
24589 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
24590 for(;it0!=val0.end();++it0){
24591 valuelen1key=std::min(it0->first.size(), item_size1key);
24592 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
24594 unsigned int count1val=0;
24595 std::map<std::string, double>::iterator it1val=it0->second.begin();
24596 for(;it1val!=it0->second.end();++it1val){
24597 hasher_.Clear();
24598 hasher_.Update(it1val->first);
24599 Digest key2valkey = hasher_.digest();
24600 hid_t keysds2valkey = VLDataset(VL_STRING, true);
24601 hid_t valsds2valkey = VLDataset(VL_STRING, false);
24602 if (vlkeys_[VL_STRING].count(key2valkey) != 1) {
24603 AppendVLKey(keysds2valkey, VL_STRING, key2valkey);
24604 InsertVLVal(valsds2valkey, VL_STRING, key2valkey, it1val->first);
24605 }
24608 ++count1val;
24609
24610 }
24612 ++count0;
24613
24614 }
24617
24618 }
24619}
24620template<>
24621void Hdf5Back::WriteToBuf<MAP_STRING_VL_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24622 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
24623 size_t item_size0=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
24624 size_t length0=shape[0];
24625 size_t item_size1key=shape[1];
24626 size_t valuelen1key;
24628 size_t item_size2valkey=shape[3];
24629 size_t valuelen2valkey;
24630 size_t item_size2valval=sizeof(double);
24633 if(total_item_size0*val0.size()>column){
24634 std::map<std::string, std::map<std::string, double>>::iterator eraseit=val0.begin();
24635 std::advance(eraseit, column/total_item_size0);
24636 val0.erase(eraseit,val0.end());
24637
24638 }
24639 unsigned int count0=0;
24640 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
24641 for(;it0!=val0.end();++it0){
24642 valuelen1key=std::min(it0->first.size(), item_size1key);
24643 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
24645 unsigned int count1val=0;
24646 std::map<std::string, double>::iterator it1val=it0->second.begin();
24647 std::map<std::string, double> fixed_val1val;
24648 unsigned int pad_count1val=0;
24649 for(;it1val!=it0->second.end();++it1val){
24650 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
24652 ++pad_count1val;
24653
24654 }
24655 hasher_.Clear();
24656 hasher_.Update(fixed_val1val);
24657 Digest key1val = hasher_.digest();
24658 hid_t keysds1val = VLDataset(VL_MAP_STRING_DOUBLE, true);
24659 hid_t valsds1val = VLDataset(VL_MAP_STRING_DOUBLE, false);
24660 if (vlkeys_[VL_MAP_STRING_DOUBLE].count(key1val) != 1) {
24661 hvl_t buf1val = VLValToBuf(fixed_val1val);
24664 }
24666 ++count0;
24667
24668 }
24671
24672 }
24673}
24674template<>
24675void Hdf5Back::WriteToBuf<MAP_STRING_VL_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24676 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
24677 size_t item_size0=((shape[1]+(CYCLUS_SHA1_SIZE))*shape[0]);
24678 size_t length0=shape[0];
24679 size_t item_size1key=shape[1];
24680 size_t valuelen1key;
24683 size_t item_size2valval=sizeof(double);
24686 if(total_item_size0*val0.size()>column){
24687 std::map<std::string, std::map<std::string, double>>::iterator eraseit=val0.begin();
24688 std::advance(eraseit, column/total_item_size0);
24689 val0.erase(eraseit,val0.end());
24690
24691 }
24692 unsigned int count0=0;
24693 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
24694 for(;it0!=val0.end();++it0){
24695 valuelen1key=std::min(it0->first.size(), item_size1key);
24696 memcpy(buf+(count0*total_item_size0)+0, it0->first.c_str(), valuelen1key);
24698 hasher_.Clear();
24699 hasher_.Update(it0->second);
24700 Digest key1val = hasher_.digest();
24701 hid_t keysds1val = VLDataset(VL_MAP_VL_STRING_DOUBLE, true);
24702 hid_t valsds1val = VLDataset(VL_MAP_VL_STRING_DOUBLE, false);
24703 if (vlkeys_[VL_MAP_VL_STRING_DOUBLE].count(key1val) != 1) {
24704 hvl_t buf1val = VLValToBuf(it0->second);
24707 }
24709 ++count0;
24710
24711 }
24714
24715 }
24716}
24717template<>
24718void Hdf5Back::WriteToBuf<MAP_VL_STRING_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24719 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
24720 size_t item_size0=((CYCLUS_SHA1_SIZE+((shape[3]+sizeof(double))*shape[2]))*shape[0]);
24721 size_t length0=shape[0];
24723 size_t item_size1val=((shape[3]+sizeof(double))*shape[2]);
24724 size_t length1val=shape[2];
24725 size_t item_size2valkey=shape[3];
24726 size_t valuelen2valkey;
24727 size_t item_size2valval=sizeof(double);
24730 if(total_item_size0*val0.size()>column){
24731 std::map<std::string, std::map<std::string, double>>::iterator eraseit=val0.begin();
24732 std::advance(eraseit, column/total_item_size0);
24733 val0.erase(eraseit,val0.end());
24734
24735 }
24736 unsigned int count0=0;
24737 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
24738 for(;it0!=val0.end();++it0){
24739 hasher_.Clear();
24740 hasher_.Update(it0->first);
24741 Digest key1key = hasher_.digest();
24742 hid_t keysds1key = VLDataset(VL_STRING, true);
24743 hid_t valsds1key = VLDataset(VL_STRING, false);
24744 if (vlkeys_[VL_STRING].count(key1key) != 1) {
24745 AppendVLKey(keysds1key, VL_STRING, key1key);
24746 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
24747 }
24749 unsigned int count1val=0;
24750 std::map<std::string, double>::iterator it1val=it0->second.begin();
24751 for(;it1val!=it0->second.end();++it1val){
24752 valuelen2valkey=std::min(it1val->first.size(), item_size2valkey);
24756 ++count1val;
24757
24758 }
24760 ++count0;
24761
24762 }
24765
24766 }
24767}
24768template<>
24769void Hdf5Back::WriteToBuf<MAP_VL_STRING_VL_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24770 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
24771 size_t item_size0=((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))*shape[0]);
24772 size_t length0=shape[0];
24775 size_t item_size2valkey=shape[3];
24776 size_t valuelen2valkey;
24777 size_t item_size2valval=sizeof(double);
24780 if(total_item_size0*val0.size()>column){
24781 std::map<std::string, std::map<std::string, double>>::iterator eraseit=val0.begin();
24782 std::advance(eraseit, column/total_item_size0);
24783 val0.erase(eraseit,val0.end());
24784
24785 }
24786 unsigned int count0=0;
24787 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
24788 for(;it0!=val0.end();++it0){
24789 hasher_.Clear();
24790 hasher_.Update(it0->first);
24791 Digest key1key = hasher_.digest();
24792 hid_t keysds1key = VLDataset(VL_STRING, true);
24793 hid_t valsds1key = VLDataset(VL_STRING, false);
24794 if (vlkeys_[VL_STRING].count(key1key) != 1) {
24795 AppendVLKey(keysds1key, VL_STRING, key1key);
24796 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
24797 }
24799 unsigned int count1val=0;
24800 std::map<std::string, double>::iterator it1val=it0->second.begin();
24801 std::map<std::string, double> fixed_val1val;
24802 unsigned int pad_count1val=0;
24803 for(;it1val!=it0->second.end();++it1val){
24804 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
24806 ++pad_count1val;
24807
24808 }
24809 hasher_.Clear();
24810 hasher_.Update(fixed_val1val);
24811 Digest key1val = hasher_.digest();
24812 hid_t keysds1val = VLDataset(VL_MAP_STRING_DOUBLE, true);
24813 hid_t valsds1val = VLDataset(VL_MAP_STRING_DOUBLE, false);
24814 if (vlkeys_[VL_MAP_STRING_DOUBLE].count(key1val) != 1) {
24815 hvl_t buf1val = VLValToBuf(fixed_val1val);
24818 }
24820 ++count0;
24821
24822 }
24825
24826 }
24827}
24828template<>
24829void Hdf5Back::WriteToBuf<MAP_VL_STRING_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24830 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
24831 size_t item_size0=((CYCLUS_SHA1_SIZE+((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]))*shape[0]);
24832 size_t length0=shape[0];
24834 size_t item_size1val=((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]);
24835 size_t length1val=shape[2];
24837 size_t item_size2valval=sizeof(double);
24840 if(total_item_size0*val0.size()>column){
24841 std::map<std::string, std::map<std::string, double>>::iterator eraseit=val0.begin();
24842 std::advance(eraseit, column/total_item_size0);
24843 val0.erase(eraseit,val0.end());
24844
24845 }
24846 unsigned int count0=0;
24847 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
24848 for(;it0!=val0.end();++it0){
24849 hasher_.Clear();
24850 hasher_.Update(it0->first);
24851 Digest key1key = hasher_.digest();
24852 hid_t keysds1key = VLDataset(VL_STRING, true);
24853 hid_t valsds1key = VLDataset(VL_STRING, false);
24854 if (vlkeys_[VL_STRING].count(key1key) != 1) {
24855 AppendVLKey(keysds1key, VL_STRING, key1key);
24856 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
24857 }
24859 unsigned int count1val=0;
24860 std::map<std::string, double>::iterator it1val=it0->second.begin();
24861 for(;it1val!=it0->second.end();++it1val){
24862 hasher_.Clear();
24863 hasher_.Update(it1val->first);
24864 Digest key2valkey = hasher_.digest();
24865 hid_t keysds2valkey = VLDataset(VL_STRING, true);
24866 hid_t valsds2valkey = VLDataset(VL_STRING, false);
24867 if (vlkeys_[VL_STRING].count(key2valkey) != 1) {
24868 AppendVLKey(keysds2valkey, VL_STRING, key2valkey);
24869 InsertVLVal(valsds2valkey, VL_STRING, key2valkey, it1val->first);
24870 }
24873 ++count1val;
24874
24875 }
24877 ++count0;
24878
24879 }
24882
24883 }
24884}
24885template<>
24886void Hdf5Back::WriteToBuf<MAP_VL_STRING_VL_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24887 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
24888 size_t item_size0=((CYCLUS_SHA1_SIZE+(CYCLUS_SHA1_SIZE))*shape[0]);
24889 size_t length0=shape[0];
24893 size_t item_size2valval=sizeof(double);
24896 if(total_item_size0*val0.size()>column){
24897 std::map<std::string, std::map<std::string, double>>::iterator eraseit=val0.begin();
24898 std::advance(eraseit, column/total_item_size0);
24899 val0.erase(eraseit,val0.end());
24900
24901 }
24902 unsigned int count0=0;
24903 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
24904 for(;it0!=val0.end();++it0){
24905 hasher_.Clear();
24906 hasher_.Update(it0->first);
24907 Digest key1key = hasher_.digest();
24908 hid_t keysds1key = VLDataset(VL_STRING, true);
24909 hid_t valsds1key = VLDataset(VL_STRING, false);
24910 if (vlkeys_[VL_STRING].count(key1key) != 1) {
24911 AppendVLKey(keysds1key, VL_STRING, key1key);
24912 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
24913 }
24915 hasher_.Clear();
24916 hasher_.Update(it0->second);
24917 Digest key1val = hasher_.digest();
24918 hid_t keysds1val = VLDataset(VL_MAP_VL_STRING_DOUBLE, true);
24919 hid_t valsds1val = VLDataset(VL_MAP_VL_STRING_DOUBLE, false);
24920 if (vlkeys_[VL_MAP_VL_STRING_DOUBLE].count(key1val) != 1) {
24921 hvl_t buf1val = VLValToBuf(it0->second);
24924 }
24926 ++count0;
24927
24928 }
24931
24932 }
24933}
24934template<>
24935void Hdf5Back::WriteToBuf<VL_MAP_STRING_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24936 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
24938 size_t item_size1key=shape[1];
24939 size_t valuelen1key;
24940 size_t item_size1val=((shape[3]+sizeof(double))*shape[2]);
24941 size_t length1val=shape[2];
24942 size_t item_size2valkey=shape[3];
24943 size_t valuelen2valkey;
24944 size_t item_size2valval=sizeof(double);
24947 unsigned int count0=0;
24948 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
24949 std::map<std::string, std::map<std::string, double>> fixed_val0;
24950 unsigned int pad_count0=0;
24951 for(;it0!=val0.end();++it0){
24952 std::string child1key=std::string(it0->first,0,item_size1key);
24953 std::map<std::string, double> child1val;
24954 unsigned int pad_count1val=0;
24955 std::map<std::string, double>::iterator it1val=it0->second.begin();
24956 for(;it1val!=it0->second.end();++it1val){
24957 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
24958 child1val[child2valkey] = it1val->second;
24959 ++pad_count1val;
24960
24961 }
24963 ++pad_count0;
24964
24965 }
24966 hasher_.Clear();
24967 hasher_.Update(fixed_val0);
24968 Digest key0 = hasher_.digest();
24970 hid_t valsds0 = VLDataset(VL_MAP_STRING_MAP_STRING_DOUBLE, false);
24971 if (vlkeys_[VL_MAP_STRING_MAP_STRING_DOUBLE].count(key0) != 1) {
24972 hvl_t buf0 = VLValToBuf(fixed_val0);
24975 }
24977}
24978template<>
24979void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
24980 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
24983 size_t item_size1val=((shape[3]+sizeof(double))*shape[2]);
24984 size_t length1val=shape[2];
24985 size_t item_size2valkey=shape[3];
24986 size_t valuelen2valkey;
24987 size_t item_size2valval=sizeof(double);
24990 unsigned int count0=0;
24991 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
24992 std::map<std::string, std::map<std::string, double>> fixed_val0;
24993 unsigned int pad_count0=0;
24994 for(;it0!=val0.end();++it0){
24995 std::map<std::string, double> child1val;
24996 unsigned int pad_count1val=0;
24997 std::map<std::string, double>::iterator it1val=it0->second.begin();
24998 for(;it1val!=it0->second.end();++it1val){
24999 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
25000 child1val[child2valkey] = it1val->second;
25001 ++pad_count1val;
25002
25003 }
25004 fixed_val0[it0->first] = child1val;
25005 ++pad_count0;
25006
25007 }
25008 hasher_.Clear();
25009 hasher_.Update(fixed_val0);
25010 Digest key0 = hasher_.digest();
25013 if (vlkeys_[VL_MAP_VL_STRING_MAP_STRING_DOUBLE].count(key0) != 1) {
25014 hvl_t buf0 = VLValToBuf(fixed_val0);
25017 }
25019}
25020template<>
25021void Hdf5Back::WriteToBuf<VL_MAP_STRING_VL_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
25022 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
25024 size_t item_size1key=shape[1];
25025 size_t valuelen1key;
25027 size_t item_size2valkey=shape[3];
25028 size_t valuelen2valkey;
25029 size_t item_size2valval=sizeof(double);
25032 unsigned int count0=0;
25033 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
25034 std::map<std::string, std::map<std::string, double>> fixed_val0;
25035 unsigned int pad_count0=0;
25036 for(;it0!=val0.end();++it0){
25037 std::string child1key=std::string(it0->first,0,item_size1key);
25038 std::map<std::string, double> child1val;
25039 unsigned int pad_count1val=0;
25040 std::map<std::string, double>::iterator it1val=it0->second.begin();
25041 for(;it1val!=it0->second.end();++it1val){
25042 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
25043 child1val[child2valkey] = it1val->second;
25044 ++pad_count1val;
25045
25046 }
25048 ++pad_count0;
25049
25050 }
25051 hasher_.Clear();
25052 hasher_.Update(fixed_val0);
25053 Digest key0 = hasher_.digest();
25056 if (vlkeys_[VL_MAP_STRING_VL_MAP_STRING_DOUBLE].count(key0) != 1) {
25057 hvl_t buf0 = VLValToBuf(fixed_val0);
25060 }
25062}
25063template<>
25064void Hdf5Back::WriteToBuf<VL_MAP_STRING_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
25065 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
25067 size_t item_size1key=shape[1];
25068 size_t valuelen1key;
25069 size_t item_size1val=((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]);
25070 size_t length1val=shape[2];
25072 size_t item_size2valval=sizeof(double);
25075 unsigned int count0=0;
25076 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
25077 std::map<std::string, std::map<std::string, double>> fixed_val0;
25078 unsigned int pad_count0=0;
25079 for(;it0!=val0.end();++it0){
25080 std::string child1key=std::string(it0->first,0,item_size1key);
25081 std::map<std::string, double> child1val;
25082 unsigned int pad_count1val=0;
25083 std::map<std::string, double>::iterator it1val=it0->second.begin();
25084 for(;it1val!=it0->second.end();++it1val){
25085 child1val[it1val->first] = it1val->second;
25086 ++pad_count1val;
25087
25088 }
25090 ++pad_count0;
25091
25092 }
25093 hasher_.Clear();
25094 hasher_.Update(fixed_val0);
25095 Digest key0 = hasher_.digest();
25098 if (vlkeys_[VL_MAP_STRING_MAP_VL_STRING_DOUBLE].count(key0) != 1) {
25099 hvl_t buf0 = VLValToBuf(fixed_val0);
25102 }
25104}
25105template<>
25106void Hdf5Back::WriteToBuf<VL_MAP_STRING_VL_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
25107 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
25109 size_t item_size1key=shape[1];
25110 size_t valuelen1key;
25113 size_t item_size2valval=sizeof(double);
25116 unsigned int count0=0;
25117 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
25118 std::map<std::string, std::map<std::string, double>> fixed_val0;
25119 unsigned int pad_count0=0;
25120 for(;it0!=val0.end();++it0){
25121 std::string child1key=std::string(it0->first,0,item_size1key);
25122 fixed_val0[child1key] = it0->second;
25123 ++pad_count0;
25124
25125 }
25126 hasher_.Clear();
25127 hasher_.Update(fixed_val0);
25128 Digest key0 = hasher_.digest();
25131 if (vlkeys_[VL_MAP_STRING_VL_MAP_VL_STRING_DOUBLE].count(key0) != 1) {
25132 hvl_t buf0 = VLValToBuf(fixed_val0);
25135 }
25137}
25138template<>
25139void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
25140 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
25143 size_t item_size1val=((CYCLUS_SHA1_SIZE+sizeof(double))*shape[2]);
25144 size_t length1val=shape[2];
25146 size_t item_size2valval=sizeof(double);
25149 unsigned int count0=0;
25150 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
25151 std::map<std::string, std::map<std::string, double>> fixed_val0;
25152 unsigned int pad_count0=0;
25153 for(;it0!=val0.end();++it0){
25154 std::map<std::string, double> child1val;
25155 unsigned int pad_count1val=0;
25156 std::map<std::string, double>::iterator it1val=it0->second.begin();
25157 for(;it1val!=it0->second.end();++it1val){
25158 child1val[it1val->first] = it1val->second;
25159 ++pad_count1val;
25160
25161 }
25162 fixed_val0[it0->first] = child1val;
25163 ++pad_count0;
25164
25165 }
25166 hasher_.Clear();
25167 hasher_.Update(fixed_val0);
25168 Digest key0 = hasher_.digest();
25171 if (vlkeys_[VL_MAP_VL_STRING_MAP_VL_STRING_DOUBLE].count(key0) != 1) {
25172 hvl_t buf0 = VLValToBuf(fixed_val0);
25175 }
25177}
25178template<>
25179void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VL_MAP_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
25180 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
25184 size_t item_size2valkey=shape[3];
25185 size_t valuelen2valkey;
25186 size_t item_size2valval=sizeof(double);
25189 unsigned int count0=0;
25190 std::map<std::string, std::map<std::string, double>>::iterator it0=val0.begin();
25191 std::map<std::string, std::map<std::string, double>> fixed_val0;
25192 unsigned int pad_count0=0;
25193 for(;it0!=val0.end();++it0){
25194 std::map<std::string, double> child1val;
25195 unsigned int pad_count1val=0;
25196 std::map<std::string, double>::iterator it1val=it0->second.begin();
25197 for(;it1val!=it0->second.end();++it1val){
25198 std::string child2valkey=std::string(it1val->first,0,item_size2valkey);
25199 child1val[child2valkey] = it1val->second;
25200 ++pad_count1val;
25201
25202 }
25203 fixed_val0[it0->first] = child1val;
25204 ++pad_count0;
25205
25206 }
25207 hasher_.Clear();
25208 hasher_.Update(fixed_val0);
25209 Digest key0 = hasher_.digest();
25212 if (vlkeys_[VL_MAP_VL_STRING_VL_MAP_STRING_DOUBLE].count(key0) != 1) {
25213 hvl_t buf0 = VLValToBuf(fixed_val0);
25216 }
25218}
25219template<>
25220void Hdf5Back::WriteToBuf<VL_MAP_VL_STRING_VL_MAP_VL_STRING_DOUBLE>(char* buf, std::vector<int>& shape, const boost::spirit::hold_any* a, size_t column) {
25221 std::map<std::string, std::map<std::string, double>> val0=a->cast<std::map<std::string, std::map<std::string, double>>>();
25226 size_t item_size2valval=sizeof(double);
25229 hasher_.Clear();
25230 hasher_.Update(val0);
25231 Digest key0 = hasher_.digest();
25234 if (vlkeys_[VL_MAP_VL_STRING_VL_MAP_VL_STRING_DOUBLE].count(key0) != 1) {
25235 hvl_t buf0 = VLValToBuf(val0);
25238 }
25240}
25241
25242
25243
25244void Hdf5Back::FillBuf(std::string title, char* buf, DatumList& group,
25245 size_t* sizes, size_t rowsize) {
25246 using std::min;
25247 using std::string;
25248 using std::vector;
25249 using std::set;
25250 using std::list;
25251 using std::pair;
25252 using std::map;
25253 Datum::Vals vals;
25254 Datum::Shape shape;
25255 Datum::Shapes shapes;
25256 Datum::Vals header = group.front()->vals();
25257 int ncols = header.size();
25258 DbTypes* dbtypes = schemas_[title];
25259
25260 size_t offset = 0;
25261 const void* val;
25262 size_t fieldlen;
25263 size_t valuelen;
25264 DatumList::iterator it;
25265 for (it = group.begin(); it != group.end(); ++it) {
25266 vals = (*it)->vals();
25267 shapes = (*it)->shapes();
25268 for (int col = 0; col < ncols; ++col) {
25269 const boost::spirit::hold_any* a = &(vals[col].second);
25270 switch (dbtypes[col]) {
25271 case BOOL: {
25272 WriteToBuf<BOOL>(buf+offset, shapes[col], a, sizes[col]);
25273 break;
25274
25275 }
25276 case INT: {
25277 WriteToBuf<INT>(buf+offset, shapes[col], a, sizes[col]);
25278 break;
25279
25280 }
25281 case FLOAT: {
25282 WriteToBuf<FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25283 break;
25284
25285 }
25286 case DOUBLE: {
25287 WriteToBuf<DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25288 break;
25289
25290 }
25291 case STRING: {
25292 WriteToBuf<STRING>(buf+offset, shapes[col], a, sizes[col]);
25293 break;
25294
25295 }
25296 case VL_STRING: {
25297 WriteToBuf<VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25298 break;
25299
25300 }
25301 case BLOB: {
25302 WriteToBuf<BLOB>(buf+offset, shapes[col], a, sizes[col]);
25303 break;
25304
25305 }
25306 case UUID: {
25307 WriteToBuf<UUID>(buf+offset, shapes[col], a, sizes[col]);
25308 break;
25309
25310 }
25311 case VECTOR_INT: {
25312 WriteToBuf<VECTOR_INT>(buf+offset, shapes[col], a, sizes[col]);
25313 break;
25314
25315 }
25316 case VL_VECTOR_INT: {
25317 WriteToBuf<VL_VECTOR_INT>(buf+offset, shapes[col], a, sizes[col]);
25318 break;
25319
25320 }
25321 case VECTOR_FLOAT: {
25322 WriteToBuf<VECTOR_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25323 break;
25324
25325 }
25326 case VL_VECTOR_FLOAT: {
25327 WriteToBuf<VL_VECTOR_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25328 break;
25329
25330 }
25331 case VECTOR_DOUBLE: {
25332 WriteToBuf<VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25333 break;
25334
25335 }
25336 case VL_VECTOR_DOUBLE: {
25337 WriteToBuf<VL_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25338 break;
25339
25340 }
25341 case VECTOR_STRING: {
25342 WriteToBuf<VECTOR_STRING>(buf+offset, shapes[col], a, sizes[col]);
25343 break;
25344
25345 }
25346 case VL_VECTOR_STRING: {
25347 WriteToBuf<VL_VECTOR_STRING>(buf+offset, shapes[col], a, sizes[col]);
25348 break;
25349
25350 }
25351 case VECTOR_VL_STRING: {
25352 WriteToBuf<VECTOR_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25353 break;
25354
25355 }
25356 case VL_VECTOR_VL_STRING: {
25357 WriteToBuf<VL_VECTOR_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25358 break;
25359
25360 }
25361 case VECTOR_BLOB: {
25362 WriteToBuf<VECTOR_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25363 break;
25364
25365 }
25366 case VL_VECTOR_BLOB: {
25367 WriteToBuf<VL_VECTOR_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25368 break;
25369
25370 }
25371 case VECTOR_UUID: {
25372 WriteToBuf<VECTOR_UUID>(buf+offset, shapes[col], a, sizes[col]);
25373 break;
25374
25375 }
25376 case VL_VECTOR_UUID: {
25377 WriteToBuf<VL_VECTOR_UUID>(buf+offset, shapes[col], a, sizes[col]);
25378 break;
25379
25380 }
25381 case SET_INT: {
25382 WriteToBuf<SET_INT>(buf+offset, shapes[col], a, sizes[col]);
25383 break;
25384
25385 }
25386 case VL_SET_INT: {
25387 WriteToBuf<VL_SET_INT>(buf+offset, shapes[col], a, sizes[col]);
25388 break;
25389
25390 }
25391 case SET_FLOAT: {
25392 WriteToBuf<SET_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25393 break;
25394
25395 }
25396 case VL_SET_FLOAT: {
25397 WriteToBuf<VL_SET_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25398 break;
25399
25400 }
25401 case SET_DOUBLE: {
25402 WriteToBuf<SET_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25403 break;
25404
25405 }
25406 case VL_SET_DOUBLE: {
25407 WriteToBuf<VL_SET_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25408 break;
25409
25410 }
25411 case SET_STRING: {
25412 WriteToBuf<SET_STRING>(buf+offset, shapes[col], a, sizes[col]);
25413 break;
25414
25415 }
25416 case VL_SET_STRING: {
25417 WriteToBuf<VL_SET_STRING>(buf+offset, shapes[col], a, sizes[col]);
25418 break;
25419
25420 }
25421 case SET_VL_STRING: {
25422 WriteToBuf<SET_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25423 break;
25424
25425 }
25426 case VL_SET_VL_STRING: {
25427 WriteToBuf<VL_SET_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25428 break;
25429
25430 }
25431 case SET_BLOB: {
25432 WriteToBuf<SET_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25433 break;
25434
25435 }
25436 case VL_SET_BLOB: {
25437 WriteToBuf<VL_SET_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25438 break;
25439
25440 }
25441 case SET_UUID: {
25442 WriteToBuf<SET_UUID>(buf+offset, shapes[col], a, sizes[col]);
25443 break;
25444
25445 }
25446 case VL_SET_UUID: {
25447 WriteToBuf<VL_SET_UUID>(buf+offset, shapes[col], a, sizes[col]);
25448 break;
25449
25450 }
25451 case LIST_BOOL: {
25452 WriteToBuf<LIST_BOOL>(buf+offset, shapes[col], a, sizes[col]);
25453 break;
25454
25455 }
25456 case VL_LIST_BOOL: {
25457 WriteToBuf<VL_LIST_BOOL>(buf+offset, shapes[col], a, sizes[col]);
25458 break;
25459
25460 }
25461 case LIST_INT: {
25462 WriteToBuf<LIST_INT>(buf+offset, shapes[col], a, sizes[col]);
25463 break;
25464
25465 }
25466 case VL_LIST_INT: {
25467 WriteToBuf<VL_LIST_INT>(buf+offset, shapes[col], a, sizes[col]);
25468 break;
25469
25470 }
25471 case LIST_FLOAT: {
25472 WriteToBuf<LIST_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25473 break;
25474
25475 }
25476 case VL_LIST_FLOAT: {
25477 WriteToBuf<VL_LIST_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25478 break;
25479
25480 }
25481 case LIST_DOUBLE: {
25482 WriteToBuf<LIST_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25483 break;
25484
25485 }
25486 case VL_LIST_DOUBLE: {
25487 WriteToBuf<VL_LIST_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25488 break;
25489
25490 }
25491 case LIST_STRING: {
25492 WriteToBuf<LIST_STRING>(buf+offset, shapes[col], a, sizes[col]);
25493 break;
25494
25495 }
25496 case VL_LIST_STRING: {
25497 WriteToBuf<VL_LIST_STRING>(buf+offset, shapes[col], a, sizes[col]);
25498 break;
25499
25500 }
25501 case LIST_VL_STRING: {
25502 WriteToBuf<LIST_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25503 break;
25504
25505 }
25506 case VL_LIST_VL_STRING: {
25507 WriteToBuf<VL_LIST_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25508 break;
25509
25510 }
25511 case LIST_BLOB: {
25512 WriteToBuf<LIST_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25513 break;
25514
25515 }
25516 case VL_LIST_BLOB: {
25517 WriteToBuf<VL_LIST_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25518 break;
25519
25520 }
25521 case LIST_UUID: {
25522 WriteToBuf<LIST_UUID>(buf+offset, shapes[col], a, sizes[col]);
25523 break;
25524
25525 }
25526 case VL_LIST_UUID: {
25527 WriteToBuf<VL_LIST_UUID>(buf+offset, shapes[col], a, sizes[col]);
25528 break;
25529
25530 }
25531 case PAIR_INT_BOOL: {
25532 WriteToBuf<PAIR_INT_BOOL>(buf+offset, shapes[col], a, sizes[col]);
25533 break;
25534
25535 }
25536 case PAIR_INT_INT: {
25537 WriteToBuf<PAIR_INT_INT>(buf+offset, shapes[col], a, sizes[col]);
25538 break;
25539
25540 }
25541 case PAIR_INT_FLOAT: {
25542 WriteToBuf<PAIR_INT_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25543 break;
25544
25545 }
25546 case PAIR_INT_DOUBLE: {
25547 WriteToBuf<PAIR_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25548 break;
25549
25550 }
25551 case PAIR_INT_STRING: {
25552 WriteToBuf<PAIR_INT_STRING>(buf+offset, shapes[col], a, sizes[col]);
25553 break;
25554
25555 }
25556 case PAIR_INT_VL_STRING: {
25557 WriteToBuf<PAIR_INT_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25558 break;
25559
25560 }
25561 case PAIR_INT_BLOB: {
25562 WriteToBuf<PAIR_INT_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25563 break;
25564
25565 }
25566 case PAIR_INT_UUID: {
25567 WriteToBuf<PAIR_INT_UUID>(buf+offset, shapes[col], a, sizes[col]);
25568 break;
25569
25570 }
25571 case PAIR_STRING_BOOL: {
25572 WriteToBuf<PAIR_STRING_BOOL>(buf+offset, shapes[col], a, sizes[col]);
25573 break;
25574
25575 }
25576 case PAIR_STRING_INT: {
25577 WriteToBuf<PAIR_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
25578 break;
25579
25580 }
25581 case PAIR_STRING_FLOAT: {
25582 WriteToBuf<PAIR_STRING_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25583 break;
25584
25585 }
25586 case PAIR_STRING_DOUBLE: {
25587 WriteToBuf<PAIR_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25588 break;
25589
25590 }
25591 case PAIR_STRING_STRING: {
25592 WriteToBuf<PAIR_STRING_STRING>(buf+offset, shapes[col], a, sizes[col]);
25593 break;
25594
25595 }
25596 case PAIR_STRING_VL_STRING: {
25597 WriteToBuf<PAIR_STRING_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25598 break;
25599
25600 }
25601 case PAIR_STRING_BLOB: {
25602 WriteToBuf<PAIR_STRING_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25603 break;
25604
25605 }
25606 case PAIR_STRING_UUID: {
25607 WriteToBuf<PAIR_STRING_UUID>(buf+offset, shapes[col], a, sizes[col]);
25608 break;
25609
25610 }
25611 case PAIR_VL_STRING_BOOL: {
25612 WriteToBuf<PAIR_VL_STRING_BOOL>(buf+offset, shapes[col], a, sizes[col]);
25613 break;
25614
25615 }
25616 case PAIR_VL_STRING_INT: {
25617 WriteToBuf<PAIR_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
25618 break;
25619
25620 }
25621 case PAIR_VL_STRING_FLOAT: {
25622 WriteToBuf<PAIR_VL_STRING_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25623 break;
25624
25625 }
25626 case PAIR_VL_STRING_DOUBLE: {
25627 WriteToBuf<PAIR_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25628 break;
25629
25630 }
25631 case PAIR_VL_STRING_STRING: {
25632 WriteToBuf<PAIR_VL_STRING_STRING>(buf+offset, shapes[col], a, sizes[col]);
25633 break;
25634
25635 }
25637 WriteToBuf<PAIR_VL_STRING_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25638 break;
25639
25640 }
25641 case PAIR_VL_STRING_BLOB: {
25642 WriteToBuf<PAIR_VL_STRING_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25643 break;
25644
25645 }
25646 case PAIR_VL_STRING_UUID: {
25647 WriteToBuf<PAIR_VL_STRING_UUID>(buf+offset, shapes[col], a, sizes[col]);
25648 break;
25649
25650 }
25651 case MAP_INT_BOOL: {
25652 WriteToBuf<MAP_INT_BOOL>(buf+offset, shapes[col], a, sizes[col]);
25653 break;
25654
25655 }
25656 case VL_MAP_INT_BOOL: {
25657 WriteToBuf<VL_MAP_INT_BOOL>(buf+offset, shapes[col], a, sizes[col]);
25658 break;
25659
25660 }
25661 case MAP_INT_INT: {
25662 WriteToBuf<MAP_INT_INT>(buf+offset, shapes[col], a, sizes[col]);
25663 break;
25664
25665 }
25666 case VL_MAP_INT_INT: {
25667 WriteToBuf<VL_MAP_INT_INT>(buf+offset, shapes[col], a, sizes[col]);
25668 break;
25669
25670 }
25671 case MAP_INT_FLOAT: {
25672 WriteToBuf<MAP_INT_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25673 break;
25674
25675 }
25676 case VL_MAP_INT_FLOAT: {
25677 WriteToBuf<VL_MAP_INT_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25678 break;
25679
25680 }
25681 case MAP_INT_DOUBLE: {
25682 WriteToBuf<MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25683 break;
25684
25685 }
25686 case VL_MAP_INT_DOUBLE: {
25687 WriteToBuf<VL_MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25688 break;
25689
25690 }
25691 case MAP_INT_STRING: {
25692 WriteToBuf<MAP_INT_STRING>(buf+offset, shapes[col], a, sizes[col]);
25693 break;
25694
25695 }
25696 case VL_MAP_INT_STRING: {
25697 WriteToBuf<VL_MAP_INT_STRING>(buf+offset, shapes[col], a, sizes[col]);
25698 break;
25699
25700 }
25701 case MAP_INT_VL_STRING: {
25702 WriteToBuf<MAP_INT_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25703 break;
25704
25705 }
25706 case VL_MAP_INT_VL_STRING: {
25707 WriteToBuf<VL_MAP_INT_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25708 break;
25709
25710 }
25711 case MAP_INT_BLOB: {
25712 WriteToBuf<MAP_INT_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25713 break;
25714
25715 }
25716 case VL_MAP_INT_BLOB: {
25717 WriteToBuf<VL_MAP_INT_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25718 break;
25719
25720 }
25721 case MAP_INT_UUID: {
25722 WriteToBuf<MAP_INT_UUID>(buf+offset, shapes[col], a, sizes[col]);
25723 break;
25724
25725 }
25726 case VL_MAP_INT_UUID: {
25727 WriteToBuf<VL_MAP_INT_UUID>(buf+offset, shapes[col], a, sizes[col]);
25728 break;
25729
25730 }
25731 case MAP_STRING_BOOL: {
25732 WriteToBuf<MAP_STRING_BOOL>(buf+offset, shapes[col], a, sizes[col]);
25733 break;
25734
25735 }
25736 case VL_MAP_STRING_BOOL: {
25737 WriteToBuf<VL_MAP_STRING_BOOL>(buf+offset, shapes[col], a, sizes[col]);
25738 break;
25739
25740 }
25741 case MAP_STRING_INT: {
25742 WriteToBuf<MAP_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
25743 break;
25744
25745 }
25746 case VL_MAP_STRING_INT: {
25747 WriteToBuf<VL_MAP_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
25748 break;
25749
25750 }
25751 case MAP_STRING_FLOAT: {
25752 WriteToBuf<MAP_STRING_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25753 break;
25754
25755 }
25756 case VL_MAP_STRING_FLOAT: {
25757 WriteToBuf<VL_MAP_STRING_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25758 break;
25759
25760 }
25761 case MAP_STRING_DOUBLE: {
25762 WriteToBuf<MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25763 break;
25764
25765 }
25766 case VL_MAP_STRING_DOUBLE: {
25767 WriteToBuf<VL_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25768 break;
25769
25770 }
25771 case MAP_STRING_STRING: {
25772 WriteToBuf<MAP_STRING_STRING>(buf+offset, shapes[col], a, sizes[col]);
25773 break;
25774
25775 }
25776 case VL_MAP_STRING_STRING: {
25777 WriteToBuf<VL_MAP_STRING_STRING>(buf+offset, shapes[col], a, sizes[col]);
25778 break;
25779
25780 }
25781 case MAP_STRING_VL_STRING: {
25782 WriteToBuf<MAP_STRING_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25783 break;
25784
25785 }
25787 WriteToBuf<VL_MAP_STRING_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25788 break;
25789
25790 }
25791 case MAP_STRING_BLOB: {
25792 WriteToBuf<MAP_STRING_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25793 break;
25794
25795 }
25796 case VL_MAP_STRING_BLOB: {
25797 WriteToBuf<VL_MAP_STRING_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25798 break;
25799
25800 }
25801 case MAP_STRING_UUID: {
25802 WriteToBuf<MAP_STRING_UUID>(buf+offset, shapes[col], a, sizes[col]);
25803 break;
25804
25805 }
25806 case VL_MAP_STRING_UUID: {
25807 WriteToBuf<VL_MAP_STRING_UUID>(buf+offset, shapes[col], a, sizes[col]);
25808 break;
25809
25810 }
25811 case MAP_VL_STRING_BOOL: {
25812 WriteToBuf<MAP_VL_STRING_BOOL>(buf+offset, shapes[col], a, sizes[col]);
25813 break;
25814
25815 }
25816 case VL_MAP_VL_STRING_BOOL: {
25817 WriteToBuf<VL_MAP_VL_STRING_BOOL>(buf+offset, shapes[col], a, sizes[col]);
25818 break;
25819
25820 }
25821 case MAP_VL_STRING_INT: {
25822 WriteToBuf<MAP_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
25823 break;
25824
25825 }
25826 case VL_MAP_VL_STRING_INT: {
25827 WriteToBuf<VL_MAP_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
25828 break;
25829
25830 }
25831 case MAP_VL_STRING_FLOAT: {
25832 WriteToBuf<MAP_VL_STRING_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25833 break;
25834
25835 }
25837 WriteToBuf<VL_MAP_VL_STRING_FLOAT>(buf+offset, shapes[col], a, sizes[col]);
25838 break;
25839
25840 }
25841 case MAP_VL_STRING_DOUBLE: {
25842 WriteToBuf<MAP_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25843 break;
25844
25845 }
25847 WriteToBuf<VL_MAP_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25848 break;
25849
25850 }
25851 case MAP_VL_STRING_STRING: {
25852 WriteToBuf<MAP_VL_STRING_STRING>(buf+offset, shapes[col], a, sizes[col]);
25853 break;
25854
25855 }
25857 WriteToBuf<VL_MAP_VL_STRING_STRING>(buf+offset, shapes[col], a, sizes[col]);
25858 break;
25859
25860 }
25862 WriteToBuf<MAP_VL_STRING_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25863 break;
25864
25865 }
25867 WriteToBuf<VL_MAP_VL_STRING_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
25868 break;
25869
25870 }
25871 case MAP_VL_STRING_BLOB: {
25872 WriteToBuf<MAP_VL_STRING_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25873 break;
25874
25875 }
25876 case VL_MAP_VL_STRING_BLOB: {
25877 WriteToBuf<VL_MAP_VL_STRING_BLOB>(buf+offset, shapes[col], a, sizes[col]);
25878 break;
25879
25880 }
25881 case MAP_VL_STRING_UUID: {
25882 WriteToBuf<MAP_VL_STRING_UUID>(buf+offset, shapes[col], a, sizes[col]);
25883 break;
25884
25885 }
25886 case VL_MAP_VL_STRING_UUID: {
25887 WriteToBuf<VL_MAP_VL_STRING_UUID>(buf+offset, shapes[col], a, sizes[col]);
25888 break;
25889
25890 }
25892 WriteToBuf<MAP_PAIR_INT_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25893 break;
25894
25895 }
25897 WriteToBuf<VL_MAP_PAIR_INT_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25898 break;
25899
25900 }
25902 WriteToBuf<MAP_PAIR_INT_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25903 break;
25904
25905 }
25907 WriteToBuf<VL_MAP_PAIR_INT_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25908 break;
25909
25910 }
25912 WriteToBuf<MAP_STRING_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25913 break;
25914
25915 }
25917 WriteToBuf<MAP_STRING_VL_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25918 break;
25919
25920 }
25922 WriteToBuf<VL_MAP_STRING_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25923 break;
25924
25925 }
25927 WriteToBuf<MAP_VL_STRING_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25928 break;
25929
25930 }
25932 WriteToBuf<MAP_VL_STRING_VL_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25933 break;
25934
25935 }
25937 WriteToBuf<VL_MAP_STRING_VL_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25938 break;
25939
25940 }
25942 WriteToBuf<VL_MAP_VL_STRING_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25943 break;
25944
25945 }
25947 WriteToBuf<VL_MAP_VL_STRING_VL_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25948 break;
25949
25950 }
25952 WriteToBuf<MAP_STRING_MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25953 break;
25954
25955 }
25957 WriteToBuf<MAP_STRING_VL_MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25958 break;
25959
25960 }
25962 WriteToBuf<VL_MAP_STRING_MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25963 break;
25964
25965 }
25967 WriteToBuf<MAP_VL_STRING_MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25968 break;
25969
25970 }
25972 WriteToBuf<MAP_VL_STRING_VL_MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25973 break;
25974
25975 }
25977 WriteToBuf<VL_MAP_STRING_VL_MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25978 break;
25979
25980 }
25982 WriteToBuf<VL_MAP_VL_STRING_MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25983 break;
25984
25985 }
25987 WriteToBuf<VL_MAP_VL_STRING_VL_MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
25988 break;
25989
25990 }
25993 break;
25994
25995 }
25998 break;
25999
26000 }
26003 break;
26004
26005 }
26008 break;
26009
26010 }
26013 break;
26014
26015 }
26018 break;
26019
26020 }
26023 break;
26024
26025 }
26028 break;
26029
26030 }
26032 WriteToBuf<MAP_INT_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26033 break;
26034
26035 }
26037 WriteToBuf<MAP_INT_MAP_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26038 break;
26039
26040 }
26042 WriteToBuf<VL_MAP_INT_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26043 break;
26044
26045 }
26047 WriteToBuf<VL_MAP_INT_MAP_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26048 break;
26049
26050 }
26052 WriteToBuf<MAP_INT_VL_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26053 break;
26054
26055 }
26057 WriteToBuf<MAP_INT_VL_MAP_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26058 break;
26059
26060 }
26062 WriteToBuf<VL_MAP_INT_VL_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26063 break;
26064
26065 }
26067 WriteToBuf<VL_MAP_INT_VL_MAP_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26068 break;
26069
26070 }
26073 break;
26074
26075 }
26078 break;
26079
26080 }
26083 break;
26084
26085 }
26088 break;
26089
26090 }
26093 break;
26094
26095 }
26098 break;
26099
26100 }
26103 break;
26104
26105 }
26108 break;
26109
26110 }
26113 break;
26114
26115 }
26118 break;
26119
26120 }
26123 break;
26124
26125 }
26128 break;
26129
26130 }
26133 break;
26134
26135 }
26138 break;
26139
26140 }
26143 break;
26144
26145 }
26148 break;
26149
26150 }
26153 break;
26154
26155 }
26158 break;
26159
26160 }
26163 break;
26164
26165 }
26168 break;
26169
26170 }
26173 break;
26174
26175 }
26178 break;
26179
26180 }
26183 break;
26184
26185 }
26188 break;
26189
26190 }
26193 break;
26194
26195 }
26198 break;
26199
26200 }
26203 break;
26204
26205 }
26208 break;
26209
26210 }
26213 break;
26214
26215 }
26218 break;
26219
26220 }
26223 break;
26224
26225 }
26228 break;
26229
26230 }
26231 case LIST_PAIR_INT_INT: {
26232 WriteToBuf<LIST_PAIR_INT_INT>(buf+offset, shapes[col], a, sizes[col]);
26233 break;
26234
26235 }
26236 case VL_LIST_PAIR_INT_INT: {
26237 WriteToBuf<VL_LIST_PAIR_INT_INT>(buf+offset, shapes[col], a, sizes[col]);
26238 break;
26239
26240 }
26242 WriteToBuf<MAP_STRING_PAIR_STRING_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26243 break;
26244
26245 }
26248 break;
26249
26250 }
26253 break;
26254
26255 }
26258 break;
26259
26260 }
26263 break;
26264
26265 }
26268 break;
26269
26270 }
26273 break;
26274
26275 }
26278 break;
26279
26280 }
26283 break;
26284
26285 }
26288 break;
26289
26290 }
26293 break;
26294
26295 }
26298 break;
26299
26300 }
26303 break;
26304
26305 }
26308 break;
26309
26310 }
26313 break;
26314
26315 }
26318 break;
26319
26320 }
26322 WriteToBuf<MAP_STRING_MAP_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26323 break;
26324
26325 }
26327 WriteToBuf<MAP_STRING_MAP_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26328 break;
26329
26330 }
26332 WriteToBuf<MAP_STRING_VL_MAP_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26333 break;
26334
26335 }
26337 WriteToBuf<MAP_STRING_VL_MAP_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26338 break;
26339
26340 }
26342 WriteToBuf<MAP_VL_STRING_MAP_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26343 break;
26344
26345 }
26347 WriteToBuf<MAP_VL_STRING_VL_MAP_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26348 break;
26349
26350 }
26352 WriteToBuf<MAP_VL_STRING_MAP_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26353 break;
26354
26355 }
26357 WriteToBuf<MAP_VL_STRING_VL_MAP_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26358 break;
26359
26360 }
26362 WriteToBuf<VL_MAP_STRING_MAP_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26363 break;
26364
26365 }
26367 WriteToBuf<VL_MAP_VL_STRING_MAP_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26368 break;
26369
26370 }
26372 WriteToBuf<VL_MAP_STRING_VL_MAP_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26373 break;
26374
26375 }
26377 WriteToBuf<VL_MAP_STRING_MAP_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26378 break;
26379
26380 }
26382 WriteToBuf<VL_MAP_STRING_VL_MAP_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26383 break;
26384
26385 }
26387 WriteToBuf<VL_MAP_VL_STRING_MAP_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26388 break;
26389
26390 }
26392 WriteToBuf<VL_MAP_VL_STRING_VL_MAP_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26393 break;
26394
26395 }
26398 break;
26399
26400 }
26403 break;
26404
26405 }
26408 break;
26409
26410 }
26413 break;
26414
26415 }
26418 break;
26419
26420 }
26423 break;
26424
26425 }
26428 break;
26429
26430 }
26433 break;
26434
26435 }
26438 break;
26439
26440 }
26442 WriteToBuf<PAIR_INT_PAIR_STRING_STRING>(buf+offset, shapes[col], a, sizes[col]);
26443 break;
26444
26445 }
26447 WriteToBuf<PAIR_INT_PAIR_VL_STRING_STRING>(buf+offset, shapes[col], a, sizes[col]);
26448 break;
26449
26450 }
26452 WriteToBuf<PAIR_INT_PAIR_STRING_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
26453 break;
26454
26455 }
26457 WriteToBuf<PAIR_INT_PAIR_VL_STRING_VL_STRING>(buf+offset, shapes[col], a, sizes[col]);
26458 break;
26459
26460 }
26461 case PAIR_DOUBLE_DOUBLE: {
26462 WriteToBuf<PAIR_DOUBLE_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26463 break;
26464
26465 }
26468 break;
26469
26470 }
26473 break;
26474
26475 }
26478 break;
26479
26480 }
26483 break;
26484
26485 }
26487 WriteToBuf<PAIR_DOUBLE_MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26488 break;
26489
26490 }
26492 WriteToBuf<PAIR_DOUBLE_VL_MAP_INT_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26493 break;
26494
26495 }
26497 WriteToBuf<VECTOR_PAIR_INT_PAIR_STRING_STRING>(buf+offset, shapes[col], a, sizes[col]);
26498 break;
26499
26500 }
26503 break;
26504
26505 }
26508 break;
26509
26510 }
26513 break;
26514
26515 }
26518 break;
26519
26520 }
26523 break;
26524
26525 }
26528 break;
26529
26530 }
26533 break;
26534
26535 }
26537 WriteToBuf<PAIR_STRING_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26538 break;
26539
26540 }
26542 WriteToBuf<PAIR_VL_STRING_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26543 break;
26544
26545 }
26547 WriteToBuf<PAIR_STRING_VL_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26548 break;
26549
26550 }
26552 WriteToBuf<PAIR_VL_STRING_VL_VECTOR_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26553 break;
26554
26555 }
26557 WriteToBuf<MAP_PAIR_STRING_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26558 break;
26559
26560 }
26562 WriteToBuf<MAP_PAIR_STRING_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26563 break;
26564
26565 }
26567 WriteToBuf<MAP_PAIR_VL_STRING_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26568 break;
26569
26570 }
26572 WriteToBuf<MAP_PAIR_VL_STRING_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26573 break;
26574
26575 }
26577 WriteToBuf<VL_MAP_PAIR_STRING_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26578 break;
26579
26580 }
26582 WriteToBuf<VL_MAP_PAIR_STRING_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26583 break;
26584
26585 }
26587 WriteToBuf<VL_MAP_PAIR_VL_STRING_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26588 break;
26589
26590 }
26592 WriteToBuf<VL_MAP_PAIR_VL_STRING_VL_STRING_INT>(buf+offset, shapes[col], a, sizes[col]);
26593 break;
26594
26595 }
26597 WriteToBuf<MAP_STRING_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26598 break;
26599
26600 }
26602 WriteToBuf<MAP_STRING_MAP_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26603 break;
26604
26605 }
26607 WriteToBuf<MAP_STRING_VL_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26608 break;
26609
26610 }
26612 WriteToBuf<MAP_STRING_VL_MAP_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26613 break;
26614
26615 }
26617 WriteToBuf<MAP_VL_STRING_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26618 break;
26619
26620 }
26622 WriteToBuf<MAP_VL_STRING_VL_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26623 break;
26624
26625 }
26627 WriteToBuf<MAP_VL_STRING_MAP_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26628 break;
26629
26630 }
26633 break;
26634
26635 }
26637 WriteToBuf<VL_MAP_STRING_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26638 break;
26639
26640 }
26642 WriteToBuf<VL_MAP_VL_STRING_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26643 break;
26644
26645 }
26647 WriteToBuf<VL_MAP_STRING_VL_MAP_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26648 break;
26649
26650 }
26652 WriteToBuf<VL_MAP_STRING_MAP_VL_STRING_DOUBLE>(buf+offset, shapes[col], a, sizes[col]);
26653 break;
26654
26655 }
26658 break;
26659
26660 }
26663 break;
26664
26665 }
26668 break;
26669
26670 }
26673 break;
26674
26675 }
26676
26677
26678 default: {
26679 throw ValueError("attempted to retrieve unsupported HDF5 backend type");
26680 }
26681 }
26682 offset += sizes[col];
26683 }
26684 }
26685}
26686
26687template <typename T, DbTypes U>
26688T Hdf5Back::VLRead(const char* rawkey) {
26689 // key is used as offset
26690 Digest key;
26691 memcpy(key.val, rawkey, CYCLUS_SHA1_SIZE);
26692 const std::vector<hsize_t> idx = key.cast<hsize_t>();
26693 hid_t dset = VLDataset(U, false);
26697 NULL, vlchunk_, NULL);
26698 if (status < 0)
26699 throw IOError("could not select hyperslab of value array for reading "
26700 "in the database '" + path_ + "'.");
26701 hvl_t buf;
26702 status = H5Dread(dset, vldts_[U], mspace, dspace, H5P_DEFAULT, &buf);
26703 if (status < 0) {
26704 std::stringstream ss;
26705 ss << U;
26706 throw IOError("failed to read in variable length data "
26707 "in the database '" + path_ + "' (type id " + ss.str() +
26708 ").");
26709 }
26710 T val = VLBufToVal<T>(buf);
26711 status = H5Dvlen_reclaim(vldts_[U], mspace, H5P_DEFAULT, &buf);
26712 if (status < 0)
26713 throw IOError("failed to reclaim variable length data space "
26714 "in the database '" + path_ + "'.");
26717 return val;
26718}
26719
26720
26721hid_t Hdf5Back::VLDataset(DbTypes dbtype, bool forkeys) {
26722 std::string name;
26723 switch (dbtype) {
26724 case VL_STRING: {
26725 name="String";
26726 break;
26727
26728 }
26729 case BLOB: {
26730 name="Blob";
26731 break;
26732
26733 }
26734 case VL_VECTOR_INT: {
26735 name="VectorInt";
26736 break;
26737
26738 }
26739 case VL_VECTOR_FLOAT: {
26740 name="VectorFloat";
26741 break;
26742
26743 }
26744 case VL_VECTOR_DOUBLE: {
26745 name="VectorDouble";
26746 break;
26747
26748 }
26749 case VL_VECTOR_STRING: {
26750 name="VectorString";
26751 break;
26752
26753 }
26754 case VL_VECTOR_VL_STRING: {
26755 name="VectorString";
26756 break;
26757
26758 }
26759 case VL_VECTOR_BLOB: {
26760 name="VectorBlob";
26761 break;
26762
26763 }
26764 case VL_VECTOR_UUID: {
26765 name="VectorUuid";
26766 break;
26767
26768 }
26769 case VL_SET_INT: {
26770 name="SetInt";
26771 break;
26772
26773 }
26774 case VL_SET_FLOAT: {
26775 name="SetFloat";
26776 break;
26777
26778 }
26779 case VL_SET_DOUBLE: {
26780 name="SetDouble";
26781 break;
26782
26783 }
26784 case VL_SET_STRING: {
26785 name="SetString";
26786 break;
26787
26788 }
26789 case VL_SET_VL_STRING: {
26790 name="SetString";
26791 break;
26792
26793 }
26794 case VL_SET_BLOB: {
26795 name="SetBlob";
26796 break;
26797
26798 }
26799 case VL_SET_UUID: {
26800 name="SetUuid";
26801 break;
26802
26803 }
26804 case VL_LIST_BOOL: {
26805 name="ListBool";
26806 break;
26807
26808 }
26809 case VL_LIST_INT: {
26810 name="ListInt";
26811 break;
26812
26813 }
26814 case VL_LIST_FLOAT: {
26815 name="ListFloat";
26816 break;
26817
26818 }
26819 case VL_LIST_DOUBLE: {
26820 name="ListDouble";
26821 break;
26822
26823 }
26824 case VL_LIST_STRING: {
26825 name="ListString";
26826 break;
26827
26828 }
26829 case VL_LIST_VL_STRING: {
26830 name="ListString";
26831 break;
26832
26833 }
26834 case VL_LIST_BLOB: {
26835 name="ListBlob";
26836 break;
26837
26838 }
26839 case VL_LIST_UUID: {
26840 name="ListUuid";
26841 break;
26842
26843 }
26844 case VL_MAP_INT_BOOL: {
26845 name="MapIntBool";
26846 break;
26847
26848 }
26849 case VL_MAP_INT_INT: {
26850 name="MapIntInt";
26851 break;
26852
26853 }
26854 case VL_MAP_INT_FLOAT: {
26855 name="MapIntFloat";
26856 break;
26857
26858 }
26859 case VL_MAP_INT_DOUBLE: {
26860 name="MapIntDouble";
26861 break;
26862
26863 }
26864 case VL_MAP_INT_STRING: {
26865 name="MapIntString";
26866 break;
26867
26868 }
26869 case VL_MAP_INT_VL_STRING: {
26870 name="MapIntString";
26871 break;
26872
26873 }
26874 case VL_MAP_INT_BLOB: {
26875 name="MapIntBlob";
26876 break;
26877
26878 }
26879 case VL_MAP_INT_UUID: {
26880 name="MapIntUuid";
26881 break;
26882
26883 }
26884 case VL_MAP_STRING_BOOL: {
26885 name="MapStringBool";
26886 break;
26887
26888 }
26889 case VL_MAP_VL_STRING_BOOL: {
26890 name="MapStringBool";
26891 break;
26892
26893 }
26894 case VL_MAP_STRING_INT: {
26895 name="MapStringInt";
26896 break;
26897
26898 }
26899 case VL_MAP_VL_STRING_INT: {
26900 name="MapStringInt";
26901 break;
26902
26903 }
26904 case VL_MAP_STRING_FLOAT: {
26905 name="MapStringFloat";
26906 break;
26907
26908 }
26910 name="MapStringFloat";
26911 break;
26912
26913 }
26914 case VL_MAP_STRING_DOUBLE: {
26915 name="MapStringDouble";
26916 break;
26917
26918 }
26920 name="MapStringDouble";
26921 break;
26922
26923 }
26924 case VL_MAP_STRING_STRING: {
26925 name="MapStringString";
26926 break;
26927
26928 }
26930 name="MapStringString";
26931 break;
26932
26933 }
26935 name="MapStringString";
26936 break;
26937
26938 }
26940 name="MapStringString";
26941 break;
26942
26943 }
26944 case VL_MAP_STRING_BLOB: {
26945 name="MapStringBlob";
26946 break;
26947
26948 }
26949 case VL_MAP_VL_STRING_BLOB: {
26950 name="MapStringBlob";
26951 break;
26952
26953 }
26954 case VL_MAP_STRING_UUID: {
26955 name="MapStringUuid";
26956 break;
26957
26958 }
26959 case VL_MAP_VL_STRING_UUID: {
26960 name="MapStringUuid";
26961 break;
26962
26963 }
26965 name="MapPairIntStringDouble";
26966 break;
26967
26968 }
26970 name="MapPairIntStringDouble";
26971 break;
26972
26973 }
26975 name="MapStringVectorDouble";
26976 break;
26977
26978 }
26980 name="MapStringVectorDouble";
26981 break;
26982
26983 }
26985 name="MapStringVectorDouble";
26986 break;
26987
26988 }
26990 name="MapStringVectorDouble";
26991 break;
26992
26993 }
26995 name="MapStringMapIntDouble";
26996 break;
26997
26998 }
27000 name="MapStringMapIntDouble";
27001 break;
27002
27003 }
27005 name="MapStringMapIntDouble";
27006 break;
27007
27008 }
27010 name="MapStringMapIntDouble";
27011 break;
27012
27013 }
27015 name="MapStringPairDoubleMapIntDouble";
27016 break;
27017
27018 }
27020 name="MapStringPairDoubleMapIntDouble";
27021 break;
27022
27023 }
27025 name="MapStringPairDoubleMapIntDouble";
27026 break;
27027
27028 }
27030 name="MapStringPairDoubleMapIntDouble";
27031 break;
27032
27033 }
27035 name="MapIntMapStringDouble";
27036 break;
27037
27038 }
27040 name="MapIntMapStringDouble";
27041 break;
27042
27043 }
27045 name="MapIntMapStringDouble";
27046 break;
27047
27048 }
27050 name="MapIntMapStringDouble";
27051 break;
27052
27053 }
27055 name="MapStringVectorPairIntPairStringString";
27056 break;
27057
27058 }
27060 name="MapStringVectorPairIntPairStringString";
27061 break;
27062
27063 }
27065 name="MapStringVectorPairIntPairStringString";
27066 break;
27067
27068 }
27070 name="MapStringVectorPairIntPairStringString";
27071 break;
27072
27073 }
27075 name="MapStringVectorPairIntPairStringString";
27076 break;
27077
27078 }
27080 name="MapStringVectorPairIntPairStringString";
27081 break;
27082
27083 }
27085 name="MapStringVectorPairIntPairStringString";
27086 break;
27087
27088 }
27090 name="MapStringVectorPairIntPairStringString";
27091 break;
27092
27093 }
27095 name="MapStringVectorPairIntPairStringString";
27096 break;
27097
27098 }
27100 name="MapStringVectorPairIntPairStringString";
27101 break;
27102
27103 }
27105 name="MapStringVectorPairIntPairStringString";
27106 break;
27107
27108 }
27110 name="MapStringVectorPairIntPairStringString";
27111 break;
27112
27113 }
27115 name="MapStringVectorPairIntPairStringString";
27116 break;
27117
27118 }
27120 name="MapStringVectorPairIntPairStringString";
27121 break;
27122
27123 }
27125 name="MapStringVectorPairIntPairStringString";
27126 break;
27127
27128 }
27130 name="MapStringVectorPairIntPairStringString";
27131 break;
27132
27133 }
27134 case VL_LIST_PAIR_INT_INT: {
27135 name="ListPairIntInt";
27136 break;
27137
27138 }
27140 name="MapStringPairStringVectorDouble";
27141 break;
27142
27143 }
27145 name="MapStringPairStringVectorDouble";
27146 break;
27147
27148 }
27150 name="MapStringPairStringVectorDouble";
27151 break;
27152
27153 }
27155 name="MapStringPairStringVectorDouble";
27156 break;
27157
27158 }
27160 name="MapStringPairStringVectorDouble";
27161 break;
27162
27163 }
27165 name="MapStringPairStringVectorDouble";
27166 break;
27167
27168 }
27170 name="MapStringPairStringVectorDouble";
27171 break;
27172
27173 }
27175 name="MapStringPairStringVectorDouble";
27176 break;
27177
27178 }
27180 name="MapStringMapStringInt";
27181 break;
27182
27183 }
27185 name="MapStringMapStringInt";
27186 break;
27187
27188 }
27190 name="MapStringMapStringInt";
27191 break;
27192
27193 }
27195 name="MapStringMapStringInt";
27196 break;
27197
27198 }
27200 name="MapStringMapStringInt";
27201 break;
27202
27203 }
27205 name="MapStringMapStringInt";
27206 break;
27207
27208 }
27210 name="MapStringMapStringInt";
27211 break;
27212
27213 }
27215 name="MapStringMapStringInt";
27216 break;
27217
27218 }
27220 name="VectorPairPairDoubleDoubleMapStringDouble";
27221 break;
27222
27223 }
27225 name="VectorPairPairDoubleDoubleMapStringDouble";
27226 break;
27227
27228 }
27230 name="VectorPairPairDoubleDoubleMapStringDouble";
27231 break;
27232
27233 }
27235 name="VectorPairPairDoubleDoubleMapStringDouble";
27236 break;
27237
27238 }
27240 name="VectorPairIntPairStringString";
27241 break;
27242
27243 }
27245 name="VectorPairIntPairStringString";
27246 break;
27247
27248 }
27250 name="VectorPairIntPairStringString";
27251 break;
27252
27253 }
27255 name="VectorPairIntPairStringString";
27256 break;
27257
27258 }
27260 name="MapPairStringStringInt";
27261 break;
27262
27263 }
27265 name="MapPairStringStringInt";
27266 break;
27267
27268 }
27270 name="MapPairStringStringInt";
27271 break;
27272
27273 }
27275 name="MapPairStringStringInt";
27276 break;
27277
27278 }
27280 name="MapStringMapStringDouble";
27281 break;
27282
27283 }
27285 name="MapStringMapStringDouble";
27286 break;
27287
27288 }
27290 name="MapStringMapStringDouble";
27291 break;
27292
27293 }
27295 name="MapStringMapStringDouble";
27296 break;
27297
27298 }
27300 name="MapStringMapStringDouble";
27301 break;
27302
27303 }
27305 name="MapStringMapStringDouble";
27306 break;
27307
27308 }
27310 name="MapStringMapStringDouble";
27311 break;
27312
27313 }
27315 name="MapStringMapStringDouble";
27316 break;
27317
27318 }
27319
27320
27321 default: {
27322 throw IOError("could not determine variable length dataset name.");
27323 break;
27324 }
27325 }
27326 name += forkeys ? "Keys" : "Vals";
27327
27328 // already opened
27329 if (vldatasets_.count(name) > 0)
27330 return vldatasets_[name];
27331
27332 // already in db
27333 hid_t dt;
27334 hid_t dset;
27335 hid_t dspace;
27336 herr_t status;
27337 if (H5Lexists(file_, name.c_str(), H5P_DEFAULT)) {
27338 dset = H5Dopen2(file_, name.c_str(), H5P_DEFAULT);
27339 if (forkeys) {
27340 // read in existing keys to vlkeys_
27343 char* buf = new char[CYCLUS_SHA1_SIZE * nkeys];
27344 status = H5Dread(dset, sha1_type_, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf);
27345 if (status < 0)
27346 throw IOError("failed to read in keys for " + name);
27347 for (int n = 0; n < nkeys; ++n) {
27348 Digest d = Digest();
27350 vlkeys_[dbtype].insert(d);
27351 }
27353 delete[] buf;
27354 } else {
27355 if (vldts_.count(dbtype) == 0) {
27356 dt = H5Dget_type(dset);
27357 if (dt < 0)
27358 throw IOError("failed to read in HDF5 datatype for " + name);
27359 vldts_[dbtype] = dt;
27360 }
27361 }
27362 vldatasets_[name] = dset;
27363 return dset;
27364 }
27365
27366 // doesn't exist at all
27367 hid_t prop;
27368 if (forkeys) {
27369 hsize_t dims[1] = {0};
27371 hsize_t chunkdims[1] = {512}; // this is a 10 kb chunksize
27372 dt = sha1_type_;
27375 status = H5Pset_chunk(prop, 1, chunkdims);
27376 if (status < 0)
27377 throw IOError("could not create HDF5 array " + name);
27378 } else {
27380 hsize_t chunkdims[CYCLUS_SHA1_NINT] = {1, 1, 1, 1, 1}; // this is a single element
27381 dt = vldts_[dbtype];
27385 if (status < 0)
27386 throw IOError("could not create HDF5 array " + name);
27387 }
27388 dset = H5Dcreate2(file_, name.c_str(), dt, dspace, H5P_DEFAULT, prop, H5P_DEFAULT);
27389 vldatasets_[name] = dset;
27390 return dset;
27391}
27392
27393void Hdf5Back::AppendVLKey(hid_t dset, DbTypes dbtype, const Digest& key) {
27396 hsize_t newlen[1] = {origlen + 1};
27397 hsize_t offset[1] = {origlen};
27398 hsize_t extent[1] = {1};
27400 herr_t status = H5Dextend(dset, newlen);
27401 if (status < 0)
27402 throw IOError("could not resize key array in the database '" + path_ + "'.");
27405 if (status < 0)
27406 throw IOError("could not select hyperslab of key array "
27407 "in the database '" + path_ + "'.");
27408 status = H5Dwrite(dset, sha1_type_, mspace, dspace, H5P_DEFAULT, key.val);
27409 if (status < 0)
27410 throw IOError("could not write digest to key array "
27411 "in the database '" + path_ + "'.");
27414 vlkeys_[dbtype].insert(key);
27415}
27416
27417void Hdf5Back::InsertVLVal(hid_t dset, DbTypes dbtype, const Digest& key,
27418 const std::string& val) {
27420 hsize_t extent[CYCLUS_SHA1_NINT] = {1, 1, 1, 1, 1};
27422 const std::vector<hsize_t> idx = key.cast<hsize_t>();
27424 NULL, extent, NULL);
27425 if (status < 0)
27426 throw IOError("could not select hyperslab of value array "
27427 "in the database '" + path_ + "'.");
27428 const char* buf[1] = {val.c_str()};
27429 status = H5Dwrite(dset, vldts_[dbtype], mspace, dspace, H5P_DEFAULT, buf);
27430 if (status < 0)
27431 throw IOError("could not write string to value array "
27432 "in the database '" + path_ + "'.");
27435}
27436
27437void Hdf5Back::InsertVLVal(hid_t dset, DbTypes dbtype, const Digest& key,
27438 hvl_t buf) {
27440 hsize_t extent[CYCLUS_SHA1_NINT] = {1, 1, 1, 1, 1};
27442 const std::vector<hsize_t> idx = key.cast<hsize_t>();
27444 NULL, extent, NULL);
27445 if (status < 0)
27446 throw IOError("could not select hyperslab of value array "
27447 "in the database '" + path_ + "'.");
27448 status = H5Dwrite(dset, vldts_[dbtype], mspace, dspace, H5P_DEFAULT, &buf);
27449 if (status < 0)
27450 throw IOError("could not write variable length data to value array "
27451 "in the database '" + path_ + "'.");
27452 status = H5Dvlen_reclaim(vldts_[dbtype], mspace, H5P_DEFAULT, &buf);
27453 if (status < 0)
27454 throw IOError("could not free variable length buffer "
27455 "in the database '" + path_ + "'.");
27458}
27459
27460hvl_t Hdf5Back::VLValToBuf(const std::vector<int>& x) {
27461 hvl_t buf;
27462 buf.len=x.size();
27463 size_t item_size1elem=sizeof(int);
27465 size_t nbytes=total_item_size0*buf.len;
27466 buf.p=new char[nbytes];
27467 unsigned int count0=0;
27468 std::vector<int>::const_iterator it0=x.begin();
27469 for(;it0!=x.end();++it0){
27470 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27471 ++count0;
27472
27473 }
27474 return buf;
27475}
27476hvl_t Hdf5Back::VLValToBuf(const std::vector<float>& x) {
27477 hvl_t buf;
27478 buf.len=x.size();
27479 size_t item_size1elem=sizeof(float);
27481 size_t nbytes=total_item_size0*buf.len;
27482 buf.p=new char[nbytes];
27483 unsigned int count0=0;
27484 std::vector<float>::const_iterator it0=x.begin();
27485 for(;it0!=x.end();++it0){
27486 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27487 ++count0;
27488
27489 }
27490 return buf;
27491}
27492hvl_t Hdf5Back::VLValToBuf(const std::vector<double>& x) {
27493 hvl_t buf;
27494 buf.len=x.size();
27495 size_t item_size1elem=sizeof(double);
27497 size_t nbytes=total_item_size0*buf.len;
27498 buf.p=new char[nbytes];
27499 unsigned int count0=0;
27500 std::vector<double>::const_iterator it0=x.begin();
27501 for(;it0!=x.end();++it0){
27502 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27503 ++count0;
27504
27505 }
27506 return buf;
27507}
27508hvl_t Hdf5Back::VLValToBuf(const std::vector<std::string>& x) {
27509 hvl_t buf;
27510 buf.len=x.size();
27513 size_t nbytes=total_item_size0*buf.len;
27514 buf.p=new char[nbytes];
27515 unsigned int count0=0;
27516 std::vector<std::string>::const_iterator it0=x.begin();
27517 for(;it0!=x.end();++it0){
27518 hasher_.Clear();
27519 hasher_.Update((*it0));
27520 Digest key1elem = hasher_.digest();
27521 hid_t keysds1elem = VLDataset(VL_STRING, true);
27522 hid_t valsds1elem = VLDataset(VL_STRING, false);
27523 if (vlkeys_[VL_STRING].count(key1elem) != 1) {
27524 AppendVLKey(keysds1elem, VL_STRING, key1elem);
27525 InsertVLVal(valsds1elem, VL_STRING, key1elem, (*it0));
27526 }
27527 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1elem.val, item_size1elem);
27528 ++count0;
27529
27530 }
27531 return buf;
27532}
27533hvl_t Hdf5Back::VLValToBuf(const std::vector<cyclus::Blob>& x) {
27534 hvl_t buf;
27535 buf.len=x.size();
27538 size_t nbytes=total_item_size0*buf.len;
27539 buf.p=new char[nbytes];
27540 unsigned int count0=0;
27541 std::vector<cyclus::Blob>::const_iterator it0=x.begin();
27542 for(;it0!=x.end();++it0){
27543 hasher_.Clear();
27544 hasher_.Update((*it0));
27545 Digest key1elem = hasher_.digest();
27546 hid_t keysds1elem = VLDataset(BLOB, true);
27547 hid_t valsds1elem = VLDataset(BLOB, false);
27548 if (vlkeys_[BLOB].count(key1elem) != 1) {
27549 AppendVLKey(keysds1elem, BLOB, key1elem);
27550 InsertVLVal(valsds1elem, BLOB, key1elem, ((*it0)).str());
27551 }
27552 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1elem.val, item_size1elem);
27553 ++count0;
27554
27555 }
27556 return buf;
27557}
27558hvl_t Hdf5Back::VLValToBuf(const std::vector<boost::uuids::uuid>& x) {
27559 hvl_t buf;
27560 buf.len=x.size();
27563 size_t nbytes=total_item_size0*buf.len;
27564 buf.p=new char[nbytes];
27565 unsigned int count0=0;
27566 std::vector<boost::uuids::uuid>::const_iterator it0=x.begin();
27567 for(;it0!=x.end();++it0){
27568 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27569 ++count0;
27570
27571 }
27572 return buf;
27573}
27574hvl_t Hdf5Back::VLValToBuf(const std::set<int>& x) {
27575 hvl_t buf;
27576 buf.len=x.size();
27577 size_t item_size1elem=sizeof(int);
27579 size_t nbytes=total_item_size0*buf.len;
27580 buf.p=new char[nbytes];
27581 unsigned int count0=0;
27582 std::set<int>::const_iterator it0=x.begin();
27583 for(;it0!=x.end();++it0){
27584 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27585 ++count0;
27586
27587 }
27588 return buf;
27589}
27590hvl_t Hdf5Back::VLValToBuf(const std::set<float>& x) {
27591 hvl_t buf;
27592 buf.len=x.size();
27593 size_t item_size1elem=sizeof(float);
27595 size_t nbytes=total_item_size0*buf.len;
27596 buf.p=new char[nbytes];
27597 unsigned int count0=0;
27598 std::set<float>::const_iterator it0=x.begin();
27599 for(;it0!=x.end();++it0){
27600 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27601 ++count0;
27602
27603 }
27604 return buf;
27605}
27606hvl_t Hdf5Back::VLValToBuf(const std::set<double>& x) {
27607 hvl_t buf;
27608 buf.len=x.size();
27609 size_t item_size1elem=sizeof(double);
27611 size_t nbytes=total_item_size0*buf.len;
27612 buf.p=new char[nbytes];
27613 unsigned int count0=0;
27614 std::set<double>::const_iterator it0=x.begin();
27615 for(;it0!=x.end();++it0){
27616 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27617 ++count0;
27618
27619 }
27620 return buf;
27621}
27622hvl_t Hdf5Back::VLValToBuf(const std::set<std::string>& x) {
27623 hvl_t buf;
27624 buf.len=x.size();
27627 size_t nbytes=total_item_size0*buf.len;
27628 buf.p=new char[nbytes];
27629 unsigned int count0=0;
27630 std::set<std::string>::const_iterator it0=x.begin();
27631 for(;it0!=x.end();++it0){
27632 hasher_.Clear();
27633 hasher_.Update((*it0));
27634 Digest key1elem = hasher_.digest();
27635 hid_t keysds1elem = VLDataset(VL_STRING, true);
27636 hid_t valsds1elem = VLDataset(VL_STRING, false);
27637 if (vlkeys_[VL_STRING].count(key1elem) != 1) {
27638 AppendVLKey(keysds1elem, VL_STRING, key1elem);
27639 InsertVLVal(valsds1elem, VL_STRING, key1elem, (*it0));
27640 }
27641 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1elem.val, item_size1elem);
27642 ++count0;
27643
27644 }
27645 return buf;
27646}
27647hvl_t Hdf5Back::VLValToBuf(const std::set<cyclus::Blob>& x) {
27648 hvl_t buf;
27649 buf.len=x.size();
27652 size_t nbytes=total_item_size0*buf.len;
27653 buf.p=new char[nbytes];
27654 unsigned int count0=0;
27655 std::set<cyclus::Blob>::const_iterator it0=x.begin();
27656 for(;it0!=x.end();++it0){
27657 hasher_.Clear();
27658 hasher_.Update((*it0));
27659 Digest key1elem = hasher_.digest();
27660 hid_t keysds1elem = VLDataset(BLOB, true);
27661 hid_t valsds1elem = VLDataset(BLOB, false);
27662 if (vlkeys_[BLOB].count(key1elem) != 1) {
27663 AppendVLKey(keysds1elem, BLOB, key1elem);
27664 InsertVLVal(valsds1elem, BLOB, key1elem, ((*it0)).str());
27665 }
27666 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1elem.val, item_size1elem);
27667 ++count0;
27668
27669 }
27670 return buf;
27671}
27672hvl_t Hdf5Back::VLValToBuf(const std::set<boost::uuids::uuid>& x) {
27673 hvl_t buf;
27674 buf.len=x.size();
27677 size_t nbytes=total_item_size0*buf.len;
27678 buf.p=new char[nbytes];
27679 unsigned int count0=0;
27680 std::set<boost::uuids::uuid>::const_iterator it0=x.begin();
27681 for(;it0!=x.end();++it0){
27682 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27683 ++count0;
27684
27685 }
27686 return buf;
27687}
27688hvl_t Hdf5Back::VLValToBuf(const std::list<bool>& x) {
27689 hvl_t buf;
27690 buf.len=x.size();
27691 size_t item_size1elem=sizeof(char);
27693 size_t nbytes=total_item_size0*buf.len;
27694 buf.p=new char[nbytes];
27695 unsigned int count0=0;
27696 std::list<bool>::const_iterator it0=x.begin();
27697 for(;it0!=x.end();++it0){
27698 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27699 ++count0;
27700
27701 }
27702 return buf;
27703}
27704hvl_t Hdf5Back::VLValToBuf(const std::list<int>& x) {
27705 hvl_t buf;
27706 buf.len=x.size();
27707 size_t item_size1elem=sizeof(int);
27709 size_t nbytes=total_item_size0*buf.len;
27710 buf.p=new char[nbytes];
27711 unsigned int count0=0;
27712 std::list<int>::const_iterator it0=x.begin();
27713 for(;it0!=x.end();++it0){
27714 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27715 ++count0;
27716
27717 }
27718 return buf;
27719}
27720hvl_t Hdf5Back::VLValToBuf(const std::list<float>& x) {
27721 hvl_t buf;
27722 buf.len=x.size();
27723 size_t item_size1elem=sizeof(float);
27725 size_t nbytes=total_item_size0*buf.len;
27726 buf.p=new char[nbytes];
27727 unsigned int count0=0;
27728 std::list<float>::const_iterator it0=x.begin();
27729 for(;it0!=x.end();++it0){
27730 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27731 ++count0;
27732
27733 }
27734 return buf;
27735}
27736hvl_t Hdf5Back::VLValToBuf(const std::list<double>& x) {
27737 hvl_t buf;
27738 buf.len=x.size();
27739 size_t item_size1elem=sizeof(double);
27741 size_t nbytes=total_item_size0*buf.len;
27742 buf.p=new char[nbytes];
27743 unsigned int count0=0;
27744 std::list<double>::const_iterator it0=x.begin();
27745 for(;it0!=x.end();++it0){
27746 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27747 ++count0;
27748
27749 }
27750 return buf;
27751}
27752hvl_t Hdf5Back::VLValToBuf(const std::list<std::string>& x) {
27753 hvl_t buf;
27754 buf.len=x.size();
27757 size_t nbytes=total_item_size0*buf.len;
27758 buf.p=new char[nbytes];
27759 unsigned int count0=0;
27760 std::list<std::string>::const_iterator it0=x.begin();
27761 for(;it0!=x.end();++it0){
27762 hasher_.Clear();
27763 hasher_.Update((*it0));
27764 Digest key1elem = hasher_.digest();
27765 hid_t keysds1elem = VLDataset(VL_STRING, true);
27766 hid_t valsds1elem = VLDataset(VL_STRING, false);
27767 if (vlkeys_[VL_STRING].count(key1elem) != 1) {
27768 AppendVLKey(keysds1elem, VL_STRING, key1elem);
27769 InsertVLVal(valsds1elem, VL_STRING, key1elem, (*it0));
27770 }
27771 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1elem.val, item_size1elem);
27772 ++count0;
27773
27774 }
27775 return buf;
27776}
27777hvl_t Hdf5Back::VLValToBuf(const std::list<cyclus::Blob>& x) {
27778 hvl_t buf;
27779 buf.len=x.size();
27782 size_t nbytes=total_item_size0*buf.len;
27783 buf.p=new char[nbytes];
27784 unsigned int count0=0;
27785 std::list<cyclus::Blob>::const_iterator it0=x.begin();
27786 for(;it0!=x.end();++it0){
27787 hasher_.Clear();
27788 hasher_.Update((*it0));
27789 Digest key1elem = hasher_.digest();
27790 hid_t keysds1elem = VLDataset(BLOB, true);
27791 hid_t valsds1elem = VLDataset(BLOB, false);
27792 if (vlkeys_[BLOB].count(key1elem) != 1) {
27793 AppendVLKey(keysds1elem, BLOB, key1elem);
27794 InsertVLVal(valsds1elem, BLOB, key1elem, ((*it0)).str());
27795 }
27796 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1elem.val, item_size1elem);
27797 ++count0;
27798
27799 }
27800 return buf;
27801}
27802hvl_t Hdf5Back::VLValToBuf(const std::list<boost::uuids::uuid>& x) {
27803 hvl_t buf;
27804 buf.len=x.size();
27807 size_t nbytes=total_item_size0*buf.len;
27808 buf.p=new char[nbytes];
27809 unsigned int count0=0;
27810 std::list<boost::uuids::uuid>::const_iterator it0=x.begin();
27811 for(;it0!=x.end();++it0){
27812 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0)), item_size1elem);
27813 ++count0;
27814
27815 }
27816 return buf;
27817}
27818hvl_t Hdf5Back::VLValToBuf(const std::map<int, bool>& x) {
27819 hvl_t buf;
27820 buf.len=x.size();
27821 size_t item_size1key=sizeof(int);
27822 size_t item_size1val=sizeof(char);
27824 size_t nbytes=total_item_size0*buf.len;
27825 buf.p=new char[nbytes];
27826 unsigned int count0=0;
27827 std::map<int, bool>::const_iterator it0=x.begin();
27828 for(;it0!=x.end();++it0){
27829 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &(it0->first), item_size1key);
27830 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
27831 ++count0;
27832
27833 }
27834 return buf;
27835}
27836hvl_t Hdf5Back::VLValToBuf(const std::map<int, int>& x) {
27837 hvl_t buf;
27838 buf.len=x.size();
27839 size_t item_size1key=sizeof(int);
27840 size_t item_size1val=sizeof(int);
27842 size_t nbytes=total_item_size0*buf.len;
27843 buf.p=new char[nbytes];
27844 unsigned int count0=0;
27845 std::map<int, int>::const_iterator it0=x.begin();
27846 for(;it0!=x.end();++it0){
27847 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &(it0->first), item_size1key);
27848 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
27849 ++count0;
27850
27851 }
27852 return buf;
27853}
27854hvl_t Hdf5Back::VLValToBuf(const std::map<int, float>& x) {
27855 hvl_t buf;
27856 buf.len=x.size();
27857 size_t item_size1key=sizeof(int);
27858 size_t item_size1val=sizeof(float);
27860 size_t nbytes=total_item_size0*buf.len;
27861 buf.p=new char[nbytes];
27862 unsigned int count0=0;
27863 std::map<int, float>::const_iterator it0=x.begin();
27864 for(;it0!=x.end();++it0){
27865 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &(it0->first), item_size1key);
27866 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
27867 ++count0;
27868
27869 }
27870 return buf;
27871}
27872hvl_t Hdf5Back::VLValToBuf(const std::map<int, double>& x) {
27873 hvl_t buf;
27874 buf.len=x.size();
27875 size_t item_size1key=sizeof(int);
27876 size_t item_size1val=sizeof(double);
27878 size_t nbytes=total_item_size0*buf.len;
27879 buf.p=new char[nbytes];
27880 unsigned int count0=0;
27881 std::map<int, double>::const_iterator it0=x.begin();
27882 for(;it0!=x.end();++it0){
27883 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &(it0->first), item_size1key);
27884 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
27885 ++count0;
27886
27887 }
27888 return buf;
27889}
27890hvl_t Hdf5Back::VLValToBuf(const std::map<int, std::string>& x) {
27891 hvl_t buf;
27892 buf.len=x.size();
27893 size_t item_size1key=sizeof(int);
27896 size_t nbytes=total_item_size0*buf.len;
27897 buf.p=new char[nbytes];
27898 unsigned int count0=0;
27899 std::map<int, std::string>::const_iterator it0=x.begin();
27900 for(;it0!=x.end();++it0){
27901 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &(it0->first), item_size1key);
27902 hasher_.Clear();
27903 hasher_.Update(it0->second);
27904 Digest key1val = hasher_.digest();
27905 hid_t keysds1val = VLDataset(VL_STRING, true);
27906 hid_t valsds1val = VLDataset(VL_STRING, false);
27907 if (vlkeys_[VL_STRING].count(key1val) != 1) {
27908 AppendVLKey(keysds1val, VL_STRING, key1val);
27909 InsertVLVal(valsds1val, VL_STRING, key1val, it0->second);
27910 }
27911 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, key1val.val, item_size1val);
27912 ++count0;
27913
27914 }
27915 return buf;
27916}
27917hvl_t Hdf5Back::VLValToBuf(const std::map<int, cyclus::Blob>& x) {
27918 hvl_t buf;
27919 buf.len=x.size();
27920 size_t item_size1key=sizeof(int);
27923 size_t nbytes=total_item_size0*buf.len;
27924 buf.p=new char[nbytes];
27925 unsigned int count0=0;
27926 std::map<int, cyclus::Blob>::const_iterator it0=x.begin();
27927 for(;it0!=x.end();++it0){
27928 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &(it0->first), item_size1key);
27929 hasher_.Clear();
27930 hasher_.Update(it0->second);
27931 Digest key1val = hasher_.digest();
27932 hid_t keysds1val = VLDataset(BLOB, true);
27933 hid_t valsds1val = VLDataset(BLOB, false);
27934 if (vlkeys_[BLOB].count(key1val) != 1) {
27935 AppendVLKey(keysds1val, BLOB, key1val);
27936 InsertVLVal(valsds1val, BLOB, key1val, (it0->second).str());
27937 }
27938 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, key1val.val, item_size1val);
27939 ++count0;
27940
27941 }
27942 return buf;
27943}
27944hvl_t Hdf5Back::VLValToBuf(const std::map<int, boost::uuids::uuid>& x) {
27945 hvl_t buf;
27946 buf.len=x.size();
27947 size_t item_size1key=sizeof(int);
27950 size_t nbytes=total_item_size0*buf.len;
27951 buf.p=new char[nbytes];
27952 unsigned int count0=0;
27953 std::map<int, boost::uuids::uuid>::const_iterator it0=x.begin();
27954 for(;it0!=x.end();++it0){
27955 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &(it0->first), item_size1key);
27956 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
27957 ++count0;
27958
27959 }
27960 return buf;
27961}
27962hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, bool>& x) {
27963 hvl_t buf;
27964 buf.len=x.size();
27966 size_t item_size1val=sizeof(char);
27968 size_t nbytes=total_item_size0*buf.len;
27969 buf.p=new char[nbytes];
27970 unsigned int count0=0;
27971 std::map<std::string, bool>::const_iterator it0=x.begin();
27972 for(;it0!=x.end();++it0){
27973 hasher_.Clear();
27974 hasher_.Update(it0->first);
27975 Digest key1key = hasher_.digest();
27976 hid_t keysds1key = VLDataset(VL_STRING, true);
27977 hid_t valsds1key = VLDataset(VL_STRING, false);
27978 if (vlkeys_[VL_STRING].count(key1key) != 1) {
27979 AppendVLKey(keysds1key, VL_STRING, key1key);
27980 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
27981 }
27982 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
27983 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
27984 ++count0;
27985
27986 }
27987 return buf;
27988}
27989hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, int>& x) {
27990 hvl_t buf;
27991 buf.len=x.size();
27993 size_t item_size1val=sizeof(int);
27995 size_t nbytes=total_item_size0*buf.len;
27996 buf.p=new char[nbytes];
27997 unsigned int count0=0;
27998 std::map<std::string, int>::const_iterator it0=x.begin();
27999 for(;it0!=x.end();++it0){
28000 hasher_.Clear();
28001 hasher_.Update(it0->first);
28002 Digest key1key = hasher_.digest();
28003 hid_t keysds1key = VLDataset(VL_STRING, true);
28004 hid_t valsds1key = VLDataset(VL_STRING, false);
28005 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28006 AppendVLKey(keysds1key, VL_STRING, key1key);
28007 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28008 }
28009 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28010 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
28011 ++count0;
28012
28013 }
28014 return buf;
28015}
28016hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, float>& x) {
28017 hvl_t buf;
28018 buf.len=x.size();
28020 size_t item_size1val=sizeof(float);
28022 size_t nbytes=total_item_size0*buf.len;
28023 buf.p=new char[nbytes];
28024 unsigned int count0=0;
28025 std::map<std::string, float>::const_iterator it0=x.begin();
28026 for(;it0!=x.end();++it0){
28027 hasher_.Clear();
28028 hasher_.Update(it0->first);
28029 Digest key1key = hasher_.digest();
28030 hid_t keysds1key = VLDataset(VL_STRING, true);
28031 hid_t valsds1key = VLDataset(VL_STRING, false);
28032 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28033 AppendVLKey(keysds1key, VL_STRING, key1key);
28034 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28035 }
28036 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28037 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
28038 ++count0;
28039
28040 }
28041 return buf;
28042}
28043hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, double>& x) {
28044 hvl_t buf;
28045 buf.len=x.size();
28047 size_t item_size1val=sizeof(double);
28049 size_t nbytes=total_item_size0*buf.len;
28050 buf.p=new char[nbytes];
28051 unsigned int count0=0;
28052 std::map<std::string, double>::const_iterator it0=x.begin();
28053 for(;it0!=x.end();++it0){
28054 hasher_.Clear();
28055 hasher_.Update(it0->first);
28056 Digest key1key = hasher_.digest();
28057 hid_t keysds1key = VLDataset(VL_STRING, true);
28058 hid_t valsds1key = VLDataset(VL_STRING, false);
28059 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28060 AppendVLKey(keysds1key, VL_STRING, key1key);
28061 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28062 }
28063 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28064 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
28065 ++count0;
28066
28067 }
28068 return buf;
28069}
28070hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, std::string>& x) {
28071 hvl_t buf;
28072 buf.len=x.size();
28076 size_t nbytes=total_item_size0*buf.len;
28077 buf.p=new char[nbytes];
28078 unsigned int count0=0;
28079 std::map<std::string, std::string>::const_iterator it0=x.begin();
28080 for(;it0!=x.end();++it0){
28081 hasher_.Clear();
28082 hasher_.Update(it0->first);
28083 Digest key1key = hasher_.digest();
28084 hid_t keysds1key = VLDataset(VL_STRING, true);
28085 hid_t valsds1key = VLDataset(VL_STRING, false);
28086 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28087 AppendVLKey(keysds1key, VL_STRING, key1key);
28088 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28089 }
28090 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28091 hasher_.Clear();
28092 hasher_.Update(it0->second);
28093 Digest key1val = hasher_.digest();
28094 hid_t keysds1val = VLDataset(VL_STRING, true);
28095 hid_t valsds1val = VLDataset(VL_STRING, false);
28096 if (vlkeys_[VL_STRING].count(key1val) != 1) {
28097 AppendVLKey(keysds1val, VL_STRING, key1val);
28098 InsertVLVal(valsds1val, VL_STRING, key1val, it0->second);
28099 }
28100 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, key1val.val, item_size1val);
28101 ++count0;
28102
28103 }
28104 return buf;
28105}
28106hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, cyclus::Blob>& x) {
28107 hvl_t buf;
28108 buf.len=x.size();
28112 size_t nbytes=total_item_size0*buf.len;
28113 buf.p=new char[nbytes];
28114 unsigned int count0=0;
28115 std::map<std::string, cyclus::Blob>::const_iterator it0=x.begin();
28116 for(;it0!=x.end();++it0){
28117 hasher_.Clear();
28118 hasher_.Update(it0->first);
28119 Digest key1key = hasher_.digest();
28120 hid_t keysds1key = VLDataset(VL_STRING, true);
28121 hid_t valsds1key = VLDataset(VL_STRING, false);
28122 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28123 AppendVLKey(keysds1key, VL_STRING, key1key);
28124 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28125 }
28126 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28127 hasher_.Clear();
28128 hasher_.Update(it0->second);
28129 Digest key1val = hasher_.digest();
28130 hid_t keysds1val = VLDataset(BLOB, true);
28131 hid_t valsds1val = VLDataset(BLOB, false);
28132 if (vlkeys_[BLOB].count(key1val) != 1) {
28133 AppendVLKey(keysds1val, BLOB, key1val);
28134 InsertVLVal(valsds1val, BLOB, key1val, (it0->second).str());
28135 }
28136 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, key1val.val, item_size1val);
28137 ++count0;
28138
28139 }
28140 return buf;
28141}
28142hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, boost::uuids::uuid>& x) {
28143 hvl_t buf;
28144 buf.len=x.size();
28148 size_t nbytes=total_item_size0*buf.len;
28149 buf.p=new char[nbytes];
28150 unsigned int count0=0;
28151 std::map<std::string, boost::uuids::uuid>::const_iterator it0=x.begin();
28152 for(;it0!=x.end();++it0){
28153 hasher_.Clear();
28154 hasher_.Update(it0->first);
28155 Digest key1key = hasher_.digest();
28156 hid_t keysds1key = VLDataset(VL_STRING, true);
28157 hid_t valsds1key = VLDataset(VL_STRING, false);
28158 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28159 AppendVLKey(keysds1key, VL_STRING, key1key);
28160 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28161 }
28162 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28163 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
28164 ++count0;
28165
28166 }
28167 return buf;
28168}
28169hvl_t Hdf5Back::VLValToBuf(const std::map<std::pair<int, std::string>, double>& x) {
28170 hvl_t buf;
28171 buf.len=x.size();
28172 size_t item_size2keyfirst=sizeof(int);
28176 size_t item_size1val=sizeof(double);
28178 size_t nbytes=total_item_size0*buf.len;
28179 buf.p=new char[nbytes];
28180 unsigned int count0=0;
28181 std::map<std::pair<int, std::string>, double>::const_iterator it0=x.begin();
28182 for(;it0!=x.end();++it0){
28183 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &(it0->first.first), item_size2keyfirst);
28184 hasher_.Clear();
28185 hasher_.Update(it0->first.second);
28186 Digest key2keysecond = hasher_.digest();
28187 hid_t keysds2keysecond = VLDataset(VL_STRING, true);
28188 hid_t valsds2keysecond = VLDataset(VL_STRING, false);
28189 if (vlkeys_[VL_STRING].count(key2keysecond) != 1) {
28191 InsertVLVal(valsds2keysecond, VL_STRING, key2keysecond, it0->first.second);
28192 }
28194 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
28195 ++count0;
28196
28197 }
28198 return buf;
28199}
28200hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, std::vector<double>>& x) {
28201 hvl_t buf;
28202 buf.len=x.size();
28206 size_t nbytes=total_item_size0*buf.len;
28207 buf.p=new char[nbytes];
28208 unsigned int count0=0;
28209 std::map<std::string, std::vector<double>>::const_iterator it0=x.begin();
28210 for(;it0!=x.end();++it0){
28211 hasher_.Clear();
28212 hasher_.Update(it0->first);
28213 Digest key1key = hasher_.digest();
28214 hid_t keysds1key = VLDataset(VL_STRING, true);
28215 hid_t valsds1key = VLDataset(VL_STRING, false);
28216 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28217 AppendVLKey(keysds1key, VL_STRING, key1key);
28218 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28219 }
28220 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28221 hasher_.Clear();
28222 hasher_.Update(it0->second);
28223 Digest key1val = hasher_.digest();
28224 hid_t keysds1val = VLDataset(VL_VECTOR_DOUBLE, true);
28225 hid_t valsds1val = VLDataset(VL_VECTOR_DOUBLE, false);
28226 if (vlkeys_[VL_VECTOR_DOUBLE].count(key1val) != 1) {
28227 hvl_t buf1val = VLValToBuf(it0->second);
28228 AppendVLKey(keysds1val, VL_VECTOR_DOUBLE, key1val);
28230 }
28231 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, key1val.val, item_size1val);
28232 ++count0;
28233
28234 }
28235 return buf;
28236}
28237hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, std::map<int, double>>& x) {
28238 hvl_t buf;
28239 buf.len=x.size();
28243 size_t nbytes=total_item_size0*buf.len;
28244 buf.p=new char[nbytes];
28245 unsigned int count0=0;
28246 std::map<std::string, std::map<int, double>>::const_iterator it0=x.begin();
28247 for(;it0!=x.end();++it0){
28248 hasher_.Clear();
28249 hasher_.Update(it0->first);
28250 Digest key1key = hasher_.digest();
28251 hid_t keysds1key = VLDataset(VL_STRING, true);
28252 hid_t valsds1key = VLDataset(VL_STRING, false);
28253 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28254 AppendVLKey(keysds1key, VL_STRING, key1key);
28255 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28256 }
28257 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28258 hasher_.Clear();
28259 hasher_.Update(it0->second);
28260 Digest key1val = hasher_.digest();
28261 hid_t keysds1val = VLDataset(VL_MAP_INT_DOUBLE, true);
28262 hid_t valsds1val = VLDataset(VL_MAP_INT_DOUBLE, false);
28263 if (vlkeys_[VL_MAP_INT_DOUBLE].count(key1val) != 1) {
28264 hvl_t buf1val = VLValToBuf(it0->second);
28265 AppendVLKey(keysds1val, VL_MAP_INT_DOUBLE, key1val);
28267 }
28268 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, key1val.val, item_size1val);
28269 ++count0;
28270
28271 }
28272 return buf;
28273}
28274hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, std::pair<double, std::map<int, double>>>& x) {
28275 hvl_t buf;
28276 buf.len=x.size();
28277 size_t item_size2valfirst=sizeof(double);
28283 size_t nbytes=total_item_size0*buf.len;
28284 buf.p=new char[nbytes];
28285 unsigned int count0=0;
28286 std::map<std::string, std::pair<double, std::map<int, double>>>::const_iterator it0=x.begin();
28287 for(;it0!=x.end();++it0){
28288 hasher_.Clear();
28289 hasher_.Update(it0->first);
28290 Digest key1key = hasher_.digest();
28291 hid_t keysds1key = VLDataset(VL_STRING, true);
28292 hid_t valsds1key = VLDataset(VL_STRING, false);
28293 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28294 AppendVLKey(keysds1key, VL_STRING, key1key);
28295 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28296 }
28297 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28298 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second.first), item_size2valfirst);
28299 hasher_.Clear();
28300 hasher_.Update(it0->second.second);
28301 Digest key2valsecond = hasher_.digest();
28302 hid_t keysds2valsecond = VLDataset(VL_MAP_INT_DOUBLE, true);
28303 hid_t valsds2valsecond = VLDataset(VL_MAP_INT_DOUBLE, false);
28304 if (vlkeys_[VL_MAP_INT_DOUBLE].count(key2valsecond) != 1) {
28305 hvl_t buf2valsecond = VLValToBuf(it0->second.second);
28308 }
28310 ++count0;
28311
28312 }
28313 return buf;
28314}
28315hvl_t Hdf5Back::VLValToBuf(const std::map<int, std::map<std::string, double>>& x) {
28316 hvl_t buf;
28317 buf.len=x.size();
28318 size_t item_size1key=sizeof(int);
28321 size_t nbytes=total_item_size0*buf.len;
28322 buf.p=new char[nbytes];
28323 unsigned int count0=0;
28324 std::map<int, std::map<std::string, double>>::const_iterator it0=x.begin();
28325 for(;it0!=x.end();++it0){
28326 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &(it0->first), item_size1key);
28327 hasher_.Clear();
28328 hasher_.Update(it0->second);
28329 Digest key1val = hasher_.digest();
28330 hid_t keysds1val = VLDataset(VL_MAP_VL_STRING_DOUBLE, true);
28331 hid_t valsds1val = VLDataset(VL_MAP_VL_STRING_DOUBLE, false);
28332 if (vlkeys_[VL_MAP_VL_STRING_DOUBLE].count(key1val) != 1) {
28333 hvl_t buf1val = VLValToBuf(it0->second);
28336 }
28337 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, key1val.val, item_size1val);
28338 ++count0;
28339
28340 }
28341 return buf;
28342}
28343hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>& x) {
28344 hvl_t buf;
28345 buf.len=x.size();
28349 size_t nbytes=total_item_size0*buf.len;
28350 buf.p=new char[nbytes];
28351 unsigned int count0=0;
28352 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>::const_iterator it0=x.begin();
28353 for(;it0!=x.end();++it0){
28354 hasher_.Clear();
28355 hasher_.Update(it0->first);
28356 Digest key1key = hasher_.digest();
28357 hid_t keysds1key = VLDataset(VL_STRING, true);
28358 hid_t valsds1key = VLDataset(VL_STRING, false);
28359 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28360 AppendVLKey(keysds1key, VL_STRING, key1key);
28361 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28362 }
28363 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28364 hasher_.Clear();
28365 hasher_.Update(it0->second);
28366 Digest key1val = hasher_.digest();
28369 if (vlkeys_[VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING].count(key1val) != 1) {
28370 hvl_t buf1val = VLValToBuf(it0->second);
28373 }
28374 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, key1val.val, item_size1val);
28375 ++count0;
28376
28377 }
28378 return buf;
28379}
28380hvl_t Hdf5Back::VLValToBuf(const std::list<std::pair<int, int>>& x) {
28381 hvl_t buf;
28382 buf.len=x.size();
28383 size_t item_size2elemfirst=sizeof(int);
28384 size_t item_size2elemsecond=sizeof(int);
28388 size_t nbytes=total_item_size0*buf.len;
28389 buf.p=new char[nbytes];
28390 unsigned int count0=0;
28391 std::list<std::pair<int, int>>::const_iterator it0=x.begin();
28392 for(;it0!=x.end();++it0){
28393 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0).first), item_size2elemfirst);
28394 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size2elemfirst, &((*it0).second), item_size2elemsecond);
28395 ++count0;
28396
28397 }
28398 return buf;
28399}
28400hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, std::pair<std::string, std::vector<double>>>& x) {
28401 hvl_t buf;
28402 buf.len=x.size();
28409 size_t nbytes=total_item_size0*buf.len;
28410 buf.p=new char[nbytes];
28411 unsigned int count0=0;
28412 std::map<std::string, std::pair<std::string, std::vector<double>>>::const_iterator it0=x.begin();
28413 for(;it0!=x.end();++it0){
28414 hasher_.Clear();
28415 hasher_.Update(it0->first);
28416 Digest key1key = hasher_.digest();
28417 hid_t keysds1key = VLDataset(VL_STRING, true);
28418 hid_t valsds1key = VLDataset(VL_STRING, false);
28419 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28420 AppendVLKey(keysds1key, VL_STRING, key1key);
28421 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28422 }
28423 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28424 hasher_.Clear();
28425 hasher_.Update(it0->second.first);
28426 Digest key2valfirst = hasher_.digest();
28427 hid_t keysds2valfirst = VLDataset(VL_STRING, true);
28428 hid_t valsds2valfirst = VLDataset(VL_STRING, false);
28429 if (vlkeys_[VL_STRING].count(key2valfirst) != 1) {
28430 AppendVLKey(keysds2valfirst, VL_STRING, key2valfirst);
28431 InsertVLVal(valsds2valfirst, VL_STRING, key2valfirst, it0->second.first);
28432 }
28434 hasher_.Clear();
28435 hasher_.Update(it0->second.second);
28436 Digest key2valsecond = hasher_.digest();
28437 hid_t keysds2valsecond = VLDataset(VL_VECTOR_DOUBLE, true);
28438 hid_t valsds2valsecond = VLDataset(VL_VECTOR_DOUBLE, false);
28439 if (vlkeys_[VL_VECTOR_DOUBLE].count(key2valsecond) != 1) {
28440 hvl_t buf2valsecond = VLValToBuf(it0->second.second);
28443 }
28445 ++count0;
28446
28447 }
28448 return buf;
28449}
28450hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, std::map<std::string, int>>& x) {
28451 hvl_t buf;
28452 buf.len=x.size();
28456 size_t nbytes=total_item_size0*buf.len;
28457 buf.p=new char[nbytes];
28458 unsigned int count0=0;
28459 std::map<std::string, std::map<std::string, int>>::const_iterator it0=x.begin();
28460 for(;it0!=x.end();++it0){
28461 hasher_.Clear();
28462 hasher_.Update(it0->first);
28463 Digest key1key = hasher_.digest();
28464 hid_t keysds1key = VLDataset(VL_STRING, true);
28465 hid_t valsds1key = VLDataset(VL_STRING, false);
28466 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28467 AppendVLKey(keysds1key, VL_STRING, key1key);
28468 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28469 }
28470 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28471 hasher_.Clear();
28472 hasher_.Update(it0->second);
28473 Digest key1val = hasher_.digest();
28474 hid_t keysds1val = VLDataset(VL_MAP_VL_STRING_INT, true);
28475 hid_t valsds1val = VLDataset(VL_MAP_VL_STRING_INT, false);
28476 if (vlkeys_[VL_MAP_VL_STRING_INT].count(key1val) != 1) {
28477 hvl_t buf1val = VLValToBuf(it0->second);
28480 }
28481 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, key1val.val, item_size1val);
28482 ++count0;
28483
28484 }
28485 return buf;
28486}
28487hvl_t Hdf5Back::VLValToBuf(const std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>& x) {
28488 hvl_t buf;
28489 buf.len=x.size();
28490 size_t item_size3elemfirstfirst=sizeof(double);
28491 size_t item_size3elemfirstsecond=sizeof(double);
28498 size_t nbytes=total_item_size0*buf.len;
28499 buf.p=new char[nbytes];
28500 unsigned int count0=0;
28501 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>::const_iterator it0=x.begin();
28502 for(;it0!=x.end();++it0){
28503 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0).first.first), item_size3elemfirstfirst);
28504 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size3elemfirstfirst, &((*it0).first.second), item_size3elemfirstsecond);
28505 hasher_.Clear();
28506 hasher_.Update((*it0).second);
28507 Digest key2elemsecond = hasher_.digest();
28510 if (vlkeys_[VL_MAP_VL_STRING_DOUBLE].count(key2elemsecond) != 1) {
28511 hvl_t buf2elemsecond = VLValToBuf((*it0).second);
28514 }
28516 ++count0;
28517
28518 }
28519 return buf;
28520}
28521hvl_t Hdf5Back::VLValToBuf(const std::vector<std::pair<int, std::pair<std::string, std::string>>>& x) {
28522 hvl_t buf;
28523 buf.len=x.size();
28527 size_t item_size2elemfirst=sizeof(int);
28532 size_t nbytes=total_item_size0*buf.len;
28533 buf.p=new char[nbytes];
28534 unsigned int count0=0;
28535 std::vector<std::pair<int, std::pair<std::string, std::string>>>::const_iterator it0=x.begin();
28536 for(;it0!=x.end();++it0){
28537 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), &((*it0).first), item_size2elemfirst);
28538 hasher_.Clear();
28539 hasher_.Update((*it0).second.first);
28540 Digest key3elemsecondfirst = hasher_.digest();
28541 hid_t keysds3elemsecondfirst = VLDataset(VL_STRING, true);
28542 hid_t valsds3elemsecondfirst = VLDataset(VL_STRING, false);
28543 if (vlkeys_[VL_STRING].count(key3elemsecondfirst) != 1) {
28545 InsertVLVal(valsds3elemsecondfirst, VL_STRING, key3elemsecondfirst, (*it0).second.first);
28546 }
28548 hasher_.Clear();
28549 hasher_.Update((*it0).second.second);
28550 Digest key3elemsecondsecond = hasher_.digest();
28551 hid_t keysds3elemsecondsecond = VLDataset(VL_STRING, true);
28552 hid_t valsds3elemsecondsecond = VLDataset(VL_STRING, false);
28553 if (vlkeys_[VL_STRING].count(key3elemsecondsecond) != 1) {
28555 InsertVLVal(valsds3elemsecondsecond, VL_STRING, key3elemsecondsecond, (*it0).second.second);
28556 }
28558 ++count0;
28559
28560 }
28561 return buf;
28562}
28563hvl_t Hdf5Back::VLValToBuf(const std::map<std::pair<std::string, std::string>, int>& x) {
28564 hvl_t buf;
28565 buf.len=x.size();
28570 size_t item_size1val=sizeof(int);
28572 size_t nbytes=total_item_size0*buf.len;
28573 buf.p=new char[nbytes];
28574 unsigned int count0=0;
28575 std::map<std::pair<std::string, std::string>, int>::const_iterator it0=x.begin();
28576 for(;it0!=x.end();++it0){
28577 hasher_.Clear();
28578 hasher_.Update(it0->first.first);
28579 Digest key2keyfirst = hasher_.digest();
28580 hid_t keysds2keyfirst = VLDataset(VL_STRING, true);
28581 hid_t valsds2keyfirst = VLDataset(VL_STRING, false);
28582 if (vlkeys_[VL_STRING].count(key2keyfirst) != 1) {
28583 AppendVLKey(keysds2keyfirst, VL_STRING, key2keyfirst);
28584 InsertVLVal(valsds2keyfirst, VL_STRING, key2keyfirst, it0->first.first);
28585 }
28586 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key2keyfirst.val, item_size2keyfirst);
28587 hasher_.Clear();
28588 hasher_.Update(it0->first.second);
28589 Digest key2keysecond = hasher_.digest();
28590 hid_t keysds2keysecond = VLDataset(VL_STRING, true);
28591 hid_t valsds2keysecond = VLDataset(VL_STRING, false);
28592 if (vlkeys_[VL_STRING].count(key2keysecond) != 1) {
28594 InsertVLVal(valsds2keysecond, VL_STRING, key2keysecond, it0->first.second);
28595 }
28597 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, &(it0->second), item_size1val);
28598 ++count0;
28599
28600 }
28601 return buf;
28602}
28603hvl_t Hdf5Back::VLValToBuf(const std::map<std::string, std::map<std::string, double>>& x) {
28604 hvl_t buf;
28605 buf.len=x.size();
28609 size_t nbytes=total_item_size0*buf.len;
28610 buf.p=new char[nbytes];
28611 unsigned int count0=0;
28612 std::map<std::string, std::map<std::string, double>>::const_iterator it0=x.begin();
28613 for(;it0!=x.end();++it0){
28614 hasher_.Clear();
28615 hasher_.Update(it0->first);
28616 Digest key1key = hasher_.digest();
28617 hid_t keysds1key = VLDataset(VL_STRING, true);
28618 hid_t valsds1key = VLDataset(VL_STRING, false);
28619 if (vlkeys_[VL_STRING].count(key1key) != 1) {
28620 AppendVLKey(keysds1key, VL_STRING, key1key);
28621 InsertVLVal(valsds1key, VL_STRING, key1key, it0->first);
28622 }
28623 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0), key1key.val, item_size1key);
28624 hasher_.Clear();
28625 hasher_.Update(it0->second);
28626 Digest key1val = hasher_.digest();
28627 hid_t keysds1val = VLDataset(VL_MAP_VL_STRING_DOUBLE, true);
28628 hid_t valsds1val = VLDataset(VL_MAP_VL_STRING_DOUBLE, false);
28629 if (vlkeys_[VL_MAP_VL_STRING_DOUBLE].count(key1val) != 1) {
28630 hvl_t buf1val = VLValToBuf(it0->second);
28633 }
28634 memcpy(reinterpret_cast<char*>(buf.p)+(total_item_size0*count0)+item_size1key, key1val.val, item_size1val);
28635 ++count0;
28636
28637 }
28638 return buf;
28639}
28640
28641
28642
28643template<>
28644std::vector<int> Hdf5Back::VLBufToVal<std::vector<int>>(const hvl_t& buf) {
28645 std::vector<int> x0;
28646 char* p=reinterpret_cast<char*>(buf.p);
28647 size_t item_size1elem=sizeof(int);
28649 unsigned int count0=0;
28650 for(;count0<buf.len;++count0){
28651 int x1elem=*reinterpret_cast<int*>(p+(total_item_size0*count0));
28652 x0.push_back(x1elem);
28653
28654 }
28655 return x0;
28656}
28657template<>
28658std::vector<float> Hdf5Back::VLBufToVal<std::vector<float>>(const hvl_t& buf) {
28659 std::vector<float> x0;
28660 char* p=reinterpret_cast<char*>(buf.p);
28661 size_t item_size1elem=sizeof(float);
28663 unsigned int count0=0;
28664 for(;count0<buf.len;++count0){
28665 float x1elem=*reinterpret_cast<float*>(p+(total_item_size0*count0));
28666 x0.push_back(x1elem);
28667
28668 }
28669 return x0;
28670}
28671template<>
28672std::vector<double> Hdf5Back::VLBufToVal<std::vector<double>>(const hvl_t& buf) {
28673 std::vector<double> x0;
28674 char* p=reinterpret_cast<char*>(buf.p);
28675 size_t item_size1elem=sizeof(double);
28677 unsigned int count0=0;
28678 for(;count0<buf.len;++count0){
28679 double x1elem=*reinterpret_cast<double*>(p+(total_item_size0*count0));
28680 x0.push_back(x1elem);
28681
28682 }
28683 return x0;
28684}
28685template<>
28686std::vector<std::string> Hdf5Back::VLBufToVal<std::vector<std::string>>(const hvl_t& buf) {
28687 std::vector<std::string> x0;
28688 char* p=reinterpret_cast<char*>(buf.p);
28691 unsigned int count0=0;
28692 for(;count0<buf.len;++count0){
28694 x0.push_back(x1elem);
28695
28696 }
28697 return x0;
28698}
28699template<>
28700std::vector<cyclus::Blob> Hdf5Back::VLBufToVal<std::vector<cyclus::Blob>>(const hvl_t& buf) {
28701 std::vector<cyclus::Blob> x0;
28702 char* p=reinterpret_cast<char*>(buf.p);
28705 unsigned int count0=0;
28706 for(;count0<buf.len;++count0){
28708 x0.push_back(x1elem);
28709
28710 }
28711 return x0;
28712}
28713template<>
28714std::vector<boost::uuids::uuid> Hdf5Back::VLBufToVal<std::vector<boost::uuids::uuid>>(const hvl_t& buf) {
28715 std::vector<boost::uuids::uuid> x0;
28716 char* p=reinterpret_cast<char*>(buf.p);
28719 unsigned int count0=0;
28720 for(;count0<buf.len;++count0){
28721 boost::uuids::uuid x1elem=*reinterpret_cast<boost::uuids::uuid*>(p+(total_item_size0*count0));
28722 x0.push_back(x1elem);
28723
28724 }
28725 return x0;
28726}
28727template<>
28728std::set<int> Hdf5Back::VLBufToVal<std::set<int>>(const hvl_t& buf) {
28729 std::set<int> x0;
28730 char* p=reinterpret_cast<char*>(buf.p);
28731 size_t item_size1elem=sizeof(int);
28733 unsigned int count0=0;
28734 for(;count0<buf.len;++count0){
28735 int x1elem=*reinterpret_cast<int*>(p+(total_item_size0*count0));
28736 x0.insert(x1elem);
28737
28738 }
28739 return x0;
28740}
28741template<>
28742std::set<float> Hdf5Back::VLBufToVal<std::set<float>>(const hvl_t& buf) {
28743 std::set<float> x0;
28744 char* p=reinterpret_cast<char*>(buf.p);
28745 size_t item_size1elem=sizeof(float);
28747 unsigned int count0=0;
28748 for(;count0<buf.len;++count0){
28749 float x1elem=*reinterpret_cast<float*>(p+(total_item_size0*count0));
28750 x0.insert(x1elem);
28751
28752 }
28753 return x0;
28754}
28755template<>
28756std::set<double> Hdf5Back::VLBufToVal<std::set<double>>(const hvl_t& buf) {
28757 std::set<double> x0;
28758 char* p=reinterpret_cast<char*>(buf.p);
28759 size_t item_size1elem=sizeof(double);
28761 unsigned int count0=0;
28762 for(;count0<buf.len;++count0){
28763 double x1elem=*reinterpret_cast<double*>(p+(total_item_size0*count0));
28764 x0.insert(x1elem);
28765
28766 }
28767 return x0;
28768}
28769template<>
28770std::set<std::string> Hdf5Back::VLBufToVal<std::set<std::string>>(const hvl_t& buf) {
28771 std::set<std::string> x0;
28772 char* p=reinterpret_cast<char*>(buf.p);
28775 unsigned int count0=0;
28776 for(;count0<buf.len;++count0){
28778 x0.insert(x1elem);
28779
28780 }
28781 return x0;
28782}
28783template<>
28784std::set<cyclus::Blob> Hdf5Back::VLBufToVal<std::set<cyclus::Blob>>(const hvl_t& buf) {
28785 std::set<cyclus::Blob> x0;
28786 char* p=reinterpret_cast<char*>(buf.p);
28789 unsigned int count0=0;
28790 for(;count0<buf.len;++count0){
28792 x0.insert(x1elem);
28793
28794 }
28795 return x0;
28796}
28797template<>
28798std::set<boost::uuids::uuid> Hdf5Back::VLBufToVal<std::set<boost::uuids::uuid>>(const hvl_t& buf) {
28799 std::set<boost::uuids::uuid> x0;
28800 char* p=reinterpret_cast<char*>(buf.p);
28803 unsigned int count0=0;
28804 for(;count0<buf.len;++count0){
28805 boost::uuids::uuid x1elem=*reinterpret_cast<boost::uuids::uuid*>(p+(total_item_size0*count0));
28806 x0.insert(x1elem);
28807
28808 }
28809 return x0;
28810}
28811template<>
28812std::list<bool> Hdf5Back::VLBufToVal<std::list<bool>>(const hvl_t& buf) {
28813 std::list<bool> x0;
28814 char* p=reinterpret_cast<char*>(buf.p);
28815 size_t item_size1elem=sizeof(char);
28817 unsigned int count0=0;
28818 for(;count0<buf.len;++count0){
28819 bool x1elem=*reinterpret_cast<bool*>(p+(total_item_size0*count0));
28820 x0.push_back(x1elem);
28821
28822 }
28823 return x0;
28824}
28825template<>
28826std::list<int> Hdf5Back::VLBufToVal<std::list<int>>(const hvl_t& buf) {
28827 std::list<int> x0;
28828 char* p=reinterpret_cast<char*>(buf.p);
28829 size_t item_size1elem=sizeof(int);
28831 unsigned int count0=0;
28832 for(;count0<buf.len;++count0){
28833 int x1elem=*reinterpret_cast<int*>(p+(total_item_size0*count0));
28834 x0.push_back(x1elem);
28835
28836 }
28837 return x0;
28838}
28839template<>
28840std::list<float> Hdf5Back::VLBufToVal<std::list<float>>(const hvl_t& buf) {
28841 std::list<float> x0;
28842 char* p=reinterpret_cast<char*>(buf.p);
28843 size_t item_size1elem=sizeof(float);
28845 unsigned int count0=0;
28846 for(;count0<buf.len;++count0){
28847 float x1elem=*reinterpret_cast<float*>(p+(total_item_size0*count0));
28848 x0.push_back(x1elem);
28849
28850 }
28851 return x0;
28852}
28853template<>
28854std::list<double> Hdf5Back::VLBufToVal<std::list<double>>(const hvl_t& buf) {
28855 std::list<double> x0;
28856 char* p=reinterpret_cast<char*>(buf.p);
28857 size_t item_size1elem=sizeof(double);
28859 unsigned int count0=0;
28860 for(;count0<buf.len;++count0){
28861 double x1elem=*reinterpret_cast<double*>(p+(total_item_size0*count0));
28862 x0.push_back(x1elem);
28863
28864 }
28865 return x0;
28866}
28867template<>
28868std::list<std::string> Hdf5Back::VLBufToVal<std::list<std::string>>(const hvl_t& buf) {
28869 std::list<std::string> x0;
28870 char* p=reinterpret_cast<char*>(buf.p);
28873 unsigned int count0=0;
28874 for(;count0<buf.len;++count0){
28876 x0.push_back(x1elem);
28877
28878 }
28879 return x0;
28880}
28881template<>
28882std::list<cyclus::Blob> Hdf5Back::VLBufToVal<std::list<cyclus::Blob>>(const hvl_t& buf) {
28883 std::list<cyclus::Blob> x0;
28884 char* p=reinterpret_cast<char*>(buf.p);
28887 unsigned int count0=0;
28888 for(;count0<buf.len;++count0){
28890 x0.push_back(x1elem);
28891
28892 }
28893 return x0;
28894}
28895template<>
28896std::list<boost::uuids::uuid> Hdf5Back::VLBufToVal<std::list<boost::uuids::uuid>>(const hvl_t& buf) {
28897 std::list<boost::uuids::uuid> x0;
28898 char* p=reinterpret_cast<char*>(buf.p);
28901 unsigned int count0=0;
28902 for(;count0<buf.len;++count0){
28903 boost::uuids::uuid x1elem=*reinterpret_cast<boost::uuids::uuid*>(p+(total_item_size0*count0));
28904 x0.push_back(x1elem);
28905
28906 }
28907 return x0;
28908}
28909template<>
28910std::map<int, bool> Hdf5Back::VLBufToVal<std::map<int, bool>>(const hvl_t& buf) {
28911 std::map<int, bool> x0;
28912 char* p=reinterpret_cast<char*>(buf.p);
28913 size_t item_size1key=sizeof(int);
28914 size_t item_size1val=sizeof(char);
28916 unsigned int count0=0;
28917 for(;count0<buf.len;++count0){
28918 int x1key=*reinterpret_cast<int*>(p+(total_item_size0*count0));
28919 bool x1val=*reinterpret_cast<bool*>(p+(total_item_size0*count0)+item_size1key);
28920 x0[x1key] = x1val;
28921
28922 }
28923 return x0;
28924}
28925template<>
28926std::map<int, int> Hdf5Back::VLBufToVal<std::map<int, int>>(const hvl_t& buf) {
28927 std::map<int, int> x0;
28928 char* p=reinterpret_cast<char*>(buf.p);
28929 size_t item_size1key=sizeof(int);
28930 size_t item_size1val=sizeof(int);
28932 unsigned int count0=0;
28933 for(;count0<buf.len;++count0){
28934 int x1key=*reinterpret_cast<int*>(p+(total_item_size0*count0));
28935 int x1val=*reinterpret_cast<int*>(p+(total_item_size0*count0)+item_size1key);
28936 x0[x1key] = x1val;
28937
28938 }
28939 return x0;
28940}
28941template<>
28942std::map<int, float> Hdf5Back::VLBufToVal<std::map<int, float>>(const hvl_t& buf) {
28943 std::map<int, float> x0;
28944 char* p=reinterpret_cast<char*>(buf.p);
28945 size_t item_size1key=sizeof(int);
28946 size_t item_size1val=sizeof(float);
28948 unsigned int count0=0;
28949 for(;count0<buf.len;++count0){
28950 int x1key=*reinterpret_cast<int*>(p+(total_item_size0*count0));
28951 float x1val=*reinterpret_cast<float*>(p+(total_item_size0*count0)+item_size1key);
28952 x0[x1key] = x1val;
28953
28954 }
28955 return x0;
28956}
28957template<>
28958std::map<int, double> Hdf5Back::VLBufToVal<std::map<int, double>>(const hvl_t& buf) {
28959 std::map<int, double> x0;
28960 char* p=reinterpret_cast<char*>(buf.p);
28961 size_t item_size1key=sizeof(int);
28962 size_t item_size1val=sizeof(double);
28964 unsigned int count0=0;
28965 for(;count0<buf.len;++count0){
28966 int x1key=*reinterpret_cast<int*>(p+(total_item_size0*count0));
28967 double x1val=*reinterpret_cast<double*>(p+(total_item_size0*count0)+item_size1key);
28968 x0[x1key] = x1val;
28969
28970 }
28971 return x0;
28972}
28973template<>
28974std::map<int, std::string> Hdf5Back::VLBufToVal<std::map<int, std::string>>(const hvl_t& buf) {
28975 std::map<int, std::string> x0;
28976 char* p=reinterpret_cast<char*>(buf.p);
28977 size_t item_size1key=sizeof(int);
28980 unsigned int count0=0;
28981 for(;count0<buf.len;++count0){
28982 int x1key=*reinterpret_cast<int*>(p+(total_item_size0*count0));
28984 x0[x1key] = x1val;
28985
28986 }
28987 return x0;
28988}
28989template<>
28990std::map<int, cyclus::Blob> Hdf5Back::VLBufToVal<std::map<int, cyclus::Blob>>(const hvl_t& buf) {
28991 std::map<int, cyclus::Blob> x0;
28992 char* p=reinterpret_cast<char*>(buf.p);
28993 size_t item_size1key=sizeof(int);
28996 unsigned int count0=0;
28997 for(;count0<buf.len;++count0){
28998 int x1key=*reinterpret_cast<int*>(p+(total_item_size0*count0));
29000 x0[x1key] = x1val;
29001
29002 }
29003 return x0;
29004}
29005template<>
29006std::map<int, boost::uuids::uuid> Hdf5Back::VLBufToVal<std::map<int, boost::uuids::uuid>>(const hvl_t& buf) {
29007 std::map<int, boost::uuids::uuid> x0;
29008 char* p=reinterpret_cast<char*>(buf.p);
29009 size_t item_size1key=sizeof(int);
29012 unsigned int count0=0;
29013 for(;count0<buf.len;++count0){
29014 int x1key=*reinterpret_cast<int*>(p+(total_item_size0*count0));
29015 boost::uuids::uuid x1val=*reinterpret_cast<boost::uuids::uuid*>(p+(total_item_size0*count0)+item_size1key);
29016 x0[x1key] = x1val;
29017
29018 }
29019 return x0;
29020}
29021template<>
29022std::map<std::string, bool> Hdf5Back::VLBufToVal<std::map<std::string, bool>>(const hvl_t& buf) {
29023 std::map<std::string, bool> x0;
29024 char* p=reinterpret_cast<char*>(buf.p);
29026 size_t item_size1val=sizeof(char);
29028 unsigned int count0=0;
29029 for(;count0<buf.len;++count0){
29031 bool x1val=*reinterpret_cast<bool*>(p+(total_item_size0*count0)+item_size1key);
29032 x0[x1key] = x1val;
29033
29034 }
29035 return x0;
29036}
29037template<>
29038std::map<std::string, int> Hdf5Back::VLBufToVal<std::map<std::string, int>>(const hvl_t& buf) {
29039 std::map<std::string, int> x0;
29040 char* p=reinterpret_cast<char*>(buf.p);
29042 size_t item_size1val=sizeof(int);
29044 unsigned int count0=0;
29045 for(;count0<buf.len;++count0){
29047 int x1val=*reinterpret_cast<int*>(p+(total_item_size0*count0)+item_size1key);
29048 x0[x1key] = x1val;
29049
29050 }
29051 return x0;
29052}
29053template<>
29054std::map<std::string, float> Hdf5Back::VLBufToVal<std::map<std::string, float>>(const hvl_t& buf) {
29055 std::map<std::string, float> x0;
29056 char* p=reinterpret_cast<char*>(buf.p);
29058 size_t item_size1val=sizeof(float);
29060 unsigned int count0=0;
29061 for(;count0<buf.len;++count0){
29063 float x1val=*reinterpret_cast<float*>(p+(total_item_size0*count0)+item_size1key);
29064 x0[x1key] = x1val;
29065
29066 }
29067 return x0;
29068}
29069template<>
29070std::map<std::string, double> Hdf5Back::VLBufToVal<std::map<std::string, double>>(const hvl_t& buf) {
29071 std::map<std::string, double> x0;
29072 char* p=reinterpret_cast<char*>(buf.p);
29074 size_t item_size1val=sizeof(double);
29076 unsigned int count0=0;
29077 for(;count0<buf.len;++count0){
29079 double x1val=*reinterpret_cast<double*>(p+(total_item_size0*count0)+item_size1key);
29080 x0[x1key] = x1val;
29081
29082 }
29083 return x0;
29084}
29085template<>
29086std::map<std::string, std::string> Hdf5Back::VLBufToVal<std::map<std::string, std::string>>(const hvl_t& buf) {
29087 std::map<std::string, std::string> x0;
29088 char* p=reinterpret_cast<char*>(buf.p);
29092 unsigned int count0=0;
29093 for(;count0<buf.len;++count0){
29096 x0[x1key] = x1val;
29097
29098 }
29099 return x0;
29100}
29101template<>
29102std::map<std::string, cyclus::Blob> Hdf5Back::VLBufToVal<std::map<std::string, cyclus::Blob>>(const hvl_t& buf) {
29103 std::map<std::string, cyclus::Blob> x0;
29104 char* p=reinterpret_cast<char*>(buf.p);
29108 unsigned int count0=0;
29109 for(;count0<buf.len;++count0){
29112 x0[x1key] = x1val;
29113
29114 }
29115 return x0;
29116}
29117template<>
29118std::map<std::string, boost::uuids::uuid> Hdf5Back::VLBufToVal<std::map<std::string, boost::uuids::uuid>>(const hvl_t& buf) {
29119 std::map<std::string, boost::uuids::uuid> x0;
29120 char* p=reinterpret_cast<char*>(buf.p);
29124 unsigned int count0=0;
29125 for(;count0<buf.len;++count0){
29127 boost::uuids::uuid x1val=*reinterpret_cast<boost::uuids::uuid*>(p+(total_item_size0*count0)+item_size1key);
29128 x0[x1key] = x1val;
29129
29130 }
29131 return x0;
29132}
29133template<>
29134std::map<std::pair<int, std::string>, double> Hdf5Back::VLBufToVal<std::map<std::pair<int, std::string>, double>>(const hvl_t& buf) {
29135 std::map<std::pair<int, std::string>, double> x0;
29136 char* p=reinterpret_cast<char*>(buf.p);
29137 size_t item_size2keyfirst=sizeof(int);
29141 size_t item_size1val=sizeof(double);
29143 unsigned int count0=0;
29144 for(;count0<buf.len;++count0){
29145 std::pair<int, std::string> x1key;
29146 int x2keyfirst=*reinterpret_cast<int*>(p+(total_item_size0*count0));
29148 x1key = std::make_pair(x2keyfirst,x2keysecond);
29149 double x1val=*reinterpret_cast<double*>(p+(total_item_size0*count0)+item_size1key);
29150 x0[x1key] = x1val;
29151
29152 }
29153 return x0;
29154}
29155template<>
29156std::map<std::string, std::vector<double>> Hdf5Back::VLBufToVal<std::map<std::string, std::vector<double>>>(const hvl_t& buf) {
29157 std::map<std::string, std::vector<double>> x0;
29158 char* p=reinterpret_cast<char*>(buf.p);
29162 unsigned int count0=0;
29163 for(;count0<buf.len;++count0){
29166 x0[x1key] = x1val;
29167
29168 }
29169 return x0;
29170}
29171template<>
29172std::map<std::string, std::map<int, double>> Hdf5Back::VLBufToVal<std::map<std::string, std::map<int, double>>>(const hvl_t& buf) {
29173 std::map<std::string, std::map<int, double>> x0;
29174 char* p=reinterpret_cast<char*>(buf.p);
29178 unsigned int count0=0;
29179 for(;count0<buf.len;++count0){
29182 x0[x1key] = x1val;
29183
29184 }
29185 return x0;
29186}
29187template<>
29188std::map<std::string, std::pair<double, std::map<int, double>>> Hdf5Back::VLBufToVal<std::map<std::string, std::pair<double, std::map<int, double>>>>(const hvl_t& buf) {
29189 std::map<std::string, std::pair<double, std::map<int, double>>> x0;
29190 char* p=reinterpret_cast<char*>(buf.p);
29191 size_t item_size2valfirst=sizeof(double);
29197 unsigned int count0=0;
29198 for(;count0<buf.len;++count0){
29200 std::pair<double, std::map<int, double>> x1val;
29201 double x2valfirst=*reinterpret_cast<double*>(p+(total_item_size0*count0)+item_size1key);
29203 x1val = std::make_pair(x2valfirst,x2valsecond);
29204 x0[x1key] = x1val;
29205
29206 }
29207 return x0;
29208}
29209template<>
29210std::map<int, std::map<std::string, double>> Hdf5Back::VLBufToVal<std::map<int, std::map<std::string, double>>>(const hvl_t& buf) {
29211 std::map<int, std::map<std::string, double>> x0;
29212 char* p=reinterpret_cast<char*>(buf.p);
29213 size_t item_size1key=sizeof(int);
29216 unsigned int count0=0;
29217 for(;count0<buf.len;++count0){
29218 int x1key=*reinterpret_cast<int*>(p+(total_item_size0*count0));
29220 x0[x1key] = x1val;
29221
29222 }
29223 return x0;
29224}
29225template<>
29226std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> Hdf5Back::VLBufToVal<std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>>>(const hvl_t& buf) {
29227 std::map<std::string, std::vector<std::pair<int, std::pair<std::string, std::string>>>> x0;
29228 char* p=reinterpret_cast<char*>(buf.p);
29232 unsigned int count0=0;
29233 for(;count0<buf.len;++count0){
29236 x0[x1key] = x1val;
29237
29238 }
29239 return x0;
29240}
29241template<>
29242std::list<std::pair<int, int>> Hdf5Back::VLBufToVal<std::list<std::pair<int, int>>>(const hvl_t& buf) {
29243 std::list<std::pair<int, int>> x0;
29244 char* p=reinterpret_cast<char*>(buf.p);
29245 size_t item_size2elemfirst=sizeof(int);
29246 size_t item_size2elemsecond=sizeof(int);
29250 unsigned int count0=0;
29251 for(;count0<buf.len;++count0){
29252 std::pair<int, int> x1elem;
29253 int x2elemfirst=*reinterpret_cast<int*>(p+(total_item_size0*count0));
29254 int x2elemsecond=*reinterpret_cast<int*>(p+(total_item_size0*count0)+item_size2elemfirst);
29255 x1elem = std::make_pair(x2elemfirst,x2elemsecond);
29256 x0.push_back(x1elem);
29257
29258 }
29259 return x0;
29260}
29261template<>
29262std::map<std::string, std::pair<std::string, std::vector<double>>> Hdf5Back::VLBufToVal<std::map<std::string, std::pair<std::string, std::vector<double>>>>(const hvl_t& buf) {
29263 std::map<std::string, std::pair<std::string, std::vector<double>>> x0;
29264 char* p=reinterpret_cast<char*>(buf.p);
29271 unsigned int count0=0;
29272 for(;count0<buf.len;++count0){
29274 std::pair<std::string, std::vector<double>> x1val;
29277 x1val = std::make_pair(x2valfirst,x2valsecond);
29278 x0[x1key] = x1val;
29279
29280 }
29281 return x0;
29282}
29283template<>
29284std::map<std::string, std::map<std::string, int>> Hdf5Back::VLBufToVal<std::map<std::string, std::map<std::string, int>>>(const hvl_t& buf) {
29285 std::map<std::string, std::map<std::string, int>> x0;
29286 char* p=reinterpret_cast<char*>(buf.p);
29290 unsigned int count0=0;
29291 for(;count0<buf.len;++count0){
29294 x0[x1key] = x1val;
29295
29296 }
29297 return x0;
29298}
29299template<>
29300std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> Hdf5Back::VLBufToVal<std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>>>(const hvl_t& buf) {
29301 std::vector<std::pair<std::pair<double, double>, std::map<std::string, double>>> x0;
29302 char* p=reinterpret_cast<char*>(buf.p);
29303 size_t item_size3elemfirstfirst=sizeof(double);
29304 size_t item_size3elemfirstsecond=sizeof(double);
29311 unsigned int count0=0;
29312 for(;count0<buf.len;++count0){
29313 std::pair<std::pair<double, double>, std::map<std::string, double>> x1elem;
29314 std::pair<double, double> x2elemfirst;
29315 double x3elemfirstfirst=*reinterpret_cast<double*>(p+(total_item_size0*count0));
29316 double x3elemfirstsecond=*reinterpret_cast<double*>(p+(total_item_size0*count0)+item_size3elemfirstfirst);
29319 x1elem = std::make_pair(x2elemfirst,x2elemsecond);
29320 x0.push_back(x1elem);
29321
29322 }
29323 return x0;
29324}
29325template<>
29326std::vector<std::pair<int, std::pair<std::string, std::string>>> Hdf5Back::VLBufToVal<std::vector<std::pair<int, std::pair<std::string, std::string>>>>(const hvl_t& buf) {
29327 std::vector<std::pair<int, std::pair<std::string, std::string>>> x0;
29328 char* p=reinterpret_cast<char*>(buf.p);
29332 size_t item_size2elemfirst=sizeof(int);
29337 unsigned int count0=0;
29338 for(;count0<buf.len;++count0){
29339 std::pair<int, std::pair<std::string, std::string>> x1elem;
29340 int x2elemfirst=*reinterpret_cast<int*>(p+(total_item_size0*count0));
29341 std::pair<std::string, std::string> x2elemsecond;
29345 x1elem = std::make_pair(x2elemfirst,x2elemsecond);
29346 x0.push_back(x1elem);
29347
29348 }
29349 return x0;
29350}
29351template<>
29352std::map<std::pair<std::string, std::string>, int> Hdf5Back::VLBufToVal<std::map<std::pair<std::string, std::string>, int>>(const hvl_t& buf) {
29353 std::map<std::pair<std::string, std::string>, int> x0;
29354 char* p=reinterpret_cast<char*>(buf.p);
29359 size_t item_size1val=sizeof(int);
29361 unsigned int count0=0;
29362 for(;count0<buf.len;++count0){
29363 std::pair<std::string, std::string> x1key;
29366 x1key = std::make_pair(x2keyfirst,x2keysecond);
29367 int x1val=*reinterpret_cast<int*>(p+(total_item_size0*count0)+item_size1key);
29368 x0[x1key] = x1val;
29369
29370 }
29371 return x0;
29372}
29373template<>
29374std::map<std::string, std::map<std::string, double>> Hdf5Back::VLBufToVal<std::map<std::string, std::map<std::string, double>>>(const hvl_t& buf) {
29375 std::map<std::string, std::map<std::string, double>> x0;
29376 char* p=reinterpret_cast<char*>(buf.p);
29380 unsigned int count0=0;
29381 for(;count0<buf.len;++count0){
29384 x0[x1key] = x1val;
29385
29386 }
29387 return x0;
29388}
29389
29390
29391
29392} // namespace cyclus
A type to represent variable-length array of bytes for dumping to a cyclus output database.
Definition blob.h:9
Represents a condition used to filter rows returned by a query.
Used to specify and send a collection of key-value pairs to the Recorder for recording.
Definition datum.h:15
std::vector< Shape > Shapes
Definition datum.h:22
std::vector< int > Shape
Definition datum.h:21
std::vector< Entry > Vals
Definition datum.h:20
The digest type for SHA1s.
std::vector< T > cast() const
Casts the value of this digest to a vector of the templated type.
unsigned int val[CYCLUS_SHA1_NINT]
virtual void Close()
Closes and flushes the backend.
Definition hdf5_back.cc:41
virtual void Flush()
Flushes all buffered data in the backend to its final format/location.
Definition hdf5_back.h:91
virtual std::map< std::string, DbTypes > ColumnTypes(std::string table)
Return a map of column names of the specified table to the associated database type.
virtual void Notify(DatumList data)
Used to pass a list of new/collected Datum objects.
Definition hdf5_back.cc:77
virtual std::string Name()
Used to uniquely identify a backend - particularly if there are more than one in a simulation.
virtual std::list< ColumnInfo > Schema(std::string table)
Return information about all columns of a table.
virtual QueryResult Query(std::string table, std::vector< Cond > *conds)
Return a set of rows from the specificed table that match all given conditions.
Definition hdf5_back.cc:163
virtual ~Hdf5Back()
cleans up resources and closes the file.
Definition hdf5_back.cc:72
Hdf5Back(std::string path)
Creates a new backend writing data to the specified file.
Definition hdf5_back.cc:11
virtual std::set< std::string > Tables()
Return a set of all table names currently in the database.
for failed reading/writing to files, network connections, etc..
Definition error.h:59
Meta data and results of a query.
void Clear()
Clears the current hash value to its default state.
void Update(const std::string &s)
Updates the hash value in-place.
taken directly from OsiSolverInterface.cpp on 2/17/14 from https://projects.coin-or....
Definition agent.cc:14
std::string Hdf5Back::VLRead< std::string, VL_STRING >(const char *rawkey)
Definition hdf5_back.cc:100
std::vector< Datum * > DatumList
Definition rec_backend.h:12
DbTypes
This is the primary list of all supported database types.
@ VL_SET_DOUBLE
@ PAIR_VL_STRING_VL_STRING
@ VL_MAP_STRING_VL_MAP_VL_STRING_DOUBLE
@ VL_LIST_STRING
@ VL_MAP_VL_STRING_MAP_STRING_INT
@ MAP_VL_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE
@ MAP_VL_STRING_INT
@ VL_MAP_STRING_MAP_INT_DOUBLE
@ VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING
@ VL_MAP_STRING_VECTOR_DOUBLE
@ VL_MAP_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE
@ PAIR_STRING_VECTOR_DOUBLE
@ PAIR_STRING_VL_VECTOR_DOUBLE
@ VL_MAP_VL_STRING_MAP_VL_STRING_DOUBLE
@ VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_MAP_STRING_DOUBLE
@ VL_MAP_STRING_FLOAT
@ MAP_STRING_PAIR_VL_STRING_VECTOR_DOUBLE
@ MAP_VL_STRING_PAIR_STRING_VECTOR_DOUBLE
@ MAP_STRING_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING
@ MAP_VL_STRING_DOUBLE
@ VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_VL_STRING_DOUBLE
@ MAP_STRING_UUID
@ MAP_VL_STRING_VL_STRING
@ VL_MAP_VL_STRING_MAP_STRING_DOUBLE
@ VL_MAP_VL_STRING_VL_STRING
@ VL_MAP_STRING_VL_MAP_INT_DOUBLE
@ MAP_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING
@ VL_MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING
@ MAP_STRING_FLOAT
@ PAIR_INT_VL_STRING
@ PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_STRING_DOUBLE
@ VL_MAP_STRING_VL_VECTOR_DOUBLE
@ VL_MAP_VL_STRING_PAIR_VL_STRING_VECTOR_DOUBLE
@ PAIR_VL_STRING_VECTOR_DOUBLE
@ VECTOR_PAIR_INT_PAIR_VL_STRING_STRING
@ PAIR_INT_FLOAT
@ MAP_STRING_STRING
@ VL_MAP_INT_BLOB
@ PAIR_DOUBLE_VL_MAP_INT_DOUBLE
@ MAP_STRING_MAP_STRING_DOUBLE
@ PAIR_STRING_STRING
@ VL_LIST_PAIR_INT_INT
@ VL_MAP_STRING_PAIR_VL_STRING_VECTOR_DOUBLE
@ VL_MAP_STRING_MAP_STRING_INT
@ MAP_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING
@ MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING
@ MAP_VL_STRING_BLOB
@ VL_VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_STRING_DOUBLE
@ MAP_INT_VL_MAP_STRING_DOUBLE
@ VL_MAP_STRING_STRING
@ MAP_INT_MAP_STRING_DOUBLE
@ MAP_VL_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE
@ PAIR_INT_STRING
@ MAP_VL_STRING_STRING
@ VL_MAP_VL_STRING_VECTOR_DOUBLE
@ MAP_VL_STRING_UUID
@ MAP_STRING_BLOB
@ MAP_STRING_VECTOR_DOUBLE
@ PAIR_INT_PAIR_STRING_STRING
@ MAP_VL_STRING_FLOAT
@ MAP_PAIR_STRING_VL_STRING_INT
@ VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_STRING_DOUBLE
@ VL_MAP_VL_STRING_VL_MAP_VL_STRING_INT
@ VL_MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_STRING_STRING
@ VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING
@ VL_MAP_STRING_PAIR_STRING_VL_VECTOR_DOUBLE
@ VECTOR_PAIR_INT_PAIR_STRING_STRING
@ MAP_VL_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE
@ MAP_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE
@ VL_MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING
@ MAP_STRING_VL_MAP_STRING_INT
@ VL_MAP_INT_MAP_VL_STRING_DOUBLE
@ VL_VECTOR_FLOAT
@ MAP_STRING_VECTOR_PAIR_INT_PAIR_STRING_STRING
@ LIST_VL_STRING
@ PAIR_VL_STRING_BOOL
@ PAIR_VL_STRING_FLOAT
@ MAP_VL_STRING_VECTOR_DOUBLE
@ VL_MAP_VL_STRING_PAIR_STRING_VECTOR_DOUBLE
@ MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING
@ MAP_VL_STRING_MAP_VL_STRING_INT
@ VL_MAP_STRING_INT
@ VL_MAP_STRING_VL_MAP_STRING_INT
@ VL_MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING
@ VL_LIST_FLOAT
@ VL_MAP_PAIR_STRING_VL_STRING_INT
@ VL_MAP_STRING_MAP_VL_STRING_INT
@ VL_MAP_STRING_MAP_VL_STRING_DOUBLE
@ VL_MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING
@ VL_MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_STRING
@ VL_VECTOR_BLOB
@ MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING
@ VL_SET_STRING
@ VL_MAP_INT_FLOAT
@ VL_MAP_PAIR_VL_STRING_STRING_INT
@ VL_MAP_STRING_MAP_STRING_DOUBLE
@ SET_VL_STRING
@ PAIR_VL_STRING_BLOB
@ VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_MAP_VL_STRING_DOUBLE
@ VL_MAP_INT_BOOL
@ MAP_STRING_MAP_STRING_INT
@ VL_MAP_INT_VL_MAP_VL_STRING_DOUBLE
@ VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING
@ MAP_VL_STRING_VL_MAP_VL_STRING_DOUBLE
@ MAP_PAIR_INT_STRING_DOUBLE
@ PAIR_STRING_FLOAT
@ PAIR_STRING_DOUBLE
@ PAIR_VL_STRING_DOUBLE
@ VL_MAP_INT_MAP_STRING_DOUBLE
@ VL_VECTOR_DOUBLE
@ VL_VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_MAP_STRING_DOUBLE
@ PAIR_VL_STRING_INT
@ PAIR_INT_PAIR_VL_STRING_VL_STRING
@ MAP_STRING_VL_MAP_VL_STRING_INT
@ LIST_PAIR_INT_INT
@ VL_MAP_VL_STRING_BLOB
@ VL_MAP_VL_STRING_UUID
@ MAP_VL_STRING_PAIR_STRING_VL_VECTOR_DOUBLE
@ PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_VL_STRING_DOUBLE
@ MAP_VL_STRING_BOOL
@ VL_MAP_VL_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE
@ VL_MAP_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE
@ MAP_VL_STRING_VL_MAP_VL_STRING_INT
@ MAP_VL_STRING_VL_MAP_STRING_INT
@ MAP_STRING_MAP_VL_STRING_DOUBLE
@ VL_MAP_STRING_VL_STRING
@ VL_MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING
@ PAIR_DOUBLE_DOUBLE
@ PAIR_INT_BOOL
@ MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING
@ VL_MAP_INT_DOUBLE
@ MAP_STRING_DOUBLE
@ PAIR_VL_STRING_UUID
@ VL_MAP_INT_STRING
@ PAIR_STRING_BOOL
@ VECTOR_PAIR_INT_PAIR_STRING_VL_STRING
@ VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_STRING_STRING
@ VL_MAP_STRING_BLOB
@ VL_MAP_INT_UUID
@ MAP_PAIR_STRING_STRING_INT
@ VL_VECTOR_UUID
@ MAP_PAIR_VL_STRING_VL_STRING_INT
@ MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_STRING_STRING
@ MAP_VL_STRING_MAP_VL_STRING_DOUBLE
@ MAP_STRING_VL_MAP_INT_DOUBLE
@ MAP_STRING_BOOL
@ PAIR_INT_PAIR_VL_STRING_STRING
@ VL_MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING
@ VL_MAP_INT_VL_STRING
@ VL_LIST_VL_STRING
@ VL_MAP_STRING_VL_MAP_STRING_DOUBLE
@ PAIR_STRING_BLOB
@ MAP_VL_STRING_VL_MAP_STRING_DOUBLE
@ VL_MAP_PAIR_INT_STRING_DOUBLE
@ VL_MAP_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE
@ VL_MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_STRING
@ MAP_INT_MAP_VL_STRING_DOUBLE
@ VL_VECTOR_VL_STRING
@ PAIR_STRING_VL_STRING
@ PAIR_INT_DOUBLE
@ VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING
@ VL_MAP_STRING_PAIR_STRING_VECTOR_DOUBLE
@ MAP_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE
@ MAP_VL_STRING_MAP_STRING_DOUBLE
@ MAP_VL_STRING_VL_MAP_INT_DOUBLE
@ MAP_VL_STRING_PAIR_VL_STRING_VECTOR_DOUBLE
@ MAP_STRING_PAIR_STRING_VECTOR_DOUBLE
@ VL_MAP_VL_STRING_PAIR_STRING_VL_VECTOR_DOUBLE
@ MAP_STRING_VL_MAP_VL_STRING_DOUBLE
@ VL_MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING
@ VL_MAP_STRING_BOOL
@ MAP_STRING_PAIR_STRING_VL_VECTOR_DOUBLE
@ PAIR_STRING_UUID
@ MAP_PAIR_INT_VL_STRING_DOUBLE
@ VL_MAP_STRING_UUID
@ MAP_STRING_PAIR_VL_STRING_VL_VECTOR_DOUBLE
@ MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING
@ MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING
@ VL_VECTOR_PAIR_INT_PAIR_STRING_STRING
@ PAIR_INT_BLOB
@ VL_VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_VL_MAP_VL_STRING_DOUBLE
@ VL_MAP_VL_STRING_STRING
@ VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING
@ VL_MAP_VL_STRING_INT
@ VECTOR_STRING
@ VL_VECTOR_INT
@ VL_MAP_VL_STRING_PAIR_DOUBLE_MAP_INT_DOUBLE
@ VL_MAP_VL_STRING_MAP_VL_STRING_INT
@ VL_MAP_STRING_DOUBLE
@ VL_MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING
@ PAIR_VL_STRING_STRING
@ VL_MAP_VL_STRING_VL_MAP_STRING_DOUBLE
@ VL_MAP_VL_STRING_PAIR_DOUBLE_VL_MAP_INT_DOUBLE
@ VECTOR_DOUBLE
@ MAP_STRING_MAP_INT_DOUBLE
@ MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_VL_STRING
@ VL_MAP_VL_STRING_VL_MAP_INT_DOUBLE
@ VL_MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_VL_STRING_STRING
@ VL_MAP_INT_VL_MAP_STRING_DOUBLE
@ VL_MAP_STRING_VL_MAP_VL_STRING_INT
@ VL_MAP_PAIR_VL_STRING_VL_STRING_INT
@ VL_MAP_VL_STRING_DOUBLE
@ VL_MAP_PAIR_INT_VL_STRING_DOUBLE
@ VL_MAP_VL_STRING_VL_VECTOR_DOUBLE
@ MAP_VL_STRING_MAP_STRING_INT
@ MAP_INT_VL_MAP_VL_STRING_DOUBLE
@ VL_LIST_DOUBLE
@ MAP_VL_STRING_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING
@ VL_MAP_VL_STRING_FLOAT
@ VECTOR_VL_STRING
@ VL_VECTOR_PAIR_PAIR_DOUBLE_DOUBLE_MAP_VL_STRING_DOUBLE
@ MAP_STRING_VL_MAP_STRING_DOUBLE
@ VL_MAP_VL_STRING_BOOL
@ MAP_VL_STRING_VL_VECTOR_DOUBLE
@ VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING
@ MAP_PAIR_VL_STRING_STRING_INT
@ PAIR_INT_PAIR_STRING_VL_STRING
@ VL_MAP_VL_STRING_VL_MAP_STRING_INT
@ MAP_STRING_VL_VECTOR_DOUBLE
@ PAIR_DOUBLE_MAP_INT_DOUBLE
@ MAP_STRING_MAP_VL_STRING_INT
@ VL_MAP_VL_STRING_MAP_INT_DOUBLE
@ VL_SET_VL_STRING
@ VL_VECTOR_STRING
@ MAP_STRING_VL_STRING
@ MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING
@ PAIR_PAIR_DOUBLE_DOUBLE_MAP_VL_STRING_DOUBLE
@ VL_MAP_VL_STRING_VL_MAP_VL_STRING_DOUBLE
@ VL_MAP_STRING_VECTOR_PAIR_INT_PAIR_STRING_VL_STRING
@ MAP_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_STRING
@ MAP_VL_STRING_MAP_INT_DOUBLE
@ MAP_VL_STRING_VL_VECTOR_PAIR_INT_PAIR_STRING_STRING
@ PAIR_STRING_INT
@ PAIR_PAIR_DOUBLE_DOUBLE_MAP_STRING_DOUBLE
@ VL_MAP_PAIR_STRING_STRING_INT
@ MAP_INT_VL_STRING
@ PAIR_VL_STRING_VL_VECTOR_DOUBLE
std::vector< boost::spirit::hold_any > QueryRow
T OptionalQuery(InfileTree *tree, std::string query, T default_val)
a query method for optional parameters
memcpy(dest, src, size)
memset(dest, src, size)
std::string name(int nuc)
Definition pyne.cc:2940
int offset(int dz, int da, int ds=0)
A helper function to compute nuclide id offsets from z-, a-, and s- deltas.
Definition pyne.h:1455
#define CYCLUS_UUID_SIZE
#define CYCLUS_SHA1_SIZE
#define CYCLUS_SHA1_NINT
Represents column information.