<> <> <> DIRECTORY NSString USING [String], Rope USING [ROPE]; XMessage: CEDAR DEFINITIONS = BEGIN <> ROPE: TYPE ~ Rope.ROPE; ClientData: TYPE = REF; DestroyMsgsProc: TYPE = PROCEDURE [clientData: ClientData]; Handle: TYPE = REF Object; Object: TYPE; MsgID: TYPE = CARDINAL; MsgKey: TYPE = CARDINAL; MsgKeyList: TYPE = RECORD [ data: SEQUENCE length: CARDINAL OF MsgKey]; StringArray: TYPE = RECORD [ data: SEQUENCE length: CARDINAL OF NSString.String]; Messages: TYPE = RECORD [ data: SEQUENCE length: CARDINAL OF MsgEntry]; MsgEntry: TYPE = RECORD [ msgKey: MsgKey, -- runtime mesage access handle msg: NSString.String, -- message body translationNote: NSString.String _ NIL, -- special instructions to the translators translatable: BOOLEAN _ TRUE, -- IF FALSE do not translate type: MsgType _ userMsg, -- assertion as to who the client is id: MsgID]; -- unique handle for the life time of message MsgType: TYPE = {userMsg, template, argList, menuItem, pSheetItem, commandItem, errorMsg, infoMsg, promptItem, windowMenuCommand, others}; Error: ERROR [type: ErrorType]; ErrorType: TYPE = {arrayMismatch, invalidMsgKeyList, invalidStringArray, invalidString, notEnoughArguments}; <> Get: PROCEDURE [h: Handle, msgKey: MsgKey] RETURNS [msg: NSString.String]; <> GetList: PROCEDURE [h: Handle, msgKeys: REF MsgKeyList, msgs: REF StringArray]; <> <> Compose: PROCEDURE [source: NSString.String, args: REF StringArray] RETURNS [NSString.String]; <> ComposeOne: PROCEDURE [source: NSString.String, arg: NSString.String] RETURNS [NSString.String]; < field should be filled in".>> Decompose: PROCEDURE [source: NSString.String] RETURNS [args: REF StringArray]; <> <> AllocateMessages: PROCEDURE [applicationName: NSString.String, maxMessages: CARDINAL, clientData: ClientData, proc: DestroyMsgsProc] RETURNS [h: Handle]; <> DestroyMessages:PROCEDURE [h: Handle]; <> RegisterMessages: PROCEDURE [h: Handle, messages: REF Messages, stringBodiesAreReal: BOOL]; <> <> MessagesFromFile: PROCEDURE [fileName: ROPE, clientData: ClientData, proc: DestroyMsgsProc] RETURNS [msgDomains: REF MsgDomains]; <> MsgDomains: TYPE = RECORD [ data: SEQUENCE length: CARDINAL OF MsgDomain]; MsgDomain: TYPE = RECORD [applicationName: NSString.String, handle: Handle]; FreeMsgDomainsStorage: PROCEDURE [msgDomains: REF MsgDomains]; MessagesFromReference: PROCEDURE [file: ROPE, clientData: ClientData, proc: DestroyMsgsProc] RETURNS [msgDomains: REF MsgDomains]; <> END. -- of Message