DIRECTORY BTree, BTreeSimple, BTreeVM, FS, Log USING [ WhereToReport ], Rope USING [ ROPE ], RefTab USING [ Ref ] ; ThNet: CEDAR DEFINITIONS = { PD: TYPE = RECORD [ debug: BOOLEAN, -- Diagnostic and progress display encryptionRequested: BOOLEAN, -- Encrypt RPC encryptVoice: BOOLEAN, -- Separate decision; false for debugging only, please! defaultLarkReports: BOOLEAN_FALSE, -- If TRUE and debug, Lark events reported SOMEwhere. autoGVUpdate: BOOLEAN_FALSE, ringsInvalid: BOOL_TRUE, -- set to cause recreation of standard ring tunes tonesVolume: CARDINAL _ 2, defaultRingVolume: CARDINAL _ 2, subduedVolumeInterval: CARDINAL_1, feepVolume: CARDINAL _ 0 ]; pd: REF PD; WPState: TYPE = REF WPStateRecord; WPStateRecord: TYPE = RECORD [ treeRootName: ROPE,-- File name for Tree, FTree, and Data files: extensions determine which wpTree: BTreeSimple.Tree, -- Tree: BTree to white pages, sorted by RName. wpFile: FS.OpenFile, -- open handle for file backing wpTree wpFeepTree: BTreeSimple.Tree, -- Tree: BTree to white pages, sorted by FeepName *. wpFeepFile: FS.OpenFile, -- open handle for file backing wpFeepTree wpDataVMFile: FS.OpenFile, -- File containing the actual white pages entries, wpDataVM: BTreeVM.Handle, -- indexed by entries in both BTrees. Uses BTreeVM to wpDataVMLen: INT_0, -- manage its pages wpDataVMValid: BOOL_TRUE, -- not sure what the value of this is any more. wpExtInt: RefTab.Ref, --Map from names in text-format input files to key ATOMs in tree accessOptions: FS.AccessOptions_$read, -- $read, $create, $write wpOpen: BOOL_FALSE -- TRUE when trees and all their files are ready for business. ]; ROPE: TYPE=Rope.ROPE; WPListing: TYPE = RefTab.Ref; -- a table of keys and values. Attrs: TYPE = MACHINE DEPENDENT { name(1), rName(2), officeNumber(3), officeDDDNumber(4), outsideNumber(5), officeAddress(6), officeLocation(7), organization(8), homeAddress(9), frequency(10), mailSystem(11), primaryKey(12), (15) }; WhitePagesLookup: PROC[ wpState: WPState, name: ROPE, feep: BOOL_FALSE ] RETURNS [ listing: WPListing ]; WhitePagesEntry: PROC[ wpState: WPState, name: ROPE_NIL, key: ATOM_$officeNumber, feep: BOOL_FALSE, listing: WPListing_NIL ] RETURNS [fullRName: ROPE, entry: ROPE, newListing: WPListing]; WhitePagesEnter: PROC[wpState: WPState, listing: WPListing]; WhitePagesPrint: PUBLIC SAFE PROC[wpState: WPState, listing: WPListing]; NewListing: PROC RETURNS [ThNet.WPListing]; List: PROC[listing: ThNet.WPListing, key: ATOM, value: Rope.ROPE]; InitWhitePagesDatabase: PUBLIC SAFE PROC[ fileName: ROPE_NIL, extIntMapName: ROPE_NIL, accessOptions: FS.AccessOptions _ $read, howToComplain: Log.WhereToReport_$System] RETURNS[wpState: WPState_NIL]; CloseWhitePagesDatabase: PUBLIC SAFE PROC[ wpState: WPState, howToComplain: Log.WhereToReport_$System] RETURNS[ok: BOOL_TRUE]; PhoneMap: TYPE = LIST OF PhoneMapEntry; PhoneMapEntry: TYPE = RECORD [ pattern: ROPE, replacement: ROPE ]; HowToDial: PROC[phoneNumber: ROPE, ownExtension: ROPE_NIL] RETURNS [whatToDial: ROPE, isLocalExtension: BOOLEAN]; FeepName: PROC[rName: ROPE] RETURNS [feepName: ROPE]; }. ÜThNet.mesa Last modified by D. Swinehart, February 8, 1985 10:57:26 am PST Ephemeral and Persistent data base services for Thrush Thrush-wide system control parameters. Otherwise, only reported if LarkControl window up for this Lark and debug=TRUE Default values for ringing -- too device-dependent, but life is hard. Types * FeepName is the numeric string resulting from spelling out the RName on a DTMF pad: "Q" is presumed to live between "P" and "R" on the "7" key. "Z" is presumed to live after "Y" on the "9" key. All punctuation, digits, non-alphabetic keys are mapped to "1". WhitePages These functions provide access to Swinehart's cobby old BTree-based "White Pages" database. This one is assumed to be keyed and sorted by RName. They are at present only called by the RName diddling code; see same for usage. name must be in form rr.xxxxxxx Returns first listing for which name is a substring, case unimportant, of the listing Put in something new, or replace something old. This and the following provide a way to build database entries. Include an enumerator here, if anybody ends up wanting it outside the implementation. NIL for fileName or extIntMapName defaults to User Profile values Telephone number interpretation Êa˜Jšœ ™ Jšœ?™?J˜Jšœ6™6J˜šÏk ˜ J˜J˜ J˜J˜Jšœœ˜Jšœœœ˜Jšœœ˜J˜J˜—Jšœœ˜J˜Jšœ&™&J˜šœœœ˜JšœœÏc"˜2Jšœœž˜,Jšœœž7˜Nšœœœž5˜XJšœJ™N—Jšœœ˜J™EJšœœœž1˜JJšœ œ˜Jšœœ˜ Jšœœ˜"Jšœ œ˜J˜—šœœœ˜ J˜—™J˜Jšœ œœ˜"šœœœ˜JšœœžH˜[J˜Jšœž/˜IJšœœ ž&˜;J˜Jšœž4˜RJšœ œ ž*˜CJ˜Jšœœ ž2˜MJšœž6˜PJšœ œž˜'Jšœœœž/˜IJ˜Jšœž@˜VJšœœž˜@Jšœœœž>˜QJ˜J™ƒJ˜—Jšœœœ˜Jšœ œž˜J˜J˜—J˜—™ J™JšœQ™QJšœ?™?JšœO™OJ˜š Ïnœœœœœœ˜hJšœ™J™U—J™šŸœœ˜Jšœœœœ˜:Jšœœœ˜(Jšœœ œ œ˜@—J˜šŸœœ'˜