DIRECTORY
	ThreeC4BaseDecl1Def,
	ThreeC4RecFcnDeclDef,
	ThreeC4BasicAbTypesDef;

ThreeC4OtherModItemsAbGramDef: CEDAR DEFINITIONS = 
BEGIN
OPEN ThreeC4BaseDecl1Def, ThreeC4RecFcnDeclDef, ThreeC4BasicAbTypesDef;

-- BaseItemsbaseTypesProd

BaseItemsbaseTypesProdData: TYPE = REF BaseItemsbaseTypesProdDataBody;
BaseItemsbaseTypesProdDataBody: TYPE = RECORD[
IdList: IdListNode];

BaseItemsbaseTypesProdProcs: BaseItemsNodeProcs;

BuildBaseItemsbaseTypesProdNode: PROC[position: INT, length: INT, IdList: IdListNode]
	RETURNS[BaseItemsNode];

BaseItemsbaseTypesProdCollectModuleValueTypes: CollectModuleValueTypesProcType;
BaseItemsbaseTypesProdCollectModuleFunctionTypes: CollectModuleFunctionTypesProcType;
BaseItemsbaseTypesProdDefFileCode: DefFileCodeProcType;
BaseItemsbaseTypesProdImplFileCode: ImplFileCodeProcType;

-- BaseItemsenumBaseTypeProd

BaseItemsenumBaseTypeProdData: TYPE = REF BaseItemsenumBaseTypeProdDataBody;
BaseItemsenumBaseTypeProdDataBody: TYPE = RECORD[
Identifier: IdentifierNode, IdList: IdListNode];

BaseItemsenumBaseTypeProdProcs: BaseItemsNodeProcs;

BuildBaseItemsenumBaseTypeProdNode: PROC[position: INT, length: INT, Identifier: IdentifierNode, IdList: IdListNode]
	RETURNS[BaseItemsNode];

BaseItemsenumBaseTypeProdCollectModuleValueTypes: CollectModuleValueTypesProcType;
BaseItemsenumBaseTypeProdCollectModuleFunctionTypes: CollectModuleFunctionTypesProcType;
BaseItemsenumBaseTypeProdDefFileCode: DefFileCodeProcType;
BaseItemsenumBaseTypeProdImplFileCode: ImplFileCodeProcType;

-- BaseItemsbaseFcnProd

BaseItemsbaseFcnProdData: TYPE = REF BaseItemsbaseFcnProdDataBody;
BaseItemsbaseFcnProdDataBody: TYPE = RECORD[
Identifier: IdentifierNode, ModIdListargs: ModIdListNode, ModIdListresults: ModIdListNode, DamageShareAssertions: DamageShareAssertionsNode];

BaseItemsbaseFcnProdProcs: BaseItemsNodeProcs;

BuildBaseItemsbaseFcnProdNode: PROC[position: INT, length: INT, Identifier: IdentifierNode, ModIdListargs: ModIdListNode, ModIdListresults: ModIdListNode, DamageShareAssertions: DamageShareAssertionsNode]
	RETURNS[BaseItemsNode];

BaseItemsbaseFcnProdCollectModuleValueTypes: CollectModuleValueTypesProcType;
BaseItemsbaseFcnProdCollectModuleFunctionTypes: CollectModuleFunctionTypesProcType;
BaseItemsbaseFcnProdDefFileCode: DefFileCodeProcType;
BaseItemsbaseFcnProdImplFileCode: ImplFileCodeProcType;

-- BaseItemstreeRecFcnProd

BaseItemstreeRecFcnProdData: TYPE = REF BaseItemstreeRecFcnProdDataBody;
BaseItemstreeRecFcnProdDataBody: TYPE = RECORD[
Identifier: IdentifierNode, ModIdListargs: ModIdListNode, ModIdListresults: ModIdListNode, DamageShareAssertions: DamageShareAssertionsNode];

BaseItemstreeRecFcnProdProcs: BaseItemsNodeProcs;

BuildBaseItemstreeRecFcnProdNode: PROC[position: INT, length: INT, Identifier: IdentifierNode, ModIdListargs: ModIdListNode, ModIdListresults: ModIdListNode, DamageShareAssertions: DamageShareAssertionsNode]
	RETURNS[BaseItemsNode];

BaseItemstreeRecFcnProdCollectModuleValueTypes: CollectModuleValueTypesProcType;
BaseItemstreeRecFcnProdCollectModuleFunctionTypes: CollectModuleFunctionTypesProcType;
BaseItemstreeRecFcnProdDefFileCode: DefFileCodeProcType;
BaseItemstreeRecFcnProdImplFileCode: ImplFileCodeProcType;

-- AbGramItemsabTypeProd

AbGramItemsabTypeProdData: TYPE = REF AbGramItemsabTypeProdDataBody;
AbGramItemsabTypeProdDataBody: TYPE = RECORD[
Identifier: IdentifierNode, IdList: IdListNode];

AbGramItemsabTypeProdProcs: AbGramItemsNodeProcs;

BuildAbGramItemsabTypeProdNode: PROC[position: INT, length: INT, Identifier: IdentifierNode, IdList: IdListNode]
	RETURNS[AbGramItemsNode];

AbGramItemsabTypeProdCollectModuleValueTypes: CollectModuleValueTypesProcType;
AbGramItemsabTypeProdCollectModuleFunctionTypes: CollectModuleFunctionTypesProcType;
AbGramItemsabTypeProdDefFileCode: DefFileCodeProcType;
AbGramItemsabTypeProdImplFileCode: ImplFileCodeProcType;

-- AbGramItemsabProdProd

AbGramItemsabProdProdData: TYPE = REF AbGramItemsabProdProdDataBody;
AbGramItemsabProdProdDataBody: TYPE = RECORD[
ModId: ModIdNode, ModIdList: ModIdListNode];

AbGramItemsabProdProdProcs: AbGramItemsNodeProcs;

BuildAbGramItemsabProdProdNode: PROC[position: INT, length: INT, ModId: ModIdNode, ModIdList: ModIdListNode]
	RETURNS[AbGramItemsNode];

AbGramItemsabProdProdCollectModuleValueTypes: CollectModuleValueTypesProcType;
AbGramItemsabProdProdCollectModuleFunctionTypes: CollectModuleFunctionTypesProcType;
AbGramItemsabProdProdDefFileCode: DefFileCodeProcType;
AbGramItemsabProdProdImplFileCode: ImplFileCodeProcType;

-- AbGramItemsabProdFcnImplProd

AbGramItemsabProdFcnImplProdData: TYPE = REF AbGramItemsabProdFcnImplProdDataBody;
AbGramItemsabProdFcnImplProdDataBody: TYPE = RECORD[
AbProductionFcnImpl: AbProductionFcnImplNode];

AbGramItemsabProdFcnImplProdProcs: AbGramItemsNodeProcs;

BuildAbGramItemsabProdFcnImplProdNode: PROC[position: INT, length: INT, AbProductionFcnImpl: AbProductionFcnImplNode]
	RETURNS[AbGramItemsNode];

AbGramItemsabProdFcnImplProdCollectModuleValueTypes: CollectModuleValueTypesProcType;
AbGramItemsabProdFcnImplProdCollectModuleFunctionTypes: CollectModuleFunctionTypesProcType;
AbGramItemsabProdFcnImplProdDefFileCode: DefFileCodeProcType;
AbGramItemsabProdFcnImplProdImplFileCode: ImplFileCodeProcType;
END..