-- BcdOps.Mesa  Edited by Sandman on June 30, 1980  4:46 PM
-- Copyright  Xerox Corporation 1979, 1980

DIRECTORY
  BcdDefs USING [
    BCD, CTIndex, CTRecord, EVIndex, EVRecord, EXPIndex, EXPRecord, FPRecord,
    FTIndex, FTRecord, IMPIndex, IMPRecord, MTIndex, MTRecord, Namee, NameRecord,
    NTIndex, NTRecord, PackedString, SGIndex, SGRecord, SPIndex, SPRecord,
    TMRecord, TYPRecord, VersionStamp];

BcdOps: DEFINITIONS =
  BEGIN OPEN BcdDefs;

  BcdBase: TYPE = POINTER TO BcdDefs.BCD;

  NTHandle: TYPE = POINTER TO BcdDefs.NTRecord;
  CTHandle: TYPE = POINTER TO BcdDefs.CTRecord;
  MTHandle: TYPE = POINTER TO BcdDefs.MTRecord;
  IMPHandle: TYPE = POINTER TO BcdDefs.IMPRecord;
  EXPHandle: TYPE = POINTER TO BcdDefs.EXPRecord;
  EVHandle: TYPE = POINTER TO BcdDefs.EVRecord;
  SGHandle: TYPE = POINTER TO BcdDefs.SGRecord;
  FTHandle: TYPE = POINTER TO BcdDefs.FTRecord;
  SPHandle: TYPE = POINTER TO BcdDefs.SPRecord;
  FPHandle: TYPE = POINTER TO BcdDefs.FPRecord;
  TYPHandle: TYPE = POINTER TO BcdDefs.TYPRecord;
  TMHandle: TYPE = POINTER TO BcdDefs.TMRecord;

  NameString: TYPE = POINTER TO PackedString;

  ProcessConfigs: PROCEDURE [
    bcd: BcdBase, proc: PROCEDURE [CTHandle, CTIndex] RETURNS [BOOLEAN]]
    RETURNS [cth: CTHandle, cti: CTIndex];

  ProcessExternals: PROCEDURE [
    bcd: BcdBase, proc: PROCEDURE [EVHandle, EVIndex] RETURNS [BOOLEAN]]
    RETURNS [evh: EVHandle, evi: EVIndex];

  ProcessExports: PROCEDURE [
    bcd: BcdBase, proc: PROCEDURE [EXPHandle, EXPIndex] RETURNS [BOOLEAN]]
    RETURNS [eth: EXPHandle, eti: EXPIndex];

  ProcessFiles: PROCEDURE [
    bcd: BcdBase, proc: PROCEDURE [FTHandle, FTIndex] RETURNS [BOOLEAN]]
    RETURNS [fth: FTHandle, fti: FTIndex];

  ProcessImports: PROCEDURE [
    bcd: BcdBase, proc: PROCEDURE [IMPHandle, IMPIndex] RETURNS [BOOLEAN]]
    RETURNS [ith: IMPHandle, iti: IMPIndex];

  ProcessModules: PROCEDURE [
    bcd: BcdBase, proc: PROCEDURE [MTHandle, MTIndex] RETURNS [BOOLEAN]]
    RETURNS [mth: MTHandle, mti: MTIndex];

  ProcessNames: PROCEDURE [
    bcd: BcdBase, proc: PROCEDURE [NTHandle, NTIndex] RETURNS [BOOLEAN]]
    RETURNS [nth: NTHandle, nti: NTIndex];

  ProcessSegs: PROCEDURE [
    bcd: BcdBase, proc: PROCEDURE [SGHandle, SGIndex] RETURNS [BOOLEAN]]
    RETURNS [sgh: SGHandle, sgi: SGIndex];

  ProcessSpaces: PROCEDURE [
    bcd: BcdBase, proc: PROCEDURE [SPHandle, SPIndex] RETURNS [BOOLEAN]]
    RETURNS [sph: SPHandle, spi: SPIndex];

  FindName: PROCEDURE [bcd: BcdBase, owner: Namee] RETURNS [name: NameRecord];

  ModuleVersion: PROCEDURE [bcd: BcdBase, mti: MTIndex]
    RETURNS [version: VersionStamp];

  END.