-- TiogaJaMImpl.Mesa
-- written by Paxton.  February 1981
-- last written by Paxton. 3-Jun-81 13:58:52


DIRECTORY
TiogaJaM,
TextNode,
JaMOtherDefs;

TiogaJaMImpl: PROGRAM
	IMPORTS JaMOtherDefs, TiogaJaM
	EXPORTS TiogaJaM =
BEGIN OPEN TiogaJaM, nodeI:TextNode, JaM:JaMOtherDefs;

TextOverflow: PUBLIC ERROR = CODE;

jam: BOOLEAN = FALSE; -- true if we are running with JaM

MakeTypeName: PUBLIC PROC [name: REF TEXT] RETURNS [nodeI.TypeName]
	= { RETURN [IF jam THEN JaMToType[CreateName[name]] ELSE nodeI.nullTypeName] };

MakeStyleName: PUBLIC PROC [name: REF TEXT] RETURNS [nodeI.StyleName]
	= { RETURN [IF jam THEN JaMToStyle[CreateName[name]] ELSE nodeI.nullStyleName] };

TextForTypeName: PUBLIC PROC [name: nodeI.TypeName, txt: REF TEXT]
	= { IF jam THEN JaM.TextForName[JaMText[txt], TypeToJaM[name] ! JaM.TextOverflow =>
						 ERROR TextOverflow]
		ELSE txt.length ← 0 };

TextForStyleName: PUBLIC PROC [name: nodeI.StyleName, txt: REF TEXT]
	= { IF jam THEN JaM.TextForName[JaMText[txt], StyleToJaM[name] ! JaM.TextOverflow =>
						ERROR TextOverflow]
		ELSE txt.length ← 0 };

MakeName: PUBLIC PROC [name: REF TEXT] RETURNS [JaMName]
	= { RETURN [IF jam THEN CreateName[name] ELSE noName] };

TextForName: PUBLIC PROC [name: JaMName, txt: REF TEXT]
	= { IF jam THEN JaM.TextForName[JaMText[txt], LOOPHOLE[name] ! JaM.TextOverflow =>
						ERROR TextOverflow]
		ELSE txt.length ← 0 };

JaMText: PROC [txt: REF TEXT] RETURNS [JaM.Text] = INLINE { RETURN [LOOPHOLE[txt]] };

CreateName: PROC [name: REF TEXT] RETURNS [JaMName] = INLINE {
	RETURN [IF name=NIL OR name.length=0 THEN noName
		ELSE JaM.CreateName[LOOPHOLE[name]]] };

-- ***** Initialization

Start: PUBLIC PROC = {
	};

END.