// // $Id$ // //******************************************************************* // reader.cls: ltal nos stream olvas˘ oszt ly. Ebb“l ”r”k”lnek a // karakter ‚s a token olvas˘ oszt lyok. // 1999, Csisz r Levente class READER OBJECT attrib name // Az olvasott stream azonosĄt˘ja (a // hibajelz‚sekhez) attrib errorStream // Ebbe a t”mbbe Ąrja a hibazeneteket. // prsError objektumok vannak benne. attrib tbuffer // Ez egy TBUFFER, ide teszi be az unread()-el // visszatett itemeket. nmethod read() // Olvas egy 'elemet'. Az elem a nil kiv‚tel‚vel b rmilyen // objektum lehet. Ha az unget puffer nem res, akkor onnan // olvassa, ha res, akkor pedig a readItem()-el olvas egyet // a stream-b“l. // Ret: Az elem, ha OK, nil, ha v‚ge van a streamnek, vagy ha // hiba volt. Hiba eset‚n be llĄtja a this:error-t. nmethod unread(item) // Visszatesz az readerbe egy elemet. nmethod readTBuffer() // A tbuffer-b“l olvas. Ha a tbuffer res, akkor nil nmethod arrayTBuffer() // Ad egy t”mb”t, amiben a tbuffer elemi vannak. abstract nmethod readItem() // Bels“ m–velet, az val˘di aloszt lyoknak implement lni kell. // Olvas egy 'elemet' k”zvetlenl a stream-b“l az unget puffer // megkerl‚s‚vel. Az elem a nil kiv‚tel‚vel b rmilyen // objektum lehet. // Ret: Az elem, ha OK, nil, ha v‚ge van a streamnek, vagy ha // hiba volt. Hiba eset‚n be llĄtja a this:error-t. nmethod isError(l) // Igaz, ha volt hiba. // l: Az errorStream el“z“ hossza. Ha meg van adva, akkor akkor // ad igazat, ha az errorStream hossza nagyobb, mint az l. nmethod addError(prsErr) // Hozz ad egy prsErr objektumot az errorStream-hez, ha az nem nil // nmethod errorStr() // Nil, ha nem volt hiba, egy string, ami a hiba leĄr s t // tartalmazza, ha volt hiba. abstract nmethod destruct{retnil}() // T”rli az objektumhoz kapcsol˘d˘ kls“ eszk”z”ket. (Pl. lez rja // a fil‚t etc.) rmethod oinit(name,errorStream) // Inicializ lja az objektumot. metaclass rmethod onew(name,errorStream)