DIRECTORY
	ThreeC4BaseDecl1Def,
	ThreeC4BasicAbTypesDef,
	ThreeC4OtherModItemsAbGramDef;

ThreeC4OtherModItemsAbGramImpl: CEDAR PROGRAM IMPORTS ThreeC4OtherModItemsAbGramDef EXPORTS ThreeC4OtherModItemsAbGramDef= 
BEGIN
OPEN ThreeC4BaseDecl1Def, ThreeC4BasicAbTypesDef, ThreeC4OtherModItemsAbGramDef;

-- BaseItemsbaseTypesProd

BaseItemsbaseTypesProdProcs: PUBLIC BaseItemsNodeProcs ←
	NEW[BaseItemsNodeProcsBody ← [BaseItemsbaseTypesProdCollectModuleValueTypes, BaseItemsbaseTypesProdCollectModuleFunctionTypes, BaseItemsbaseTypesProdDefFileCode, BaseItemsbaseTypesProdImplFileCode]];

BuildBaseItemsbaseTypesProdNode: PUBLIC PROC[position: INT, length: INT, IdList: IdListNode]
	RETURNS[BaseItemsNode] =
		BEGIN
		data: BaseItemsbaseTypesProdData ←
			NEW[BaseItemsbaseTypesProdDataBody←[
			IdList]];
		RETURN[NEW[BaseItemsNodeBody←[position, length, BaseItemsbaseTypesProdProcs, data]]];
		END;


-- BaseItemsenumBaseTypeProd

BaseItemsenumBaseTypeProdProcs: PUBLIC BaseItemsNodeProcs ←
	NEW[BaseItemsNodeProcsBody ← [BaseItemsenumBaseTypeProdCollectModuleValueTypes, BaseItemsenumBaseTypeProdCollectModuleFunctionTypes, BaseItemsenumBaseTypeProdDefFileCode, BaseItemsenumBaseTypeProdImplFileCode]];

BuildBaseItemsenumBaseTypeProdNode: PUBLIC PROC[position: INT, length: INT, Identifier: IdentifierNode, IdList: IdListNode]
	RETURNS[BaseItemsNode] =
		BEGIN
		data: BaseItemsenumBaseTypeProdData ←
			NEW[BaseItemsenumBaseTypeProdDataBody←[
			Identifier, IdList]];
		RETURN[NEW[BaseItemsNodeBody←[position, length, BaseItemsenumBaseTypeProdProcs, data]]];
		END;


-- BaseItemsbaseFcnProd

BaseItemsbaseFcnProdProcs: PUBLIC BaseItemsNodeProcs ←
	NEW[BaseItemsNodeProcsBody ← [BaseItemsbaseFcnProdCollectModuleValueTypes, BaseItemsbaseFcnProdCollectModuleFunctionTypes, BaseItemsbaseFcnProdDefFileCode, BaseItemsbaseFcnProdImplFileCode]];

BuildBaseItemsbaseFcnProdNode: PUBLIC PROC[position: INT, length: INT, Identifier: IdentifierNode, ModIdListargs: ModIdListNode, ModIdListresults: ModIdListNode, DamageShareAssertions: DamageShareAssertionsNode]
	RETURNS[BaseItemsNode] =
		BEGIN
		data: BaseItemsbaseFcnProdData ←
			NEW[BaseItemsbaseFcnProdDataBody←[
			Identifier, ModIdListargs, ModIdListresults, DamageShareAssertions]];
		RETURN[NEW[BaseItemsNodeBody←[position, length, BaseItemsbaseFcnProdProcs, data]]];
		END;


-- BaseItemstreeRecFcnProd

BaseItemstreeRecFcnProdProcs: PUBLIC BaseItemsNodeProcs ←
	NEW[BaseItemsNodeProcsBody ← [BaseItemstreeRecFcnProdCollectModuleValueTypes, BaseItemstreeRecFcnProdCollectModuleFunctionTypes, BaseItemstreeRecFcnProdDefFileCode, BaseItemstreeRecFcnProdImplFileCode]];

BuildBaseItemstreeRecFcnProdNode: PUBLIC PROC[position: INT, length: INT, Identifier: IdentifierNode, ModIdListargs: ModIdListNode, ModIdListresults: ModIdListNode, DamageShareAssertions: DamageShareAssertionsNode]
	RETURNS[BaseItemsNode] =
		BEGIN
		data: BaseItemstreeRecFcnProdData ←
			NEW[BaseItemstreeRecFcnProdDataBody←[
			Identifier, ModIdListargs, ModIdListresults, DamageShareAssertions]];
		RETURN[NEW[BaseItemsNodeBody←[position, length, BaseItemstreeRecFcnProdProcs, data]]];
		END;


-- AbGramItemsabTypeProd

AbGramItemsabTypeProdProcs: PUBLIC AbGramItemsNodeProcs ←
	NEW[AbGramItemsNodeProcsBody ← [AbGramItemsabTypeProdCollectModuleValueTypes, AbGramItemsabTypeProdCollectModuleFunctionTypes, AbGramItemsabTypeProdDefFileCode, AbGramItemsabTypeProdImplFileCode]];

BuildAbGramItemsabTypeProdNode: PUBLIC PROC[position: INT, length: INT, Identifier: IdentifierNode, IdList: IdListNode]
	RETURNS[AbGramItemsNode] =
		BEGIN
		data: AbGramItemsabTypeProdData ←
			NEW[AbGramItemsabTypeProdDataBody←[
			Identifier, IdList]];
		RETURN[NEW[AbGramItemsNodeBody←[position, length, AbGramItemsabTypeProdProcs, data]]];
		END;


-- AbGramItemsabProdProd

AbGramItemsabProdProdProcs: PUBLIC AbGramItemsNodeProcs ←
	NEW[AbGramItemsNodeProcsBody ← [AbGramItemsabProdProdCollectModuleValueTypes, AbGramItemsabProdProdCollectModuleFunctionTypes, AbGramItemsabProdProdDefFileCode, AbGramItemsabProdProdImplFileCode]];

BuildAbGramItemsabProdProdNode: PUBLIC PROC[position: INT, length: INT, ModId: ModIdNode, ModIdList: ModIdListNode]
	RETURNS[AbGramItemsNode] =
		BEGIN
		data: AbGramItemsabProdProdData ←
			NEW[AbGramItemsabProdProdDataBody←[
			ModId, ModIdList]];
		RETURN[NEW[AbGramItemsNodeBody←[position, length, AbGramItemsabProdProdProcs, data]]];
		END;


-- AbGramItemsabProdFcnImplProd

AbGramItemsabProdFcnImplProdProcs: PUBLIC AbGramItemsNodeProcs ←
	NEW[AbGramItemsNodeProcsBody ← [AbGramItemsabProdFcnImplProdCollectModuleValueTypes, AbGramItemsabProdFcnImplProdCollectModuleFunctionTypes, AbGramItemsabProdFcnImplProdDefFileCode, AbGramItemsabProdFcnImplProdImplFileCode]];

BuildAbGramItemsabProdFcnImplProdNode: PUBLIC PROC[position: INT, length: INT, AbProductionFcnImpl: AbProductionFcnImplNode]
	RETURNS[AbGramItemsNode] =
		BEGIN
		data: AbGramItemsabProdFcnImplProdData ←
			NEW[AbGramItemsabProdFcnImplProdDataBody←[
			AbProductionFcnImpl]];
		RETURN[NEW[AbGramItemsNodeBody←[position, length, AbGramItemsabProdFcnImplProdProcs, data]]];
		END;

END..