예제 #1
0
파일: Matrix.cpp 프로젝트: DsRQuicke/praat
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");
}
예제 #2
0
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);
}
예제 #3
0
파일: Polygon.cpp 프로젝트: psibre/praat
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);
		}
	}
}
예제 #5
0
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);
		}
	}
}
예제 #6
0
파일: Sampled2.cpp 프로젝트: eginhard/praat
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.");
	}
}
예제 #7
0
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);
	}
}