Strings Strings_readFromRawTextFile (MelderFile file) { try { autoMelderReadText text = MelderReadText_createFromFile (file); /* * Count number of strings. */ long n = MelderReadText_getNumberOfLines (text.peek()); /* * Create. */ autoStrings me = Thing_new (Strings); if (n > 0) my strings = NUMvector <wchar_t *> (1, n); my numberOfStrings = n; /* * Read strings. */ for (long i = 1; i <= n; i ++) { wchar_t *line = MelderReadText_readLine (text.peek()); my strings [i] = Melder_wcsdup (line); } return me.transfer(); } catch (MelderError) { Melder_throw ("Strings not read from raw text file ", file, "."); } }
Daata Data_readFromTextFile (MelderFile file) { try { autoMelderReadText text = MelderReadText_createFromFile (file); char32 *line = MelderReadText_readLine (text.peek()); if (! line) Melder_throw (U"No lines."); char32 *end = str32str (line, U"ooTextFile"); // oo format? autoDaata me; int formatVersion; if (end) { autostring32 klas = texgetw2 (text.peek()); me.reset (static_cast <Daata> (Thing_newFromClassName (klas.peek(), & formatVersion))); } else { end = str32str (line, U"TextFile"); if (! end) Melder_throw (U"Not an old-type text file; should not occur."); *end = U'\0'; me.reset (static_cast <Daata> (Thing_newFromClassName (line, nullptr))); formatVersion = -1; // old version } MelderFile_getParentDir (file, & Data_directoryBeingRead); Data_readText (me.peek(), text.peek(), formatVersion); file -> format = structMelderFile :: Format :: text; return me.transfer(); } catch (MelderError) { Melder_throw (U"Data not read from text file ", file, U"."); } }
Any Data_readFromTextFile (MelderFile file) { try { autoMelderReadText text = MelderReadText_createFromFile (file); wchar_t *line = MelderReadText_readLine (text.peek()); if (line == NULL) Melder_throw ("No lines."); wchar_t *end = wcsstr (line, L"ooTextFile"); // oo format? autoData me = NULL; if (end) { autostring klas = texgetw2 (text.peek()); me.reset ((Data) Thing_newFromClassName (klas.peek())); } else { end = wcsstr (line, L"TextFile"); if (end == NULL) Melder_throw ("Not an old-type text file; should not occur."); *end = '\0'; me.reset ((Data) Thing_newFromClassName (line)); Thing_version = -1; // old version: override version number, which was set to 0 by newFromClassName } MelderFile_getParentDir (file, & Data_directoryBeingRead); Data_readText (me.peek(), text.peek()); return me.transfer(); } catch (MelderError) { Melder_throw ("Data not read from text file ", file, "."); } }