-- ThreeC4BasicAbTypes.ThreeC4
-- Sturgis, May 8, 1986 10:06:12 am PDT

Include[ThreeC4BaseDecl, ThreeC4RecFcnDecl];

ThreeC4BasicAbTypes: Module =
Begin



-- Here are the abstract types that are visible in more than one place

WholeFile: AbstractType[FormFileSeq, CollectValueTypes, CollectFunctionTypes,
    CollectRightSideSymbols, FormLinkCallCode, SyntaxFileCodes];

ModuleItem: AbstractType[CollectModuleValueTypes, CollectModuleFunctionTypes,
    CollectProductions, CollectRightSideSymbols, DefFileCode, ImplFileCode,
    LinkFileCode, SyntaxFileCodes, TestLinkPresent];

CedarItems: AbstractType[CollectModuleValueTypes, CollectModuleFunctionTypes];

BaseItems: AbstractType[CollectModuleValueTypes, CollectModuleFunctionTypes,
    DefFileCode, ImplFileCode];

AbGramItems: AbstractType[CollectModuleValueTypes, CollectModuleFunctionTypes,
    DefFileCode, ImplFileCode];

CGramItems: AbstractType[CollectProductions, CollectRightSideSymbols, DefFileCode,
    ImplFileCode, LinkFileCode, SyntaxFileCodes,
    TestLinkPresent];

AbProductionFcnImpl: AbstractType[ImplFileCode];

ConcreteProduction: AbstractType[CollectProductions, ImplFileCode, LinkFileCode,
    SyntaxFileCodes];


IdList: AbstractType[RecordCedarTypesFrom, RecordCedarTypes, RecordMultipleBaseTypes,
   FormTypeListEarly, FormNameList, CollectValueTypes, CollectFunctionTypes,
   CollectRightSideSymbols, BaseDeclCode, FormTypesCode, ProcFieldTypeCode,
   FormProcsNamesCode, FormRecFcnsDeclCode, FormVarDeclCode, FormLinkCallCode,
   SyntaxFileCodes];

ModId: AbstractType[FormName, FormFirstId, FormType, FormValueInfo, FormExpCode, FormTypeUse, FormTypeEarly];

ModIdList: AbstractType[FormNameList, FormAbstRightSideContext, FormTypeUse,
   FormTypeListEarly, FormTypeList, ProdDataTypeDefCode, DataBodyFieldTypeCode,
   ProdBuildDataRcdCode, FormTypesCode];

RopeList: AbstractType[CollectRightSideSymbols, SyntaxFileCodes,
        SpecialSyntaxTokenFileCode];
        

DamageShareAssertions: AbstractType[FormRecordOfDamageShareAssertion];
        

-- following base functions require WholeFile

FindOrReadAndParseTree: BaseFunction[Context.arg, Name] Returns[Context.result, WholeFile]
 DamagedReps[Context.arg];

FindParseTree: BaseFunction[Context, Name] Returns[WholeFile];

LookUpParseTree: BaseFunction[LookupContext, Name] Returns[WholeFile];

-- following base functions require IdList

RecordAbstractType: BaseFunction[Context.arg, Name, ROPE, MesaCode, IdList, NameList] Returns[Context.result]
  DamagedReps[Context.arg];

LookUpAbTypeRecFcnsIdList: BaseFunction[LookupContext, Name] Returns[IdList]


End.