66 XMLTag open_tag(verbosity);
67 XMLTag close_tag(verbosity);
104 matrix.resize(nrows, ncols);
109 for (Index r = 0; r < nrows; r++) {
110 for (Index
c = 0;
c < ncols;
c++) {
115 <<
"\n Row : " << r <<
"\n Column: " <<
c;
134 const Matrix& matrix,
138 XMLTag open_tag(verbosity);
139 XMLTag close_tag(verbosity);
152 for (Index r = 0; r < matrix.nrows(); ++r) {
154 *pbofs << matrix(r, 0);
156 os_xml << matrix(r, 0);
158 for (Index
c = 1;
c < matrix.ncols(); ++
c) {
160 *pbofs << matrix(r,
c);
162 os_xml <<
" " << matrix(r,
c);
165 if (!pbofs) os_xml <<
'\n';
215 const Numeric& numeric,
219 XMLTag open_tag(verbosity);
220 XMLTag close_tag(verbosity);
252 Index nrows, ncols, nnz;
259 sparse.resize(nrows, ncols);
268 for (Index i = 0; i < nnz; i++) {
274 <<
"\n Row index: " << i;
282 <<
"\n Row index: " << i;
293 for (Index i = 0; i < nnz; i++) {
299 <<
"\n Column index: " << i;
307 <<
"\n Column index: " << i;
321 for (Index i = 0; i < nnz; i++) {
326 <<
"\n Data element: " << i;
337 sparse.insert_elements(nnz, rowind, colind, data);
348 const Sparse& sparse,
352 XMLTag sparse_tag(verbosity);
353 XMLTag row_tag(verbosity);
354 XMLTag col_tag(verbosity);
355 XMLTag data_tag(verbosity);
356 XMLTag close_tag(verbosity);
376 ArrayOfIndex rowind(sparse.nnz()), colind(sparse.nnz());
377 Vector data(sparse.nnz());
378 sparse.list_elements(data, rowind, colind);
382 for (Index i = 0; i < sparse.nnz(); i++) {
387 os_xml << rowind[i] <<
'\n';
399 for (Index i = 0; i < sparse.nnz(); i++) {
404 os_xml << colind[i] <<
'\n';
417 for (Index i = 0; i < sparse.nnz(); i++) {
421 os_xml << data[i] <<
' ';
454 bool string_starts_with_quotes =
true;
465 string_starts_with_quotes =
false;
467 }
while (is_xml.good() && dummy !=
'"' && string_starts_with_quotes);
470 if (!string_starts_with_quotes) {
475 dummy = (char)is_xml.peek();
481 is_xml.get(strbuf,
'"');
508 XMLTag open_tag(verbosity);
509 XMLTag close_tag(verbosity);
516 os_xml <<
'\"' << str <<
'\"';
536 Index npages, nrows, ncols;
544 tensor.resize(npages, nrows, ncols);
549 for (Index p = 0; p < npages; p++) {
550 for (Index r = 0; r < nrows; r++) {
551 for (Index
c = 0;
c < ncols;
c++) {
556 <<
"\n Page : " << p <<
"\n Row : " << r
557 <<
"\n Column: " <<
c;
577 const Tensor3& tensor,
581 XMLTag open_tag(verbosity);
582 XMLTag close_tag(verbosity);
596 for (Index p = 0; p < tensor.npages(); ++p) {
597 for (Index r = 0; r < tensor.nrows(); ++r) {
599 *pbofs << tensor(p, r, 0);
601 os_xml << tensor(p, r, 0);
602 for (Index
c = 1;
c < tensor.ncols(); ++
c) {
604 *pbofs << tensor(p, r,
c);
606 os_xml <<
" " << tensor(p, r,
c);
608 if (!pbofs) os_xml <<
'\n';
631 Index nbooks, npages, nrows, ncols;
640 tensor = Tensor4(nbooks, npages, nrows, ncols);
644 nbooks * npages * nrows * ncols);
646 for (Index
b = 0;
b < nbooks;
b++) {
647 for (Index p = 0; p < npages; p++) {
648 for (Index r = 0; r < nrows; r++) {
649 for (Index
c = 0;
c < ncols;
c++) {
654 <<
"\n Book : " <<
b <<
"\n Page : " << p
655 <<
"\n Row : " << r <<
"\n Column: " <<
c;
676 const Tensor4& tensor,
680 XMLTag open_tag(verbosity);
681 XMLTag close_tag(verbosity);
696 for (Index
b = 0;
b < tensor.nbooks(); ++
b) {
697 for (Index p = 0; p < tensor.npages(); ++p) {
698 for (Index r = 0; r < tensor.nrows(); ++r) {
700 *pbofs << tensor(
b, p, r, 0);
702 os_xml << tensor(
b, p, r, 0);
703 for (Index
c = 1;
c < tensor.ncols(); ++
c) {
705 *pbofs << tensor(
b, p, r,
c);
707 os_xml <<
" " << tensor(
b, p, r,
c);
709 if (!pbofs) os_xml <<
'\n';
733 Index nshelves, nbooks, npages, nrows, ncols;
743 tensor.resize(nshelves, nbooks, npages, nrows, ncols);
747 nshelves * nbooks * npages * nrows * ncols);
749 for (Index s = 0; s < nshelves; s++) {
750 for (Index
b = 0;
b < nbooks;
b++) {
751 for (Index p = 0; p < npages; p++) {
752 for (Index r = 0; r < nrows; r++) {
753 for (Index
c = 0;
c < ncols;
c++) {
758 <<
"\n Shelf : " << s <<
"\n Book : " <<
b
759 <<
"\n Page : " << p <<
"\n Row : " << r
760 <<
"\n Column: " <<
c;
782 const Tensor5& tensor,
786 XMLTag open_tag(verbosity);
787 XMLTag close_tag(verbosity);
803 for (Index s = 0; s < tensor.nshelves(); ++s) {
804 for (Index
b = 0;
b < tensor.nbooks(); ++
b) {
805 for (Index p = 0; p < tensor.npages(); ++p) {
806 for (Index r = 0; r < tensor.nrows(); ++r) {
808 *pbofs << tensor(s,
b, p, r, 0);
810 os_xml << tensor(s,
b, p, r, 0);
811 for (Index
c = 1;
c < tensor.ncols(); ++
c) {
813 *pbofs << tensor(s,
b, p, r,
c);
815 os_xml <<
" " << tensor(s,
b, p, r,
c);
817 if (!pbofs) os_xml <<
'\n';
842 Index nvitrines, nshelves, nbooks, npages, nrows, ncols;
853 tensor.resize(nvitrines, nshelves, nbooks, npages, nrows, ncols);
857 tensor.data_handle(),
858 nvitrines * nshelves * nbooks * npages * nrows * ncols);
860 for (Index
v = 0;
v < nvitrines;
v++) {
861 for (Index s = 0; s < nshelves; s++) {
862 for (Index
b = 0;
b < nbooks;
b++) {
863 for (Index p = 0; p < npages; p++) {
864 for (Index r = 0; r < nrows; r++) {
865 for (Index
c = 0;
c < ncols;
c++) {
870 <<
"\n Vitrine: " <<
v <<
"\n Shelf : " << s
871 <<
"\n Book : " <<
b <<
"\n Page : " << p
872 <<
"\n Row : " << r <<
"\n Column : " <<
c;
895 const Tensor6& tensor,
899 XMLTag open_tag(verbosity);
900 XMLTag close_tag(verbosity);
917 for (Index
v = 0;
v < tensor.nvitrines(); ++
v) {
918 for (Index s = 0; s < tensor.nshelves(); ++s) {
919 for (Index
b = 0;
b < tensor.nbooks(); ++
b) {
920 for (Index p = 0; p < tensor.npages(); ++p) {
921 for (Index r = 0; r < tensor.nrows(); ++r) {
923 *pbofs << tensor(
v, s,
b, p, r, 0);
925 os_xml << tensor(
v, s,
b, p, r, 0);
926 for (Index
c = 1;
c < tensor.ncols(); ++
c) {
928 *pbofs << tensor(
v, s,
b, p, r,
c);
930 os_xml <<
" " << tensor(
v, s,
b, p, r,
c);
932 if (!pbofs) os_xml <<
'\n';
958 Index nlibraries, nvitrines, nshelves, nbooks, npages, nrows, ncols;
970 tensor.resize(nlibraries, nvitrines, nshelves, nbooks, npages, nrows, ncols);
974 tensor.data_handle(),
975 nlibraries * nvitrines * nshelves * nbooks * npages * nrows * ncols);
977 for (Index l = 0; l < nlibraries; l++) {
978 for (Index
v = 0;
v < nvitrines;
v++) {
979 for (Index s = 0; s < nshelves; s++) {
980 for (Index
b = 0;
b < nbooks;
b++) {
981 for (Index p = 0; p < npages; p++) {
982 for (Index r = 0; r < nrows; r++) {
983 for (Index
c = 0;
c < ncols;
c++) {
988 <<
"\n Library: " << l <<
"\n Vitrine: " <<
v
989 <<
"\n Shelf : " << s <<
"\n Book : " <<
b
990 <<
"\n Page : " << p <<
"\n Row : " << r
991 <<
"\n Column : " <<
c;
1015 const Tensor7& tensor,
1019 XMLTag open_tag(verbosity);
1020 XMLTag close_tag(verbosity);
1038 for (Index l = 0; l < tensor.nlibraries(); ++l) {
1039 for (Index
v = 0;
v < tensor.nvitrines(); ++
v) {
1040 for (Index s = 0; s < tensor.nshelves(); ++s) {
1041 for (Index
b = 0;
b < tensor.nbooks(); ++
b) {
1042 for (Index p = 0; p < tensor.npages(); ++p) {
1043 for (Index r = 0; r < tensor.nrows(); ++r) {
1045 *pbofs << tensor(l,
v, s,
b, p, r, 0);
1047 os_xml << tensor(l,
v, s,
b, p, r, 0);
1048 for (Index
c = 1;
c < tensor.ncols(); ++
c) {
1050 *pbofs << tensor(l,
v, s,
b, p, r,
c);
1052 os_xml <<
" " << tensor(l,
v, s,
b, p, r,
c);
1054 if (!pbofs) os_xml <<
'\n';
1085 vector.resize(nelem);
1090 for (Index n = 0; n < nelem; n++) {
1092 if (is_xml.fail()) {
1095 <<
"\n Element: " << n;
1131 const Vector& vector,
1135 XMLTag open_tag(verbosity);
1136 XMLTag close_tag(verbosity);
1137 Index n = vector.nelem();
1152 for (Index i = 0; i < n; ++i)
1154 *pbofs << vector[i];
1156 os_xml << vector[i] <<
'\n';
The global header file for ARTS.
void add_attribute(const String &aname, String value)
void write_to_stream(ostream &os)
Write XML tag.
void check_name(const String &expected_name)
Check tag name.
void read_from_stream(istream &is)
Reads next XML tag.
void get_attribute_value(const String &aname, String &value)
void set_name(const String &new_name)
Binary output file stream class.
void readDoubleArray(double *d, unsigned long size)
Binary output file stream class.
Input manipulator class for doubles to enable nan and inf parsing.
Fast double input stream with support for parsing nan and inf.
void xml_data_parse_error(ArtsXMLTag &tag, String str_error)
Throws XML parser runtime error.
void xml_set_stream_precision(ostream &os)
void xml_parse_error(const String &str_error)
Throws XML parser runtime error.
void xml_write_to_stream(ostream &os_xml, const Index &index, bofstream *pbofs, const String &name, const Verbosity &verbosity)
Writes Index to XML output stream.
void xml_read_from_stream(istream &is_xml, Index &index, bifstream *pbifs, const Verbosity &verbosity)
Reads Index from XML input stream.
void xml_parse_from_stream(istream &is_xml, Vector &vector, bifstream *pbifs, XMLTag &tag, const Verbosity &)
Parses Vector from XML input stream.