void structMatrix :: v_readText (MelderReadText text, int formatVersion) { if (formatVersion < 0) { our xmin = texgetr8 (text); our xmax = texgetr8 (text); our ymin = texgetr8 (text); our ymax = texgetr8 (text); our nx = texgeti4 (text); our ny = texgeti4 (text); our dx = texgetr8 (text); our dy = texgetr8 (text); our x1 = texgetr8 (text); our y1 = texgetr8 (text); } else { Matrix_Parent :: v_readText (text, formatVersion); } if (our xmin > our xmax) Melder_throw (U"xmin should be less than or equal to xmax."); if (our ymin > our ymax) Melder_throw (U"ymin should be less than or equal to ymax."); if (our nx < 1) Melder_throw (U"nx should be at least 1."); if (our ny < 1) Melder_throw (U"ny should be at least 1."); if (our dx <= 0.0) Melder_throw (U"dx should be greater than 0.0."); if (our dy <= 0.0) Melder_throw (U"dy should be greater than 0.0."); our z = NUMmatrix_readText_r8 (1, our ny, 1, our nx, text, "z"); }
void structPermutation :: v_readText (MelderReadText text) { numberOfElements = texgeti4 (text); if (numberOfElements < 1) { Melder_throw (L"Found a negative mumber of elements during reading."); } p = NUMvector_readText_i4 (1, numberOfElements, text, "p"); Permutation_checkInvariant (this); }
void structPolygon :: v_readText (MelderReadText text) { our numberOfPoints = texgeti4 (text); if (our numberOfPoints < 1) Melder_throw (U"Cannot read a Polygon with only ", our numberOfPoints, U" points."); our x = NUMvector <double> (1, our numberOfPoints); our y = NUMvector <double> (1, our numberOfPoints); for (long i = 1; i <= our numberOfPoints; i ++) { our x [i] = texgetr4 (text); our y [i] = texgetr4 (text); } }
void structTableOfReal :: v_readText (MelderReadText a_text) { numberOfColumns = texgeti4 (a_text); if (numberOfColumns >= 1) { columnLabels = NUMvector <wchar_t*> (1, numberOfColumns); for (long i = 1; i <= numberOfColumns; i ++) columnLabels [i] = texgetw2 (a_text); } numberOfRows = texgeti4 (a_text); if (numberOfRows >= 1) { rowLabels = NUMvector <wchar_t*> (1, numberOfRows); } if (numberOfRows >= 1 && numberOfColumns >= 1) { data = NUMmatrix <double> (1, numberOfRows, 1, numberOfColumns); for (long i = 1; i <= numberOfRows; i ++) { rowLabels [i] = texgetw2 (a_text); for (long j = 1; j <= numberOfColumns; j ++) data [i] [j] = texgetr8 (a_text); } } }
void _CollectionOfDaata_v_readText (_CollectionOfDaata* me, MelderReadText text, int formatVersion) { if (formatVersion < 0) { long l_size; autostring8 line = Melder_32to8 (MelderReadText_readLine (text)); if (! line.peek() || ! sscanf (line.peek(), "%ld", & l_size) || l_size < 0) Melder_throw (U"Collection::readText: cannot read size."); my _grow (l_size); for (long i = 1; i <= l_size; i ++) { long itemNumberRead; int n = 0, length, stringsRead; char klas [200], nameTag [2000]; do { line.reset (Melder_32to8 (MelderReadText_readLine (text))); if (! line.peek()) Melder_throw (U"Missing object line."); } while (strncmp (line.peek(), "Object ", 7)); stringsRead = sscanf (line.peek(), "Object %ld: class %s %s%n", & itemNumberRead, klas, nameTag, & n); if (stringsRead < 2) Melder_throw (U"Collection::readText: cannot read header of object ", i, U"."); if (itemNumberRead != i) Melder_throw (U"Collection::readText: read item number ", itemNumberRead, U" while expecting ", i, U"."); if (stringsRead == 3 && ! strequ (nameTag, "name")) Melder_throw (U"Collection::readText: wrong header at object ", i, U"."); my at [i] = (Daata) Thing_newFromClassName (Melder_peek8to32 (klas), nullptr).releaseToAmbiguousOwner(); my size ++; if (! Thing_isa (my at [i], classDaata) || ! Data_canReadText (my at [i])) Melder_throw (U"Cannot read item of class ", Thing_className (my at [i]), U" in collection."); Data_readText (my at [i], text, -1); if (stringsRead == 3) { if (line [n] == U' ') n ++; // skip space character length = strlen (line.peek()+n); if (length > 0 && (line.peek()+n) [length - 1] == '\n') (line.peek()+n) [length - 1] = '\0'; Thing_setName (my at [i], Melder_peek8to32 (line.peek()+n)); } } } else { int32_t l_size = texgeti4 (text); my _grow (l_size); for (int32_t i = 1; i <= l_size; i ++) { autostring32 className = texgetw2 (text); int elementFormatVersion; my at [i] = (Daata) Thing_newFromClassName (className.peek(), & elementFormatVersion).releaseToAmbiguousOwner(); my size ++; if (! Thing_isa (my at [i], classDaata) || ! Data_canReadText (my at [i])) Melder_throw (U"Cannot read item of class ", Thing_className (my at [i]), U" in collection."); autostring32 objectName = texgetw2 (text); Thing_setName (my at [i], objectName.peek()); Data_readText (my at [i], text, elementFormatVersion); } } }
void structSampled2 :: v_readText (MelderReadText text, int /*formatVersion*/) { xmin = texgetr8 (text); xmax = texgetr8 (text); nx = texgeti4 (text); dx = texgetr8 (text); x1 = texgetr8 (text); ymin = texgetr8 (text); ymax = texgetr8 (text); ny = texgeti4 (text); dy = texgetr8 (text); y1 = texgetr8 (text); if (xmin > xmax || ymin > ymax) { Melder_throw (U"xmax should be greater than xmax and ymax should be greater than ymin."); } if (nx < 1 || ny < 1) { Melder_throw (U"nx and ny should be at least 1."); } if (dx <= 0 || dy <= 0) { Melder_throw (U"dx and dy should be positive."); } }
void structCategories :: v_readText (MelderReadText a_text, int /*formatVersion*/) { long l_size = texgeti4 (a_text); if (l_size == 0) { OrderedOfString_init (this, 1); } else if (l_size < 0) { Melder_throw (U"Size cannot be negative."); } else { OrderedOfString_init (this, l_size); } for (long i = 1; i <= l_size; i ++) { autoSimpleString itemi = Thing_new (SimpleString); itemi -> v_readText (a_text, 0); Ordered_addItemPos (this, itemi.transfer(), i); } }