-- file BcdOps.mesa
-- last edited by Satterthwaite on 25-Mar-82 16:56:47

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

BcdOps: DEFINITIONS = {
  OPEN BcdDefs;

  BcdBase: TYPE = LONG POINTER TO BcdDefs.BCD;

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

  NameString: TYPE = LONG POINTER TO PackedString;

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

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

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

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

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

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

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

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

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

  ProcessFramePacks: PROC [
      bcd: BcdBase, proc: PROC [FPHandle, FPIndex] RETURNS [BOOLEAN]]
    RETURNS [fph: FPHandle, fpi: FPIndex];

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

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

  }.