#include "M3Runtime.h" typedef struct { int tc; char* str; int len; } TXT; PRIVATE TXT txt1 = { 3, "Impossible! A bug in Rd or TextRd", 34}; #line 25 "TextRd.m3" #define t9 ADDRESS #define t38 void typedef unsigned char t10; #line 173 ".ROOT/.boots/corelib/Interfaces/Rd.i3" typedef struct { char* elts; int size[1]; } t25; #line 25 "TextRd.m3" #define t11 t25 PRIVATE void t9_PrintProc (); #line 25 PRIVATE typecell t9_TC; PRIVATE typecell t9_TC_init = {0, 0, 0, 0, 0, (PROC)NIL, -2, 0, NIL, 1, 1, (PROC)NIL, (PROC)NIL, t9_PrintProc, #line 25 "", 991118862, 833218118}; PRIVATE TYPE TC9 = &t9_TC; #define t27 ADDRESS #define TC27 TC_REFANY IMPORT TYPE TC_REFANY; IMPORT char VS_REFANY__4b8748e831fc107a; #define t40 ADDRESS typedef int t5; #define TC40 TC_ADDRESS IMPORT TYPE TC_ADDRESS; IMPORT char VS_ADDRESS__30f7308738738b44; #define t41 ADDRESS #define TC41 TC_NULL IMPORT TYPE TC_NULL; IMPORT char VS_NULL__fb50c7d53bec30dc; #define t18 ADDRESS typedef struct { TYPE self; int private; } t18_methods; #define t18_msize (sizeof (t18_methods)) typedef struct { ADDRESS methods; } t18_fields; #define t18_size (sizeof (t18_fields)) #define TC18 TC_ROOT IMPORT TYPE TC_ROOT; IMPORT char VS_ROOT__349f58f628be0ac6; #define t18_MapProc TC_ROOT->mapProc #define t15 ADDRESS #define TC15 TC_Rd__T IMPORT TYPE TC_Rd__T; #line 83 ".ROOT/.boots/corelib/Interfaces/Rd.i3" IMPORT char VS_Rd__T__2555b70b3f7780b1; #define t15_MapProc TC_Rd__T->mapProc #define t1 ADDRESS #define TC1 TC_TextRd__T IMPORT TYPE TC_TextRd__T; #line 13 "./TextRd.i3" IMPORT char VS_TextRd__T__aa7fbe4a3afd8be5; #define t1_MapProc TC_TextRd__T->mapProc typedef t38 (*t2)(); typedef int t3; #line 47 "TextRd.m3" typedef t3 (*t4)(); #line 23 ".ROOT/.boots/corelib/Interfaces/RdClass.i3" typedef unsigned char t6; typedef unsigned char t7; #line 31 "TextRd.m3" typedef t6 (*t8)(); #define t12 ADDRESS #define TC12 TC_TEXT IMPORT TYPE TC_TEXT; IMPORT char VS_TEXT__b7a92447326386f5; #define t12_MapProc TC_TEXT->mapProc typedef t1 (*t13)(); #line 15 #define t14 ADDRESS #line 15 typedef struct { int filler; } t14_methods; #define t14_msize (sizeof (t14_methods)) typedef struct { #line 15 t12 _text; t5 _len; } t14_fields; #define t14_size (sizeof (t14_fields)) PRIVATE void t14_InitProc (); #line 15 PRIVATE void t14_SetupProc (); PRIVATE void t14_PrintProc (); PRIVATE void t14_MapProc (); PRIVATE typecell t14_TC; PRIVATE typecell t14_TC_init = {0, 0, 0, 0, 0, t14_MapProc, #line 15 t14_size, t14_msize, NIL, 0, 0, t14_InitProc, t14_SetupProc, t14_PrintProc, "TextRd.T version 0.0", -1067642612, 766646965}; PRIVATE TYPE TC14 = &t14_TC; #line 15 #line 26 ".ROOT/.boots/corelib/Interfaces/RdClass.i3" #define t16 ADDRESS #line 22 #define t17 ADDRESS #define TC17 TC_RdClass__Private IMPORT TYPE TC_RdClass__Private; #line 22 IMPORT char VS_RdClass__Private__5594af883f1b8361; #define t17_MapProc TC_RdClass__Private->mapProc typedef struct { t8 _seek; t4 _length; t2 _close; } t16_methods; #define t16_msize (sizeof (t16_methods)) typedef struct { #line 26 t9 _buff; t3 _st; t3 _lo; t3 _hi; t3 _cur; t7 _closed; t7 _seekable; t7 _intermittent; } t16_fields; #define t16_size (sizeof (t16_fields)) #define TC16 TC_Rd__T #define t16_MapProc TC_Rd__T->mapProc typedef signed_char t19; #line 67 ".ROOT/.boots/corelib/Interfaces/Text.i3" typedef t19 (*t20)(); #line 63 typedef t5 (*t21)(); #line 55 typedef t7 (*t22)(); #line 52 typedef t12 (*t23)(); #line 23 typedef t10 (*t24)(); #line 84 ".ROOT/.boots/corelib/Interfaces/Rd.i3" typedef unsigned char t26; #line 15 ".ROOT/.boots/corelib/Interfaces/Thread.i3" #define t28 ADDRESS #define TC28 TC_Thread__T IMPORT TYPE TC_Thread__T; #line 15 IMPORT char VS_Thread__T__2555b70b3f7780b1; #define t28_MapProc TC_Thread__T->mapProc typedef t27 (*t29)(); #define t30 ADDRESS #define TC30 TC_Thread__Condition IMPORT TYPE TC_Thread__Condition; #line 21 IMPORT char VS_Thread__Condition__26d5968239e08f4e; #define t30_MapProc TC_Thread__Condition->mapProc #define t31 ADDRESS #define TC31 TC_MUTEX IMPORT TYPE TC_MUTEX; IMPORT char VS_MUTEX__1f9d4e89391ab815; #define t31_MapProc TC_MUTEX->mapProc typedef t28 (*t32)(); #line 23 #define t33 ADDRESS #line 23 typedef struct { t29 _apply; } t33_methods; #define t33_msize (sizeof (t33_methods)) typedef struct { #line 23 int filler; } t33_fields; #define t33_size (sizeof (t33_fields)) #define TC33 TC_Thread__Closure IMPORT TYPE TC_Thread__Closure; #line 23 IMPORT char VS_Thread__Closure__7fb5c6232c5a658a; #define t33_MapProc TC_Thread__Closure->mapProc typedef t30 (*t34)(); typedef t31 (*t35)(); #line 28 #define t36 ADDRESS #line 28 typedef struct { int filler; } t36_methods; #define t36_msize (sizeof (t36_methods)) typedef struct { #line 28 t3 _stackSize; } t36_fields; #define t36_size (sizeof (t36_fields)) #define TC36 TC_Thread__SizedClosure IMPORT TYPE TC_Thread__SizedClosure; #line 28 IMPORT char VS_Thread__SizedClosure__8a46717d2eae7b07; #define t36_MapProc TC_Thread__SizedClosure->mapProc typedef CLOSURE t37; #define t39 ADDRESS typedef struct { TYPE self; int private; } t39_methods; #define t39_msize (sizeof (t39_methods)) typedef struct { ADDRESS methods; } t39_fields; #define t39_size (sizeof (t39_fields)) #define TC39 TC_UNTRACED_ROOT IMPORT TYPE TC_UNTRACED_ROOT; IMPORT char VS_UNTRACED_ROOT__3e0964513fd6da20; typedef double t42; typedef float t43; #line 8 "TextRd.m3" IMPORT INITLINK* Rd__init; IMPORT INITLINK* Thread__init; IMPORT INITLINK* Text__init; IMPORT INITLINK* RdClass__init; IMPORT INITLINK* TextRd__init; #line 8 IMPORT EXCEPTION_NAME _Thread__Alerted; IMPORT char VS_Thread__Alerted__fc88feb43485af46; IMPORT EXCEPTION_NAME _Rd__EndOfFile; #line 8 IMPORT char VS_Rd__EndOfFile__f4a9d2f63b7e105d; IMPORT EXCEPTION_NAME _Rd__Failure; IMPORT char VS_Rd__Failure__e4a829e331222b6d; #line 8 IMPORT EXCEPTION_NAME _Rd__Error; IMPORT char VS_Rd__Error__5ca07bfe2ba90cfc; IMPORT char VS_Thread__DefaultStackSize__0c949e2e2def4e40; #line 8 IMPORT TYPE TC_Thread__Mutex; IMPORT char VS_Thread__Mutex__4f5c12072cdeec3e; IMPORT TYPE TC_Text__T; IMPORT char VS_Text__T__fc4b369f3ab271fd; #line 8 IMPORT t3 _Text__Length (); IMPORT char VS_Text__Length__661a58173d76f41c; IMPORT t12 _Text__Sub (); IMPORT char VS_Text__Sub__ba151c702fe1a06f; #line 8 IMPORT t38 _Text__SetChars (); IMPORT char VS_Text__SetChars__bc9d6611221daa06; IMPORT t3 _RdClass__LengthDefault (); IMPORT char VS_RdClass__LengthDefault__76d0ecc72f6b16a1; #line 8 IMPORT t38 _RdClass__CloseDefault (); IMPORT char VS_RdClass__CloseDefault__f0ed7e3d26d0db8a; EXPORT t1 _TextRd__New (); #line 8 EXPORT char VS_TextRd__New__4194d0fe285dac05 = '\0'; PRIVATE t6 _TextRd__Seek (); PRIVATE t3 _TextRd__Length (); PRIVATE t38 _TextRd__Close (); #line 8 EXPORT char VS_TextRd__T__293a790e286d0549 = '\0'; IMPORT char VS_Rd__T__3cb9710e23a32fd2; #line 24 PRIVATE EXCEPTION_NAME *raises_18 [] = { & _Rd__Error, & _Thread__Alerted, & _Rd__Failure, (EXCEPTION_NAME *) NULL}; #line 44 PRIVATE EXCEPTION_NAME *raises_19 [] = { & _Rd__Error, & _Thread__Alerted, & _Rd__Failure, (EXCEPTION_NAME *) NULL}; PRIVATE EXCEPTION_NAME *raises_20 [] = { & _Rd__Error, & _Thread__Alerted, & _Rd__Failure, (EXCEPTION_NAME *) NULL}; #line 22 "TextRd.m3" EXPORT t1 _TextRd__New (_t) t12 _t; { t1 z0; t9 z1; t8 z2; t4 z3; t2 z4; t3 z5; #line 22 "TextRd.m3" { auto t1 __result; { ZERO1 (& __result); CHECKSTACKOVERFLOW; { register char** ptr = (char**) TNEWOBJ (TC1); ((t16_fields*)((char*)ptr + (TC17->datasize + 0)))->_st = 0 ; ((t16_fields*)((char*)ptr + (TC17->datasize + 0)))->_lo = 0 ; #line 24 ((t16_fields*)((char*)ptr + (TC17->datasize + 0)))->_cur = 0 ; ((t16_fields*)((char*)ptr + (TC17->datasize + 0)))->_hi = 0 ; #line 24 { register t25* ptr; int sz[1]; sz[0] = 500 ; ptr = (t25*) TNEWA(TC9, 8 + sz[0] * 1); ptr->elts = (char*)(& ptr->size[1]); #line 24 ptr->size[0] = sz[0]; z1 = (t9) ptr; }; ((t16_fields*)((char*)ptr + (TC17->datasize + 0)))->_buff = z1; ((t16_fields*)((char*)ptr + (TC17->datasize + 0)))->_closed = 0 ; #line 24 ((t16_fields*)((char*)ptr + (TC17->datasize + 0)))->_seekable = 0 ; ((t16_fields*)((char*)ptr + (TC17->datasize + 0)))->_intermittent = 1 ; #line 24 z2 = _TextRd__Seek; if (IS_CLOSURE (z2)) NARROWFAULT; CLONE_METHOD_SUITE (ptr, TC1); ((t16_methods*)((*ptr) + (TC17->methodsize + 0)))->_seek = z2; #line 24 z3 = _TextRd__Length; if (IS_CLOSURE (z3)) NARROWFAULT; ((t16_methods*)((*ptr) + (TC17->methodsize + 0)))->_length = z3; #line 24 z4 = _TextRd__Close; if (IS_CLOSURE (z4)) NARROWFAULT; ((t16_methods*)((*ptr) + (TC17->methodsize + 0)))->_close = z4; #line 24 ((t14_fields*)((char*)ptr + (TC17->datasize + 0+t16_size)))->_text = _t; z5 = _Text__Length (_t); ((t14_fields*)((char*)ptr + (TC17->datasize + 0+t16_size)))->_len = z5; #line 24 z0 = (t1) ptr; }; __result = z0; return __result; } } }; #line 31 "TextRd.m3" PRIVATE t6 _TextRd__Seek (_rd, _dontBlock) t1 _rd; t7 _dontBlock; { t1 z1; t1 z0; t7 z3; t12 z2; t3 z4; t9 z5; t3 z6; t5 z7; t1 z8; t1 z9; t12 z10; t5 z11; #line 31 "TextRd.m3" { HANDLER hproc_0; PUSH_RAISES (hproc_0, raises_18, proc_0); { auto t5 _thisTime; auto t6 __result; { ZERO1B (& __result); #line 31 CHECKSTACKOVERFLOW; NILCHECKA (z1 = _rd); z0 = (char*)z1 + TC17->datasize; z3 = ((((t16_fields*)(z0+(0)))->_cur) != (((t16_fields*)(z0+(0)))->_hi)); #line 36 if (z3) { z2 = ((ADDRESS)(& txt1.str)); RAISE (& _Rd__Failure, & z2, 4); }; NILCHECKA (z1 = _rd); z0 = (char*)z1 + TC17->datasize; z3 = ((((t14_fields*)(z0+(0+t16_size)))->_len) <= (((t16_fields*)(z0+(0)))->_cur)); #line 38 if (z3) { __result = 2 ; CUT_TO_NEXT_HANDLER (hproc_0); return __result; }; NILCHECKA (z1 = _rd); z0 = (char*)z1 + TC17->datasize; NILCHECKB (z5 = (((t16_fields*)(z0+(0)))->_buff)); z4 = (*((t11*) z5)).size[0]; #line 40 NILCHECKA (z1 = _rd); z0 = (char*)z1 + TC17->datasize; z6 = z4; z7 = (((t14_fields*)(z0+(0+t16_size)))->_len); if (z6 > z7) z6 = z7; #line 40 _thisTime = z6; NILCHECKA (z8 = _rd); z1 = (char*)z8 + TC17->datasize; NILCHECKB (z5 = (((t16_fields*)(z1+(0)))->_buff)); NILCHECKA (z8 = _rd); #line 41 z9 = (char*)z8 + TC17->datasize; z7 = _thisTime; if (z7 < 0) RANGEFAULT; z10 = _Text__Sub ((((t14_fields*)(z9+(0+t16_size)))->_text), (((t16_fields*)(z9+(0)))->_cur), z7); #line 41 _Text__SetChars (&(*((t11*) z5)), z10); NILCHECKA (z1 = _rd); z0 = (char*)z1 + TC17->datasize; (((t16_fields*)(z0+(0)))->_lo) = (((t16_fields*)(z0+(0)))->_cur); NILCHECKA (z1 = _rd); z0 = (char*)z1 + TC17->datasize; z7 = (((t16_fields*)(z0+(0)))->_lo) + _thisTime; z11 = z7; #line 43 if (z11 < 0) RANGEFAULT; NILCHECKA (z1 = _rd); z0 = (char*)z1 + TC17->datasize; (((t16_fields*)(z0+(0)))->_hi) = z11; __result = 0 ; CUT_TO_NEXT_HANDLER (hproc_0); return __result; } } proc_0: CUT_TO_NEXT_HANDLER (hproc_0); if (hproc_0.exception != 0) RAISE_FOR_SURE (hproc_0.exception); #line 44 }; }; #line 47 "TextRd.m3" PRIVATE t3 _TextRd__Length (_rd) t1 _rd; { t1 z2; t1 z1; t3 z3; #line 47 "TextRd.m3" { HANDLER hproc_0; PUSH_RAISES (hproc_0, raises_19, proc_0); { auto t3 __result; { ZERO1 (& __result); CHECKSTACKOVERFLOW; NILCHECKA (z2 = _rd); z1 = (char*)z2 + TC17->datasize; z3 = _Text__Length ((((t14_fields*)(z1+(0+t16_size)))->_text)); #line 49 __result = z3; CUT_TO_NEXT_HANDLER (hproc_0); return __result; } } proc_0: CUT_TO_NEXT_HANDLER (hproc_0); if (hproc_0.exception != 0) RAISE_FOR_SURE (hproc_0.exception); #line 49 }; }; #line 52 "TextRd.m3" PRIVATE t38 _TextRd__Close (_rd) t1 _rd; { t1 z2; t1 z1; #line 52 "TextRd.m3" { HANDLER hproc_0; PUSH_RAISES (hproc_0, raises_20, proc_0); { { CHECKSTACKOVERFLOW; NILCHECKA (z2 = _rd); z1 = (char*)z2 + TC17->datasize; (((t16_fields*)(z1+(0)))->_buff) = (t9) 0; NILCHECKA (z2 = _rd); z1 = (char*)z2 + TC17->datasize; (((t14_fields*)(z1+(0+t16_size)))->_text) = (t12) 0; } } proc_0: #line 55 CUT_TO_NEXT_HANDLER (hproc_0); if (hproc_0.exception != 0) RAISE_FOR_SURE (hproc_0.exception); }; }; PRIVATE int init_done = -1; #line 55 "TextRd.m3" PRIVATE void TextRd__initProc (g) int g; { #line 55 "TextRd.m3" if (init_done >= g) return; init_done = g; INITIALIZE (& TextRd__init); INITIALIZE (& Rd__init); INITIALIZE (& Thread__init); #line 55 INITIALIZE (& Text__init); INITIALIZE (& RdClass__init); return; }; #line 55 "TextRd.m3" PRIVATE void t9_PrintProc (ref) t11* ref; { CHECKSTACKOVERFLOW; fprintf (stderr, "%s {", TC9->brand); fprintf (stderr, "^ = array"); #line 55 fprintf (stderr, "}\n"); }; #line 55 "TextRd.m3" PRIVATE void t14_InitProc (obj) char* obj; { register t14_fields* p; #line 55 "TextRd.m3" CHECKSTACKOVERFLOW; p = (t14_fields*) (obj + TC15->datasize); }; #line 55 "TextRd.m3" PRIVATE void t14_SetupProc () { register int* p; #line 55 "TextRd.m3" t14_TC.datasize += TC15->datasize; t14_TC.methodsize += TC15->methodsize; p = (int*) UALLOC (t14_TC.methodsize); COPY (TC15->defaultMethods, p, (TC15->methodsize)); #line 55 p[0] = (int)(& t14_TC); p[1] = 0; t14_TC.defaultMethods = (char*) p; }; #line 55 "TextRd.m3" PRIVATE void t14_PrintProc (obj) char *obj; { t14_fields* o; #line 55 "TextRd.m3" CHECKSTACKOVERFLOW; if (TC15->printProc != 0) {TC15->printProc (obj); } fprintf (stderr, "{%s} ", TC14->brand); o = (t14_fields*) (obj + TC15->datasize); #line 55 fprintf (stderr, "text = %#x", o->_text); fprintf (stderr, ", "); fprintf (stderr, "len = %d", o->_len); }; PRIVATE void t14_MapProc (p, r, c) #line 55 void (*p) (); char* r; ADDRESS c; { register t14_fields* o; CHECKSTACKOVERFLOW; t15_MapProc (p, r, c); o = (t14_fields*) (r + TC15->datasize); #line 55 p (& (o->_text), r, c); }; PRIVATE INITLINK me_0 ={(INITLINK*)NIL, 0, TextRd__initProc}; static char* VSimports[] = { &VS_Thread__Alerted__fc88feb43485af46, &VS_Rd__T__2555b70b3f7780b1, &VS_Rd__EndOfFile__f4a9d2f63b7e105d, &VS_Rd__Failure__e4a829e331222b6d, &VS_Rd__Error__5ca07bfe2ba90cfc, &VS_Thread__DefaultStackSize__0c949e2e2def4e40, &VS_Thread__T__2555b70b3f7780b1, &VS_Thread__Mutex__4f5c12072cdeec3e, &VS_Thread__Condition__26d5968239e08f4e, &VS_Thread__Closure__7fb5c6232c5a658a, &VS_Thread__SizedClosure__8a46717d2eae7b07, &VS_Thread__Alerted__fc88feb43485af46, &VS_Text__T__fc4b369f3ab271fd, &VS_Text__Length__661a58173d76f41c, &VS_Text__Sub__ba151c702fe1a06f, &VS_Text__SetChars__bc9d6611221daa06, &VS_Rd__Error__5ca07bfe2ba90cfc, &VS_Rd__Failure__e4a829e331222b6d, &VS_Thread__Alerted__fc88feb43485af46, &VS_RdClass__Private__5594af883f1b8361, &VS_RdClass__LengthDefault__76d0ecc72f6b16a1, &VS_RdClass__CloseDefault__f0ed7e3d26d0db8a, &VS_TextRd__T__aa7fbe4a3afd8be5, &VS_Rd__Error__5ca07bfe2ba90cfc, &VS_Rd__Failure__e4a829e331222b6d, &VS_Thread__Alerted__fc88feb43485af46, NIL }; void TextRd__MLink (phase) int phase; { switch (phase) { case 0: { me_0.link = TextRd__init; TextRd__init = & me_0; t9_TC = t9_TC_init; REGISTERTYPE (TC9); t14_TC = t14_TC_init; REGISTERTYPE (TC14); break; }; case 1: { t14_TC.parent = TC_Rd__T; #line 15 "TextRd.m3" IDENTIFYTYPES (TC1, TC14); break; }; case 2: { break; }; }; };