/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */ /* time: February 27, 1992 5:56:16 pm PST */ /* C2C version: October 16, 1990 (native) */ /* ref-counting: off */ /* file: TEditLocksImpl, module: TEditLocksImpl */ /* switches: bcfhklnouw */ #include <cedar/InstallationSupport.h> #include <cedar/CedarExtra.h> static char versionStamp[] = "@(#)mob←version [2754919512,2579146397] TEditLocksImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef struct {word f0, f1, f2, f3, f4, f5;} W6; typedef W6 *W6Pt; typedef word (*fPt)(); typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7; typedef struct {word f0, f1;} W2; typedef W2 *W2Pt; #define SOURCE(p, l) /* source p, l */ #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) ) #define MAX(cast, x, y) ( ( cast x) > ( cast y) ? (x) : (y) ) static void NoName←Q1260(); static void TEditLocksImpl←P0(); static void LockBoth←P60(); static word Lock←P120(); static void LockIt←P180(); static word NoName←Q1320(); static word LockOrder←P240(); static void Unlock←P300(); static void UnlockIt←P360(); static word NoName←Q1380(); static word LockDocAndTdd←P420(); static void UnlockDocAndTdd←P480(); static word WaitingForWrite←P540(); static word GetRoot←P600(); static word LockedGetLock←P720(); static word NoName←Q1440(); static void NoName←Q1500(); static void NoName←Q1560(); static void NoName←Q1620(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\241\200\031\316\300\154\273\372\020\100\164\000\000"}; static struct {unsigned f; char r[4];} string2 = {196611, "\004F\000"}; static struct {unsigned f; char r[4];} string3 = {131076, "\216\251\000"}; static struct {unsigned f; char r[4];} string4 = {65537, "\001\000\000"}; static struct {unsigned f; char r[16];} string5 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"}; static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\113\175\243\331\300\252\247\212\133\100\164\000\000"}; static struct {unsigned f; char r[36];} string7 = {2162721, "\006\014\000\001\060\001\064\001\070\001\074\001\100\100\001\100\124\001\100\130\001\100\134\001\100\140\001\100\144\001\100\150\001\000\000"}; static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\343\357\262\137\300\144\166\356\317\100\164\000\000"}; static struct {unsigned f; char r[16];} string9 = {851981, "\006\005\000\001\004\001\054\001\070\001\100\114\001\000\000"}; static struct {unsigned f; char r[16];} string10 = {786448, "LockedViewer\000\000\000"}; static struct {unsigned f; char r[16];} string11 = {786448, "DocumentLock\000\000\000"}; static struct {unsigned f; char r[16];} string12 = {917520, "LockDocAndTdd1\000"}; static struct {unsigned f; char r[16];} string13 = {917520, "LockDocAndTdd2\000"}; static struct {unsigned f; char r[16];} string14 = {851984, "\257\300\244\064\274\130\300\231\272\246\235\100\200\000\000"}; static struct {unsigned f; char r[16];} string15 = {786444, "\006\004\040\001\044\001\050\001\100\124\004\017\000\000\000"}; static struct {unsigned f; char r[16];} string16 = {851984, "\257\300\234\060\361\073\300\103\025\207\123\100\150\000\000"}; static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\240\236\274\315\300\111\163\325\023\100\150\000\000"}; static struct {unsigned f; char r[16];} string18 = {851984, "\257\300\237\211\044\154\300\046\105\033\126\100\150\000\000"}; static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\343\357\262\137\300\144\166\356\317\100\150\000\000"}; static struct {unsigned f; char r[16];} string20 = {851984, "\257\300\071\221\120\257\300\230\321\322\204\100\150\000\000"}; static struct {unsigned f; char r[16];} string21 = {851984, "\257\300\254\253\350\355\300\233\126\335\104\100\150\000\000"}; static struct {unsigned f; char r[16];} string22 = {851984, "\257\300\234\330\257\310\300\272\273\374\141\100\150\000\000"}; static struct {unsigned f; char r[16];} string23 = {851984, "\257\300\241\200\031\316\300\154\273\372\020\100\150\000\000"}; static struct { word f0[25]; word f25; word f26; word f27; word f28; word f29; word f30; word f31; word f32; word f33; word f34; word f35; word f36; word f37; word f38; word f39; word f40; word f41; word f42; word f43; word f44; word f45; word f46; word f47; word f48[15]; } globalframe = { {0}, (word) LockedGetLock←P720, 0, (word) GetRoot←P600, 0, (word) WaitingForWrite←P540, 0, (word) UnlockDocAndTdd←P480, 0, (word) LockDocAndTdd←P420, 0, (word) UnlockIt←P360, 0, (word) Unlock←P300, 0, (word) LockOrder←P240, 0, (word) LockIt←P180, 0, (word) Lock←P120, 0, (word) LockBoth←P60, 0, (word) TEditLocksImpl←P0, {0} }; static void NoName←Q1260() { register ptr gf←c0114 = (ptr) &globalframe; word var←c16864; (* (( (ptr) gf←c0114)+11) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2); (* (( (ptr) gf←c0114)+15) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4); (* (( (ptr) gf←c0114)+16) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string4); (* (( (ptr) gf←c0114)+19) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7); (* (( (ptr) gf←c0114)+20) ) = (word) XR←GetTypeIndex((word) &string8, 0, (word) &string9); (* (ptr) (( (bPt) gf←c0114)+84) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0114)+15) ), (word) &string10); (* (ptr) (( (bPt) gf←c0114)+88) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0114)+15) ), (word) &string11); (* (ptr) (( (bPt) gf←c0114)+92) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0114)+16) ), (word) &string12); (* (ptr) (( (bPt) gf←c0114)+96) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0114)+16) ), (word) &string13); (void) XR←DeclareGlobalFrame((word) "TEditLocksImpl", &globalframe, (word) XR←GetTypeIndex((word) &string14, 0, (word) &string15) , (word) (( (bPt) gf←c0114)+188)/* var←c16160 */ ); var←c16864 = (word) XR←ImportInterface((word) "NodeProps", (word) XR←GetTypeIndexS((word) (&string16)), 28); (* (( (ptr) gf←c0114)+55)/* var←c16288 */ ) = var←c16864; (void) XR←ImportProcS(var←c16864, 67633410); (void) XR←ImportProcS(var←c16864, 786435); (void) XR←ImportProcS(var←c16864, 67638274); (void) XR←ImportProcS(var←c16864, 67638018); (void) XR←ImportProcS(var←c16864, 67637762); (void) XR←ImportProcS(var←c16864, 1052932); var←c16864 = (word) XR←ImportInterface((word) "Process", (word) XR←GetTypeIndexS((word) (&string17)), 22); (* (( (ptr) gf←c0114)+58)/* var←c16448 */ ) = var←c16864; (void) XR←ImportProcS(var←c16864, 134219776); var←c16864 = (word) XR←ImportInterface((word) "MonitoredQueue", (word) XR←GetTypeIndexS((word) (&string18)), 9); (* (( (ptr) gf←c0114)+61)/* var←c16704 */ ) = var←c16864; (void) XR←ImportProcS(var←c16864, 525058); var←c16864 = (word) XR←ImportInterface((word) "TEditDocument", (word) XR←GetTypeIndexS((word) (&string19)), 6); (* (( (ptr) gf←c0114)+56)/* var←c16320 */ ) = var←c16864; (void) XR←ImportProcS(var←c16864, 262657); (void) XR←ImportProcS(var←c16864, 68157700); (void) XR←ImportProcS(var←c16864, 67372289); var←c16864 = (word) XR←ImportInterface((word) "TEditRefresh", (word) XR←GetTypeIndexS((word) (&string20)), 3); (* (( (ptr) gf←c0114)+60)/* var←c16672 */ ) = var←c16864; var←c16864 = (word) XR←ImportInterface((word) "ViewerLocks", (word) XR←GetTypeIndexS((word) (&string21)), 9); (* (( (ptr) gf←c0114)+59)/* var←c16512 */ ) = var←c16864; (void) XR←ImportProcS(var←c16864, 67634946); var←c16864 = (word) XR←ImportInterface((word) "ViewerPrivate", (word) XR←GetTypeIndexS((word) (&string22)), 68); (* (( (ptr) gf←c0114)+57)/* var←c16416 */ ) = var←c16864; (void) XR←ImportProcS(var←c16864, 267265); (void) XR←ImportProcS(var←c16864, 267009); var←c16864 = (word) XR←ExportInterface((word) "TEditLocks", (word) XR←GetTypeIndexS((word) (&string23)), 7); (* (( (ptr) gf←c0114)+62)/* var←c16896 */ ) = var←c16864; (void) XR←ExportProcS(var←c16864, (word) (( (bPt) gf←c0114)+172)/* var←c16096 */ , 67895299); (void) XR←ExportProcS(var←c16864, (word) (( (bPt) gf←c0114)+180)/* var←c16128 */ , 135528709); (void) XR←ExportProcS(var←c16864, (word) (( (bPt) gf←c0114)+156)/* var←c16032 */ , 67633666); (void) XR←ExportProcS(var←c16864, (word) (( (bPt) gf←c0114)+148)/* var←c16000 */ , 262913); (void) XR←ExportProcS(var←c16864, (word) (( (bPt) gf←c0114)+132)/* var←c15936 */ , 68420613); (void) XR←ExportProcS(var←c16864, (word) (( (bPt) gf←c0114)+124)/* var←c15904 */ , 263425); (void) XR←ExportProcS(var←c16864, (word) (( (bPt) gf←c0114)+116)/* var←c15872 */ , 67372545); } static void TEditLocksImpl←P0(formal←c037, formal←c035) word formal←c037; word formal←c035; { register ptr gf←c16928 = (ptr) &globalframe; /* TEditLocksImpl: */ SOURCE(476, 5684) SOURCE(802, 27) (* (( (ptr) gf←c16928)+6)/* lockRootViewer←v3028 */ ) = 1; SOURCE(831, 28) (* (( (ptr) gf←c16928)+7)/* lockSplitViewer←v3056 */ ) = 1; SOURCE(5540, 38) { word var←c16256; var←c16256 = XR←NewObject(68, (* (( (ptr) gf←c16928)+11) )); (* (W6Pt) (( (ptr) var←c16256)+11) ) = (* (W6Pt) (( (ptr) gf←c16928)+49)/* var←c16224 */ ); (* (( (ptr) gf←c16928)+8)/* privateLock←v3392 */ ) = var←c16256; }; SOURCE(6066, 94) { word pd24; pd24 = (* (( (ptr) (* (( (ptr) gf←c16928)+55)/* var←c16288 */ ))+21) ); (void) ( *( (fPt) ((* (ptr) pd24 ))))((* (( (ptr) gf←c16928)+22) ), (* (( (ptr) (* (( (ptr) gf←c16928)+55)/* var←c16288 */ ))+22) ), (* (( (ptr) (* (( (ptr) gf←c16928)+55)/* var←c16288 */ ))+23) ), (* (( (ptr) (* (( (ptr) gf←c16928)+55)/* var←c16288 */ ))+24) ), pd24); }; } static void LockBoth←P60(formal←c045, doc1←v3556, doc2←v3584, who←v3612, access1←v3640, access2←v3668) word formal←c045; word doc1←v3556; word doc2←v3584; word who←v3612; word access1←v3640; word access2←v3668; { register ptr gf←c16960 = (ptr) &globalframe; word lock1←v3712; word lock2←v3740; /* LockBoth: */ SOURCE(862, 398) SOURCE(862, 398) lock1←v3712 = 0; SOURCE(862, 398) lock2←v3740 = 0; SOURCE(997, 35) (* (( (ptr) gf←c16960)+4)/* locksBothCount←v2972 */ ) = ((* (( (ptr) gf←c16960)+4)/* locksBothCount←v2972 */ ) + 1); SOURCE(1034, 226) if ( ( (doc1←v3556 == doc2←v3584) ? (access1←v3640 == 1) : 0 ) || ( (doc1←v3556 != doc2←v3584) ? (0 != (word) LockOrder←P240( doc1←v3556, doc2←v3584)) : 0 ) ) { SOURCE(1117, 32) lock1←v3712 = (word) Lock←P120(doc1←v3556, who←v3612, access1←v3640); SOURCE(1151, 32) lock2←v3740 = (word) Lock←P120(doc2←v3584, who←v3612, access2←v3668); } else { SOURCE(1194, 32) lock2←v3740 = (word) Lock←P120(doc2←v3584, who←v3612, access2←v3668); SOURCE(1228, 32) lock1←v3712 = (word) Lock←P120(doc1←v3556, who←v3612, access1←v3640); }; /* removed tail goto */ (* (ptr) formal←c045 ) = lock1←v3712; (* (( (ptr) formal←c045)+1) ) = lock2←v3740; return; } static word Lock←P120(doc←v3800, who←v3828, access←v3856) word doc←v3800; word who←v3828; word access←v3856; { register ptr gf←c16992 = (ptr) &globalframe; word lock←v3900; /* Lock: */ SOURCE(1268, 860) SOURCE(1268, 860) lock←v3900 = 0; SOURCE(1374, 16) if ((doc←v3800 == 0)) { SOURCE(1390, 5) (void) XR←RaiseUnnamedError(); }; SOURCE(1397, 731) lab←L100003: ; SOURCE(1397, 731) { word v←v5072; word root←v5100; word localViewer←v5128 = 0; SOURCE(1400, 47) { word pd25; pd25 = (* (( (ptr) (* (( (ptr) gf←c16992)+56)/* var←c16320 */ ))+9) ); v←v5072 = (word) ( *( (fPt) ((* (ptr) pd25 ))))(doc←v3800, pd25); }; SOURCE(1449, 25) root←v5100 = (word) GetRoot←P600(v←v5072); SOURCE(1503, 40) { word var←c16352; word lock←v15760; SOURCE(5410, 126) lock←v15760 = 0; SOURCE(5494, 42) var←c16352 = (word) LockedGetLock←P720((* (( (ptr) gf←c16992)+8)/* privateLock←v3392 */ ), doc←v3800); lock←v3900 = var←c16352; }; if ((lock←v3900 == 0)) { SOURCE(1537, 6) return(lock←v3900); }; SOURCE(1545, 217) if ((root←v5100 != 0)) { SOURCE(1566, 61) if ( ( (0 != (* (( (ptr) gf←c16992)+6)/* lockRootViewer←v3028 */ )) ? ((* (( (ptr) root←v5100)+21) ) == 0) : 0 ) ) { SOURCE(1609, 18) localViewer←v5128 = root←v5100; }; SOURCE(1629, 62) if ( ( (0 != (* (( (ptr) gf←c16992)+7)/* lockSplitViewer←v3056 */ )) ? ((* (( (ptr) root←v5100)+21) ) != 0) : 0 ) ) { SOURCE(1673, 18) localViewer←v5128 = root←v5100; }; SOURCE(1693, 69) if ((localViewer←v5128 != 0)) { SOURCE(1719, 43) { word pd26; pd26 = (* (( (ptr) (* (( (ptr) gf←c16992)+57)/* var←c16416 */ ))+23) ); (void) ( *( (fPt) ((* (ptr) pd26 ))))(localViewer←v5128, pd26); }; }; }; SOURCE(1767, 284) if ((root←v5100 == (word) GetRoot←P600(v←v5072))) { SOURCE(1795, 256) { word pd27; pd27 = (* (( (ptr) (* (( (ptr) gf←c16992)+56)/* var←c16320 */ ))+9) ); if (((word) ( *( (fPt) ((* (ptr) pd27 ))))(doc←v3800, pd27) == v←v5072)) { SOURCE(1845, 30) (void) LockIt←P180(lock←v3900, who←v3828, access←v3856, doc←v3800); SOURCE(1877, 100) { word pd28; pd28 = (* (( (ptr) (* (( (ptr) gf←c16992)+56)/* var←c16320 */ ))+9) ); if (((word) ( *( (fPt) ((* (ptr) pd28 ))))(doc←v3800, pd28) == v←v5072)) { SOURCE(1927, 50) { word pd29; pd29 = (* (( (ptr) (* (( (ptr) gf←c16992)+55)/* var←c16288 */ ))+4) ); (void) ( *( (fPt) ((* (ptr) pd29 ))))(doc←v3800, (* (( (ptr) gf←c16992)+21) ), localViewer←v5128, pd29); }; SOURCE(1979, 4) goto lab←L100002; }; }; SOURCE(1988, 42) { word pd30; pd30 = (* (( (ptr) (* (( (ptr) gf←c16992)+55)/* var←c16288 */ ))+4) ); (void) ( *( (fPt) ((* (ptr) pd30 ))))(doc←v3800, (* (( (ptr) gf←c16992)+21) ), 0, pd30); }; SOURCE(2032, 19) (void) UnlockIt←P360(lock←v3900, doc←v3800); }; }; }; SOURCE(2059, 69) if ((localViewer←v5128 != 0)) { SOURCE(2085, 43) { word pd31; pd31 = (* (( (ptr) (* (( (ptr) gf←c16992)+57)/* var←c16416 */ ))+24) ); (void) ( *( (fPt) ((* (ptr) pd31 ))))(localViewer←v5128, pd31); }; }; }; goto lab←L100003; lab←L100002: ; SOURCE(1268, 860) return(lock←v3900); } static void LockIt←P180(formal←c0137, formal←c0138, formal←c0139, doc←v4044) word formal←c0137; word formal←c0138; word formal←c0139; word doc←v4044; { W7 var←c17024; /* declaration of lock←v3960 skipped */ /* declaration of who←v3988 skipped */ /* declaration of access←v4016 skipped */ var←c17024.f4/* lock←v3960 */ = formal←c0137; var←c17024.f5/* who←v3988 */ = formal←c0138; var←c17024.f6/* access←v4016 */ = formal←c0139; /* LockIt: */ SOURCE(2143, 684) (void) (XR←MonitorEntry(var←c17024.f4/* lock←v3960 */ )); SOURCE(2233, 594) { word var←c0128; var←c0128 = (word) &var←c17024; (void) (word) XR←Enable(( ((word) (fPt) NoName←Q1320) ), ( ((word) (fPt) NoName←Q1620) ), var←c0128); }; SOURCE(2143, 684) (void) (XR←MonitorExit(var←c17024.f4/* lock←v3960 */ )); return; } static word NoName←Q1320(formal←c0119) word formal←c0119; { register ptr gf←c0118 = (ptr) &globalframe; SOURCE(2256, 18) { W2 myProcess←v5172; SOURCE(2256, 18) (* (ptr) (word) &myProcess←v5172 ) = 0; (* (( (ptr) (word) &myProcess←v5172) + 1) ) = 0; SOURCE(2284, 43) SOURCE(2285, 42) { word pd32; pd32 = (* (( (ptr) (* (( (ptr) gf←c0118)+58)/* var←c16448 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd32 ))))((word) (&myProcess←v5172), pd32); }; SOURCE(2330, 354) if (((* (( (ptr) formal←c0119)+6) ) == 0)) { SOURCE(2352, 79) if ( ! XR←EqualWords((( (ptr) (* (( (ptr) formal←c0119)+4) ))+7), &myProcess←v5172, 2)) { SOURCE(2385, 46) lab←L100009: ; { W2 temp33; (* (ptr) &temp33 ) = 0; (* (( (ptr) &temp33) + 1) ) = 0; if ( ! XR←EqualWords((( (ptr) (* (( (ptr) formal←c0119)+4) ))+7), &temp33, 2)) { } else { goto lab←L100007; }; }; SOURCE(2413, 18) (void) (XR←Wait((* (( (ptr) formal←c0119)+4) ), (word) (( (bPt) (* (( (ptr) formal←c0119)+4) ))+44))); goto lab←L100009; lab←L100007: ; }; } else { SOURCE(2450, 234) if ( ! XR←EqualWords((( (ptr) (* (( (ptr) formal←c0119)+4) ))+7), &myProcess←v5172, 2)) { SOURCE(2485, 171) if (((* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+5) ) > 0)) { SOURCE(2510, 45) (* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+4) ) = ((* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+4) ) + 1); SOURCE(2557, 42) lab←L100012: ; if (((* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+5) ) > 0)) { } else { goto lab←L100010; }; SOURCE(2581, 18) (void) (XR←Wait((* (( (ptr) formal←c0119)+4) ), (word) (( (bPt) (* (( (ptr) formal←c0119)+4) ))+44))); goto lab←L100012; lab←L100010: ; SOURCE(2610, 46) (* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+4) ) = ((* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+4) ) - 1); }; SOURCE(2659, 25) (* (W2Pt) (( (ptr) (* (( (ptr) formal←c0119)+4) ))+7) ) = myProcess←v5172; }; }; SOURCE(2688, 64) if (((* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+5) ) == 0)) { SOURCE(2709, 25) (* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+10) ) = (* (( (ptr) formal←c0119)+5) ); } else { SOURCE(2734, 18) (* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+9) ) = (* (( (ptr) formal←c0119)+5) ); }; SOURCE(2754, 25) { word idx34; (* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+5) ) = ( idx34 = (word) ((* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+5) ) + 1), BCK(idx34, 256) ); }; SOURCE(2781, 46) { word x35; word x36; (* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+6) ) = (x35 = (* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+6) ), x36 = (* (( (ptr) (* (( (ptr) formal←c0119)+4) ))+5) ), MAX( (unsigned) , x35, x36)); }; }; return(0); } static word LockOrder←P240(doc1←v4104, doc2←v4132) word doc1←v4104; word doc2←v4132; { register ptr gf←c17056 = (ptr) &globalframe; word var←c4176; word v1←v5232; word v2←v5260; /* LockOrder: */ SOURCE(2833, 335) SOURCE(2902, 77) { word tc37; word pd38; if ((doc1←v4104 == 0)) { tc37 = (word) 0; } else { pd38 = (* (( (ptr) (* (( (ptr) gf←c17056)+56)/* var←c16320 */ ))+9) ); tc37 = (word) ( *( (fPt) ((* (ptr) pd38 ))))(doc1←v4104, pd38); }; v1←v5232 = tc37; }; SOURCE(2981, 77) { word tc39; word pd40; if ((doc2←v4132 == 0)) { tc39 = (word) 0; } else { pd40 = (* (( (ptr) (* (( (ptr) gf←c17056)+56)/* var←c16320 */ ))+9) ); tc39 = (word) ( *( (fPt) ((* (ptr) pd40 ))))(doc2←v4132, pd40); }; v2←v5260 = tc39; }; SOURCE(3060, 54) if ((v1←v5232 != v2←v5260)) { SOURCE(3076, 38) { word pd41; pd41 = (* (( (ptr) (* (( (ptr) gf←c17056)+59)/* var←c16512 */ ))+11) ); return((word) ( *( (fPt) ((* (ptr) pd41 ))))(v1←v5232, v2←v5260, pd41)); }; }; SOURCE(3116, 52) return(( (int)doc1←v4104 <= (int)doc2←v4132)); } static void Unlock←P300(doc←v4236) word doc←v4236; { register ptr gf←c17088 = (ptr) &globalframe; word lock←v5304 = 0; /* Unlock: */ SOURCE(3172, 143) SOURCE(3231, 16) if ((doc←v4236 == 0)) { SOURCE(3247, 5) (void) XR←RaiseUnnamedError(); }; SOURCE(3254, 40) { word var←c16544; word lock←v15712; SOURCE(5410, 126) lock←v15712 = 0; SOURCE(5494, 42) var←c16544 = (word) LockedGetLock←P720((* (( (ptr) gf←c17088)+8)/* privateLock←v3392 */ ), doc←v4236); lock←v5304 = var←c16544; }; if ((lock←v5304 == 0)) { SOURCE(3288, 6) return; }; SOURCE(3296, 19) (void) UnlockIt←P360(lock←v5304, doc←v4236); } static void UnlockIt←P360(formal←c0140, formal←c0141) word formal←c0140; word formal←c0141; { W6 var←c17120; /* declaration of lock←v4296 skipped */ /* declaration of doc←v4324 skipped */ var←c17120.f4/* lock←v4296 */ = formal←c0140; var←c17120.f5/* doc←v4324 */ = formal←c0141; /* UnlockIt: */ SOURCE(3321, 982) (void) (XR←MonitorEntry(var←c17120.f4/* lock←v4296 */ )); SOURCE(3381, 922) { word var←c01; { word var←c0129; var←c0129 = (word) &var←c17120; var←c01 = (word) XR←Enable(( ((word) (fPt) NoName←Q1380) ), ( ((word) (fPt) NoName←Q1560) ), var←c0129); }; if ((var←c01 == 1)) { goto lab←L03; }; }; SOURCE(3321, 982) (void) (XR←MonitorExit(var←c17120.f4/* lock←v4296 */ )); return; lab←L03: ; return; } static word NoName←Q1380(formal←c0123) word formal←c0123; { register ptr gf←c0122 = (ptr) &globalframe; SOURCE(3404, 57) { word v←v5348; W2 var←c073; word var←c16608; SOURCE(3404, 57) { word pd42; pd42 = (* (( (ptr) (* (( (ptr) gf←c0122)+55)/* var←c16288 */ ))+5) ); v←v5348 = XR←Narrow((word) ( *( (fPt) ((* (ptr) pd42 ))))((* (( (ptr) formal←c0123)+5) ), (* (( (ptr) gf←c0122)+21) ), pd42) , (* (( (ptr) gf←c0122)+19) )); }; SOURCE(3463, 23) if (((* (( (ptr) formal←c0123)+4) ) == 0)) { SOURCE(3480, 6) (void) (XR←MonitorExit(* (( (ptr) formal←c0123)+4) )); return(1); }; SOURCE(3488, 24) if (((* (( (ptr) (* (( (ptr) formal←c0123)+4) ))+5) ) <= 0)) { SOURCE(3512, 5) (void) XR←RaiseUnnamedError(); }; SOURCE(3527, 73) SOURCE(3528, 67) { word tc43; W2 temp44; (* (ptr) &temp44 ) = 0; (* (( (ptr) &temp44) + 1) ) = 0; if ( ! XR←EqualWords((( (ptr) (* (( (ptr) formal←c0123)+4) ))+7), &temp44, 2)) { { word pd45; pd45 = (* (( (ptr) (* (( (ptr) gf←c0122)+58)/* var←c16448 */ ))+12) ); (void) ( *( (fPt) ((* (ptr) pd45 ))))((word) (&var←c073), pd45); }; tc43 = (word) ! XR←EqualWords((( (ptr) (* (( (ptr) formal←c0123)+4) ))+7), &var←c073, 2); } else { tc43 = (word) 0; }; if (tc43) { SOURCE(3595, 5) (void) XR←RaiseUnnamedError(); }; }; { word idx46; var←c16608 = ( idx46 = (word) ((* (( (ptr) (* (( (ptr) formal←c0123)+4) ))+5) ) - 1), BCK(idx46, 256) ); }; (* (( (ptr) (* (( (ptr) formal←c0123)+4) ))+5) ) = var←c16608; if ((var←c16608 > 0)) { } else { { W2 temp47; (* (ptr) &temp47 ) = 0; (* (( (ptr) &temp47) + 1) ) = 0; if ( ! XR←EqualWords((( (ptr) (* (( (ptr) formal←c0123)+4) ))+7), &temp47, 2)) { SOURCE(3711, 404) { word viewer←v5392; SOURCE(3713, 66) { word pd48; pd48 = (* (( (ptr) (* (( (ptr) gf←c0122)+56)/* var←c16320 */ ))+9) ); viewer←v5392 = (word) ( *( (fPt) ((* (ptr) pd48 ))))((* ((( (ptr) formal←c0123)+5)) ), pd48); }; SOURCE(3781, 40) if ((viewer←v5392 != v←v5348)) { SOURCE(3800, 21) (* (( (ptr) gf←c0122)+5)/* dubious←v3000 */ ) = ((* (( (ptr) gf←c0122)+5)/* dubious←v3000 */ ) + 1); }; SOURCE(3823, 267) if ((viewer←v5392 != 0)) { SOURCE(3846, 177) { register word v←v5436; v←v5436 = viewer←v5392; lab←L100019: ; if ((v←v5436 != 0)) { } else { goto lab←L100016; }; SOURCE(3908, 80) { word var←c16640; var←c16640 = (* (( (ptr) v←v5436)+26) ); if ((var←c16640 == 0)) { /*1*/ goto lab←L100020; /*1*/ }; if (((* (( (ptr) gf←c0122)+20) ) == XR←GetReferentType(var←c16640))) { /*1*/ { /*1*/ word tdd←v5480; /*1*/ tdd←v5480 = var←c16640; SOURCE(3972, 16) /*1*/ (* (( (ptr) tdd←v5480)+9) ) = 1; /*1*/ }; /*1*/ } else { /*1*/ lab←L100020: ; /*1*/ }; }; SOURCE(3999, 24) if (((* (( (ptr) v←v5436)+21) ) == viewer←v5392)) { SOURCE(4023, 4) goto lab←L100017; }; v←v5436 = (* (( (ptr) v←v5436)+21) ); goto lab←L100019; lab←L100016: ; lab←L100017: ; }; SOURCE(4038, 52) { word pd49; pd49 = (* (( (ptr) (* (( (ptr) gf←c0122)+61)/* var←c16704 */ ))+7) ); (void) ( *( (fPt) ((* (ptr) pd49 ))))((* (( (ptr) formal←c0123)+5) ), (* (ptr) (* (( (ptr) (* (( (ptr) gf←c0122)+60)/* var←c16672 */ ))+4) ) ), pd49); }; }; SOURCE(4095, 18) { word tmpAddr50; tmpAddr50 = (word) (( (ptr) (* (( (ptr) formal←c0123)+4) ))+7); (* (ptr) tmpAddr50 ) = 0; (* (( (ptr) tmpAddr50) + 1) ) = 0; }; }; }; }; SOURCE(4127, 42) { word pd51; pd51 = (* (( (ptr) (* (( (ptr) gf←c0122)+55)/* var←c16288 */ ))+4) ); (void) ( *( (fPt) ((* (ptr) pd51 ))))((* (( (ptr) formal←c0123)+5) ), (* (( (ptr) gf←c0122)+21) ), 0, pd51); }; SOURCE(4171, 34) (* (( (ptr) (* (( (ptr) formal←c0123)+4) ))+9) ) = 0; (* (( (ptr) (* (( (ptr) formal←c0123)+4) ))+10) ) = 0; SOURCE(4207, 17) (* (( (ptr) (* (( (ptr) formal←c0123)+4) ))+6) ) = 0; SOURCE(4226, 23) (void) (XR←Broadcast((word) (( (bPt) (* (( (ptr) formal←c0123)+4) ))+44))); }; SOURCE(4254, 49) if ((v←v5348 != 0)) { SOURCE(4270, 33) { word pd52; pd52 = (* (( (ptr) (* (( (ptr) gf←c0122)+57)/* var←c16416 */ ))+24) ); (void) ( *( (fPt) ((* (ptr) pd52 ))))(v←v5348, pd52); }; }; }; return(0); } static word LockDocAndTdd←P420(tdd←v4384, who←v4412, access←v4440, interrupt←v4468, defer←v4496) word tdd←v4384; word who←v4412; word access←v4440; word interrupt←v4468; word defer←v4496; { register ptr gf←c17152 = (ptr) &globalframe; word lock←v4540; /* LockDocAndTdd: */ SOURCE(4309, 611) SOURCE(4309, 611) lock←v4540 = 0; SOURCE(4475, 88) { word pd53; pd53 = (* (( (ptr) (* (( (ptr) gf←c17152)+56)/* var←c16320 */ ))+5) ); if ((0 == (word) ( *( (fPt) ((* (ptr) pd53 ))))(tdd←v4384, (* (( (ptr) gf←c17152)+23) ), interrupt←v4468, defer←v4496, pd53) )) { SOURCE(4551, 12) return(0); }; }; SOURCE(4565, 355) lab←L100023: ; SOURCE(4565, 355) { word doc←v5524; SOURCE(4568, 28) doc←v5524 = (* (ptr) tdd←v4384 ); SOURCE(4598, 25) { word pd54; pd54 = (* (( (ptr) (* (( (ptr) gf←c17152)+56)/* var←c16320 */ ))+6) ); (void) ( *( (fPt) ((* (ptr) pd54 ))))(tdd←v4384, pd54); }; SOURCE(4677, 28) if ((doc←v5524 == 0)) { SOURCE(4693, 12) return(0); }; SOURCE(4707, 29) lock←v4540 = (word) Lock←P120(doc←v5524, who←v4412, access←v4440); SOURCE(4738, 112) { word pd55; pd55 = (* (( (ptr) (* (( (ptr) gf←c17152)+56)/* var←c16320 */ ))+5) ); if ((0 == (word) ( *( (fPt) ((* (ptr) pd55 ))))(tdd←v4384, (* (( (ptr) gf←c17152)+24) ), interrupt←v4468, defer←v4496, pd55) )) { SOURCE(4816, 19) (void) UnlockIt←P360(lock←v4540, doc←v5524); SOURCE(4837, 13) return(0); }; }; SOURCE(4853, 29) if (((* (ptr) tdd←v4384 ) == doc←v5524)) { SOURCE(4876, 6) return(lock←v4540); }; SOURCE(4901, 19) (void) UnlockIt←P360(lock←v4540, doc←v5524); }; goto lab←L100023; } static void UnlockDocAndTdd←P480(tdd←v4600) word tdd←v4600; { register ptr gf←c17184 = (ptr) &globalframe; /* UnlockDocAndTdd: */ SOURCE(4991, 136) SOURCE(5063, 37) if (((* (ptr) tdd←v4600 ) != 0)) { SOURCE(5084, 16) (void) Unlock←P300((* (ptr) (tdd←v4600) )); }; SOURCE(5102, 25) { word pd56; pd56 = (* (( (ptr) (* (( (ptr) gf←c17184)+56)/* var←c16320 */ ))+6) ); (void) ( *( (fPt) ((* (ptr) pd56 ))))(tdd←v4600, pd56); }; } static word WaitingForWrite←P540(lock←v4660) word lock←v4660; { word var←c4704; /* WaitingForWrite: */ SOURCE(5133, 97) SOURCE(5197, 33) return(( (int)(* (( (ptr) lock←v4660)+4) ) > (int)0)); } static word GetRoot←P600(viewer←v4764) word viewer←v4764; { word root←v4808; /* GetRoot: */ SOURCE(5236, 159) SOURCE(5236, 159) root←v4808 = 0; SOURCE(5294, 13) root←v4808 = viewer←v4764; SOURCE(5309, 86) if ((root←v4808 != 0)) { SOURCE(5328, 67) lab←L100026: ; SOURCE(5328, 67) { word next←v5568; SOURCE(5331, 26) next←v5568 = (* (( (ptr) root←v4808)+22) ); SOURCE(5359, 19) if ((next←v5568 == 0)) { SOURCE(5378, 4) goto lab←L100025; }; SOURCE(5384, 11) root←v4808 = next←v5568; }; goto lab←L100026; lab←L100025: ; }; SOURCE(5236, 159) return(root←v4808); } static word LockedGetLock←P720(formal←c0142, formal←c0143) word formal←c0142; word formal←c0143; { W7 var←c17216; /* declaration of lock←v4972 skipped */ /* declaration of root←v5000 skipped */ /* declaration of var←c02 skipped */ word var←c5044; var←c17216.f4/* lock←v4972 */ = formal←c0142; var←c17216.f5/* root←v5000 */ = formal←c0143; /* LockedGetLock: */ SOURCE(5665, 397) (void) (XR←MonitorEntry(var←c17216.f4/* lock←v4972 */ )); SOURCE(5749, 313) { word var←c03; { word var←c0130; var←c0130 = (word) &var←c17216; var←c03 = (word) XR←Enable(( ((word) (fPt) NoName←Q1440) ), ( ((word) (fPt) NoName←Q1500) ), var←c0130); }; /* removed trivial cond node */ }; return(var←c17216.f6/* var←c02 */ ); } static word NoName←Q1440(formal←c0127) word formal←c0127; { register ptr gf←c0126 = (ptr) &globalframe; SOURCE(5772, 31) if (((* (( (ptr) formal←c0127)+5) ) == 0)) { SOURCE(5791, 12) (void) (XR←MonitorExit(* (( (ptr) formal←c0127)+4) )); (* (( (ptr) formal←c0127)+6) ) = 0; return(1); }; SOURCE(5805, 41) if (((* (( (ptr) formal←c0127)+5) ) == (* (( (ptr) gf←c0126)+9)/* lastRoot←v3420 */ ))) { SOURCE(5829, 17) { word var←c16736; var←c16736 = (* (( (ptr) gf←c0126)+10)/* lastLock←v3448 */ ); (void) (XR←MonitorExit(* (( (ptr) formal←c0127)+4) )); (* (( (ptr) formal←c0127)+6) ) = var←c16736; return(1); }; }; SOURCE(5848, 15) (* (( (ptr) gf←c0126)+9)/* lastRoot←v3420 */ ) = (* (( (ptr) formal←c0127)+5) ); SOURCE(5865, 57) { word pd57; pd57 = (* (( (ptr) (* (( (ptr) gf←c0126)+55)/* var←c16288 */ ))+5) ); (* (( (ptr) gf←c0126)+10)/* lastLock←v3448 */ ) = XR←Narrow((word) ( *( (fPt) ((* (ptr) pd57 ))))((* (( (ptr) formal←c0127)+5) ), (* (( (ptr) gf←c0126)+22) ), pd57), (* (( (ptr) gf←c0126)+11) )); }; SOURCE(5924, 40) if (((* (( (ptr) gf←c0126)+10)/* lastLock←v3448 */ ) != 0)) { SOURCE(5947, 17) { word var←c16768; var←c16768 = (* (( (ptr) gf←c0126)+10)/* lastLock←v3448 */ ); (void) (XR←MonitorExit(* (( (ptr) formal←c0127)+4) )); (* (( (ptr) formal←c0127)+6) ) = var←c16768; return(1); }; }; SOURCE(5966, 26) { word var←c16800; var←c16800 = XR←NewObject(68, (* (( (ptr) gf←c0126)+11) )); (* (W6Pt) (( (ptr) var←c16800)+11) ) = (* (W6Pt) (( (ptr) gf←c0126)+49)/* var←c16224 */ ); (* (( (ptr) gf←c0126)+10)/* lastLock←v3448 */ ) = var←c16800; }; SOURCE(5994, 48) { word pd58; pd58 = (* (( (ptr) (* (( (ptr) gf←c0126)+55)/* var←c16288 */ ))+4) ); (void) ( *( (fPt) ((* (ptr) pd58 ))))((* (( (ptr) formal←c0127)+5) ), (* (( (ptr) gf←c0126)+22) ), (* (( (ptr) gf←c0126)+10) /* lastLock←v3448 */ ), pd58); }; SOURCE(6044, 18) { word var←c16832; var←c16832 = (* (( (ptr) gf←c0126)+10)/* lastLock←v3448 */ ); (void) (XR←MonitorExit(* (( (ptr) formal←c0127)+4) )); (* (( (ptr) formal←c0127)+6) ) = var←c16832; return(1); }; /* c2c skipped dead code */ } static void NoName←Q1500(formal←c0103, formal←c200008, formal←c200009, formal←c200010, formal←c200011) word formal←c0103; word formal←c200008; word formal←c200009; word formal←c200010; word formal←c200011; { if ((formal←c200009 == XR←Unwind)) { (void) (XR←MonitorExit(* (( (ptr) formal←c200008)+4) )); }; (* (ptr) formal←c0103 ) = 0; (* (( (ptr) formal←c0103)+1) ) = 0; return; } static void NoName←Q1560(formal←c0108, formal←c200004, formal←c200005, formal←c200006, formal←c200007) word formal←c0108; word formal←c200004; word formal←c200005; word formal←c200006; word formal←c200007; { if ((formal←c200005 == XR←Unwind)) { (void) (XR←MonitorExit(* (( (ptr) formal←c200004)+4) )); }; (* (ptr) formal←c0108 ) = 0; (* (( (ptr) formal←c0108)+1) ) = 0; return; } static void NoName←Q1620(formal←c0113, formal←c200000, formal←c200001, formal←c200002, formal←c200003) word formal←c0113; word formal←c200000; word formal←c200001; word formal←c200002; word formal←c200003; { if ((formal←c200001 == XR←Unwind)) { (void) (XR←MonitorExit(* (( (ptr) formal←c200000)+4) )); }; (* (ptr) formal←c0113 ) = 0; (* (( (ptr) formal←c0113)+1) ) = 0; return; } /* file: TEditLocksImpl, module: TEditLocksImpl, compiled at: February 27, 1992 5:56:15 pm PST */ extern void XR←install←TEditLocksImpl() { NoName←Q1260(); } extern void XR←run←TEditLocksImpl() { XR←Start(&globalframe); }