/*
     File:       Editions.h
 
     Contains:   Edition Manager Interfaces.
 
     Version:    Technology: System 7.5
                 Release:    QuickTime 7.3
 
     Copyright:  (c) 2007 (c) 1989-1999 by Apple Computer, Inc., all rights reserved
 
     Bugs?:      For bug reports, consult the following page on
                 the World Wide Web:
 
                     http://developer.apple.com/bugreporter/
 
*/
#ifndef __EDITIONS__
#define __EDITIONS__

#ifndef __MACTYPES__
#include "MacTypes.h"
#endif

#ifndef __MIXEDMODE__
#include "MixedMode.h"
#endif

#ifndef __FILES__
#include "Files.h"
#endif

#ifndef __ALIASES__
#include "Aliases.h"
#endif

#ifndef __DIALOGS__
#include "Dialogs.h"
#endif




#if PRAGMA_ONCE
#pragma once
#endif

#ifdef __cplusplus
extern "C" {
#endif

#if PRAGMA_IMPORT
#pragma import on
#endif

#if PRAGMA_STRUCT_ALIGN
    #pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
    #pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
    #pragma pack(2)
#endif

enum {
                                        /* resource types  */
  rSectionType                  = FOUR_CHAR_CODE('sect'), /* ResType of saved SectionRecords */
                                        /* Finder types for edition files */
  kPICTEditionFileType          = FOUR_CHAR_CODE('edtp'),
  kTEXTEditionFileType          = FOUR_CHAR_CODE('edtt'),
  ksndEditionFileType           = FOUR_CHAR_CODE('edts'),
  kUnknownEditionFileType       = FOUR_CHAR_CODE('edtu'),
  kPublisherDocAliasFormat      = FOUR_CHAR_CODE('alis'),
  kPreviewFormat                = FOUR_CHAR_CODE('prvw'),
  kFormatListFormat             = FOUR_CHAR_CODE('fmts')
};

enum {
                                        /* section types */
  stSubscriber                  = 0x01,
  stPublisher                   = 0x0A
};

enum {
  sumAutomatic                  = 0,    /* subscriber update mode - Automatically     */
  sumManual                     = 1,    /* subscriber update mode - Manually */
  pumOnSave                     = 0,    /* publisher update mode - OnSave            */
  pumManual                     = 1     /* publisher update mode - Manually */
};

enum {
  kPartsNotUsed                 = 0,
  kPartNumberUnknown            = -1
};

enum {
  kPreviewWidth                 = 120,
  kPreviewHeight                = 120
};

enum {
                                        /* bits for formatsMask */
  kPICTformatMask               = 1,
  kTEXTformatMask               = 2,
  ksndFormatMask                = 4
};


enum {
                                        /* pseudo-item hits for dialogHooks the first is for NewPublisher or NewSubscriber Dialogs */
  emHookRedrawPreview           = 150,  /* the following are for SectionOptions Dialog */
  emHookCancelSection           = 160,
  emHookGoToPublisher           = 161,
  emHookGetEditionNow           = 162,
  emHookSendEditionNow          = 162,
  emHookManualUpdateMode        = 163,
  emHookAutoUpdateMode          = 164
};


enum {
                                        /* the refcon field of the dialog record during a modalfilter or dialoghook contains one the following */
  emOptionsDialogRefCon         = FOUR_CHAR_CODE('optn'),
  emCancelSectionDialogRefCon   = FOUR_CHAR_CODE('cncl'),
  emGoToPubErrDialogRefCon      = FOUR_CHAR_CODE('gerr')
};

enum {
  kFormatLengthUnknown          = -1
};

/* one byte, stSubscriber or stPublisher */
typedef SignedByte                      SectionType;
/* seconds since 1904 */
typedef unsigned long                   TimeStamp;
/* similar to ResType */
typedef FourCharCode                    FormatType;
/* used in Edition I/O */
typedef Handle                          EditionRefNum;
/* update modes */
/* sumAutomatic, pumSuspend, etc */
typedef short                           UpdateMode;
typedef struct SectionRecord            SectionRecord;
typedef SectionRecord *                 SectionPtr;
typedef SectionPtr *                    SectionHandle;
struct SectionRecord {
  SignedByte          version;                /* always 0x01 in system 7.0 */
  SectionType         kind;                   /* stSubscriber or stPublisher */
  UpdateMode          mode;                   /* auto or manual */
  TimeStamp           mdDate;                 /* last change in document */
  long                sectionID;              /* app. specific, unique per document */
  long                refCon;                 /* application specific */
  AliasHandle         alias;                  /* handle to Alias Record */
  long                subPart;                /* which part of container file */
  SectionHandle       nextSection;            /* for linked list of app's Sections */
  Handle              controlBlock;           /* used internally */
  EditionRefNum       refNum;                 /* used internally */
};

struct EditionContainerSpec {
  FSSpec              theFile;
  ScriptCode          theFileScript;
  long                thePart;
  Str31               thePartName;
  ScriptCode          thePartScript;
};
typedef struct EditionContainerSpec     EditionContainerSpec;
typedef EditionContainerSpec *          EditionContainerSpecPtr;
struct EditionInfoRecord {
  TimeStamp           crDate;                 /* date EditionContainer was created */
  TimeStamp           mdDate;                 /* date of last change */
  OSType              fdCreator;              /* file creator */
  OSType              fdType;                 /* file type */
  EditionContainerSpec  container;            /* the Edition */
};
typedef struct EditionInfoRecord        EditionInfoRecord;
struct NewPublisherReply {
  Boolean             canceled;               /* O */
  Boolean             replacing;
  Boolean             usePart;                /* I */
  SInt8               filler;
  Handle              preview;                /* I */
  FormatType          previewFormat;          /* I */
  EditionContainerSpec  container;            /* I/O */
};
typedef struct NewPublisherReply        NewPublisherReply;
struct NewSubscriberReply {
  Boolean             canceled;               /* O */
  SignedByte          formatsMask;
  EditionContainerSpec  container;            /*I/O*/
};
typedef struct NewSubscriberReply       NewSubscriberReply;
struct SectionOptionsReply {
  Boolean             canceled;               /* O */
  Boolean             changed;                /* O */
  SectionHandle       sectionH;               /* I */
  ResType             action;                 /* O */
};
typedef struct SectionOptionsReply      SectionOptionsReply;
typedef CALLBACK_API( Boolean , ExpModalFilterProcPtr )(DialogPtr theDialog, EventRecord *theEvent, short itemOffset, short *itemHit, Ptr yourDataPtr);
typedef CALLBACK_API( short , ExpDlgHookProcPtr )(short itemOffset, short itemHit, DialogPtr theDialog, Ptr yourDataPtr);
typedef STACK_UPP_TYPE(ExpModalFilterProcPtr)                   ExpModalFilterUPP;
typedef STACK_UPP_TYPE(ExpDlgHookProcPtr)                       ExpDlgHookUPP;
#if CALL_NOT_IN_CARBON
/*
 *  NewExpModalFilterUPP()
 *  
 *  Availability:
 *    Non-Carbon CFM:   available as macro/inline
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( ExpModalFilterUPP )
NewExpModalFilterUPP(ExpModalFilterProcPtr userRoutine);
#if !OPAQUE_UPP_TYPES
  enum { uppExpModalFilterProcInfo = 0x0000FBD0 };  /* pascal 1_byte Func(4_bytes, 4_bytes, 2_bytes, 4_bytes, 4_bytes) */
  #ifdef __cplusplus
    inline DEFINE_API_C(ExpModalFilterUPP) NewExpModalFilterUPP(ExpModalFilterProcPtr userRoutine) { return (ExpModalFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppExpModalFilterProcInfo, GetCurrentArchitecture()); }
  #else
    #define NewExpModalFilterUPP(userRoutine) (ExpModalFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppExpModalFilterProcInfo, GetCurrentArchitecture())
  #endif
#endif

/*
 *  NewExpDlgHookUPP()
 *  
 *  Availability:
 *    Non-Carbon CFM:   available as macro/inline
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( ExpDlgHookUPP )
NewExpDlgHookUPP(ExpDlgHookProcPtr userRoutine);
#if !OPAQUE_UPP_TYPES
  enum { uppExpDlgHookProcInfo = 0x00003EA0 };  /* pascal 2_bytes Func(2_bytes, 2_bytes, 4_bytes, 4_bytes) */
  #ifdef __cplusplus
    inline DEFINE_API_C(ExpDlgHookUPP) NewExpDlgHookUPP(ExpDlgHookProcPtr userRoutine) { return (ExpDlgHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppExpDlgHookProcInfo, GetCurrentArchitecture()); }
  #else
    #define NewExpDlgHookUPP(userRoutine) (ExpDlgHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppExpDlgHookProcInfo, GetCurrentArchitecture())
  #endif
#endif

/*
 *  DisposeExpModalFilterUPP()
 *  
 *  Availability:
 *    Non-Carbon CFM:   available as macro/inline
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( void )
DisposeExpModalFilterUPP(ExpModalFilterUPP userUPP);
#if !OPAQUE_UPP_TYPES
  #ifdef __cplusplus
      inline DEFINE_API_C(void) DisposeExpModalFilterUPP(ExpModalFilterUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  #else
      #define DisposeExpModalFilterUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  #endif
#endif

/*
 *  DisposeExpDlgHookUPP()
 *  
 *  Availability:
 *    Non-Carbon CFM:   available as macro/inline
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( void )
DisposeExpDlgHookUPP(ExpDlgHookUPP userUPP);
#if !OPAQUE_UPP_TYPES
  #ifdef __cplusplus
      inline DEFINE_API_C(void) DisposeExpDlgHookUPP(ExpDlgHookUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  #else
      #define DisposeExpDlgHookUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  #endif
#endif

/*
 *  InvokeExpModalFilterUPP()
 *  
 *  Availability:
 *    Non-Carbon CFM:   available as macro/inline
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( Boolean )
InvokeExpModalFilterUPP(
  DialogPtr          theDialog,
  EventRecord *      theEvent,
  short              itemOffset,
  short *            itemHit,
  Ptr                yourDataPtr,
  ExpModalFilterUPP  userUPP);
#if !OPAQUE_UPP_TYPES
  #ifdef __cplusplus
      inline DEFINE_API_C(Boolean) InvokeExpModalFilterUPP(DialogPtr theDialog, EventRecord * theEvent, short itemOffset, short * itemHit, Ptr yourDataPtr, ExpModalFilterUPP userUPP) { return (Boolean)CALL_FIVE_PARAMETER_UPP(userUPP, uppExpModalFilterProcInfo, theDialog, theEvent, itemOffset, itemHit, yourDataPtr); }
  #else
    #define InvokeExpModalFilterUPP(theDialog, theEvent, itemOffset, itemHit, yourDataPtr, userUPP) (Boolean)CALL_FIVE_PARAMETER_UPP((userUPP), uppExpModalFilterProcInfo, (theDialog), (theEvent), (itemOffset), (itemHit), (yourDataPtr))
  #endif
#endif

/*
 *  InvokeExpDlgHookUPP()
 *  
 *  Availability:
 *    Non-Carbon CFM:   available as macro/inline
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( short )
InvokeExpDlgHookUPP(
  short          itemOffset,
  short          itemHit,
  DialogPtr      theDialog,
  Ptr            yourDataPtr,
  ExpDlgHookUPP  userUPP);
#if !OPAQUE_UPP_TYPES
  #ifdef __cplusplus
      inline DEFINE_API_C(short) InvokeExpDlgHookUPP(short itemOffset, short itemHit, DialogPtr theDialog, Ptr yourDataPtr, ExpDlgHookUPP userUPP) { return (short)CALL_FOUR_PARAMETER_UPP(userUPP, uppExpDlgHookProcInfo, itemOffset, itemHit, theDialog, yourDataPtr); }
  #else
    #define InvokeExpDlgHookUPP(itemOffset, itemHit, theDialog, yourDataPtr, userUPP) (short)CALL_FOUR_PARAMETER_UPP((userUPP), uppExpDlgHookProcInfo, (itemOffset), (itemHit), (theDialog), (yourDataPtr))
  #endif
#endif

#endif  /* CALL_NOT_IN_CARBON */

#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
    /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
    #define NewExpModalFilterProc(userRoutine)                  NewExpModalFilterUPP(userRoutine)
    #define NewExpDlgHookProc(userRoutine)                      NewExpDlgHookUPP(userRoutine)
    #define CallExpModalFilterProc(userRoutine, theDialog, theEvent, itemOffset, itemHit, yourDataPtr) InvokeExpModalFilterUPP(theDialog, theEvent, itemOffset, itemHit, yourDataPtr, userRoutine)
    #define CallExpDlgHookProc(userRoutine, itemOffset, itemHit, theDialog, yourDataPtr) InvokeExpDlgHookUPP(itemOffset, itemHit, theDialog, yourDataPtr, userRoutine)
#endif /* CALL_NOT_IN_CARBON */

typedef SInt8 FormatIOVerb;
enum {
  ioHasFormat                   = 0,
  ioReadFormat                  = 1,
  ioNewFormat                   = 2,
  ioWriteFormat                 = 3
};

typedef SInt8 EditionOpenerVerb;
enum {
  eoOpen                        = 0,
  eoClose                       = 1,
  eoOpenNew                     = 2,
  eoCloseNew                    = 3,
  eoCanSubscribe                = 4
};


struct FormatIOParamBlock {
  long                ioRefNum;
  FormatType          format;
  long                formatIndex;
  unsigned long       offset;
  Ptr                 buffPtr;
  unsigned long       buffLen;
};
typedef struct FormatIOParamBlock       FormatIOParamBlock;
typedef struct EditionOpenerParamBlock  EditionOpenerParamBlock;
typedef CALLBACK_API( short , FormatIOProcPtr )(FormatIOVerb selector, FormatIOParamBlock *PB);
typedef CALLBACK_API( short , EditionOpenerProcPtr )(EditionOpenerVerb selector, EditionOpenerParamBlock *PB);
typedef STACK_UPP_TYPE(FormatIOProcPtr)                         FormatIOUPP;
typedef STACK_UPP_TYPE(EditionOpenerProcPtr)                    EditionOpenerUPP;
struct EditionOpenerParamBlock {
  EditionInfoRecord   info;
  SectionHandle       sectionH;
  const FSSpec *      document;
  OSType              fdCreator;
  long                ioRefNum;
  FormatIOUPP         ioProc;
  Boolean             success;
  SignedByte          formatsMask;
};

#if CALL_NOT_IN_CARBON
/*
 *  NewFormatIOUPP()
 *  
 *  Availability:
 *    Non-Carbon CFM:   available as macro/inline
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( FormatIOUPP )
NewFormatIOUPP(FormatIOProcPtr userRoutine);
#if !OPAQUE_UPP_TYPES
  enum { uppFormatIOProcInfo = 0x00000360 };  /* pascal 2_bytes Func(1_byte, 4_bytes) */
  #ifdef __cplusplus
    inline DEFINE_API_C(FormatIOUPP) NewFormatIOUPP(FormatIOProcPtr userRoutine) { return (FormatIOUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFormatIOProcInfo, GetCurrentArchitecture()); }
  #else
    #define NewFormatIOUPP(userRoutine) (FormatIOUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFormatIOProcInfo, GetCurrentArchitecture())
  #endif
#endif

/*
 *  NewEditionOpenerUPP()
 *  
 *  Availability:
 *    Non-Carbon CFM:   available as macro/inline
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( EditionOpenerUPP )
NewEditionOpenerUPP(EditionOpenerProcPtr userRoutine);
#if !OPAQUE_UPP_TYPES
  enum { uppEditionOpenerProcInfo = 0x00000360 };  /* pascal 2_bytes Func(1_byte, 4_bytes) */
  #ifdef __cplusplus
    inline DEFINE_API_C(EditionOpenerUPP) NewEditionOpenerUPP(EditionOpenerProcPtr userRoutine) { return (EditionOpenerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppEditionOpenerProcInfo, GetCurrentArchitecture()); }
  #else
    #define NewEditionOpenerUPP(userRoutine) (EditionOpenerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppEditionOpenerProcInfo, GetCurrentArchitecture())
  #endif
#endif

#endif  /* CALL_NOT_IN_CARBON */

#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
    /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
    #define NewFormatIOProc(userRoutine)                        NewFormatIOUPP(userRoutine)
    #define NewEditionOpenerProc(userRoutine)                   NewEditionOpenerUPP(userRoutine)
#endif /* CALL_NOT_IN_CARBON */

/* 
 Section events now arrive in the message buffer using the AppleEvent format.
 The direct object parameter is an aeTemporaryIDParamType ('tid '). The temporary
 ID's type is rSectionType ('sect') and the 32-bit value is a SectionHandle.
 The following is a sample buffer
 
 name       offset  contents
 ----       ------  --------
 header         0   'aevt'
 majorVersion   4   0x01
 minorVersion   6   0x01
 endOfMetaData  8   ';;;;' 
 directObjKey   12  '----' 
 paramType      16  'tid ' 
 paramLength    20  0x0008 
 tempIDType     24  'sect' 
 tempID         28  the SectionHandle <-- this is want you want
*/

enum {
  sectionEventMsgClass          = FOUR_CHAR_CODE('sect'),
  sectionReadMsgID              = FOUR_CHAR_CODE('read'),
  sectionWriteMsgID             = FOUR_CHAR_CODE('writ'),
  sectionScrollMsgID            = FOUR_CHAR_CODE('scrl'),
  sectionCancelMsgID            = FOUR_CHAR_CODE('cncl')
};

enum {
  currentEditionMgrVers         = 0x0011
};


#if TARGET_RT_MAC_CFM
#define InitEditionPack() InitEditionPackVersion(currentEditionMgrVers)
#else
#if CALL_NOT_IN_CARBON
/*
 *  InitEditionPack()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
InitEditionPack(void)                                         FIVEWORDINLINE(0x3F3C, 0x0011, 0x303C, 0x0100, 0xA82D);


#endif  /* CALL_NOT_IN_CARBON */

#endif  /* TARGET_RT_MAC_CFM */

#if CALL_NOT_IN_CARBON
/*
 *  InitEditionPackVersion()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
InitEditionPackVersion(short curEditionMgrVers)               THREEWORDINLINE(0x303C, 0x0100, 0xA82D);


/*
 *  NewSection()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
NewSection(
  const EditionContainerSpec *  container,
  const FSSpec *                sectionDocument,       /* can be NULL */
  SectionType                   kind,
  long                          sectionID,
  UpdateMode                    initalMode,
  SectionHandle *               sectionH)                     THREEWORDINLINE(0x303C, 0x0A02, 0xA82D);


/*
 *  RegisterSection()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
RegisterSection(
  const FSSpec *  sectionDocument,
  SectionHandle   sectionH,
  Boolean *       aliasWasUpdated)                            THREEWORDINLINE(0x303C, 0x0604, 0xA82D);


/*
 *  UnRegisterSection()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
UnRegisterSection(SectionHandle sectionH)                     THREEWORDINLINE(0x303C, 0x0206, 0xA82D);


/*
 *  IsRegisteredSection()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
IsRegisteredSection(SectionHandle sectionH)                   THREEWORDINLINE(0x303C, 0x0208, 0xA82D);


/*
 *  AssociateSection()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
AssociateSection(
  SectionHandle   sectionH,
  const FSSpec *  newSectionDocument)                         THREEWORDINLINE(0x303C, 0x040C, 0xA82D);


/*
 *  CreateEditionContainerFile()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
CreateEditionContainerFile(
  const FSSpec *  editionFile,
  OSType          fdCreator,
  ScriptCode      editionFileNameScript)                      THREEWORDINLINE(0x303C, 0x050E, 0xA82D);


/*
 *  DeleteEditionContainerFile()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
DeleteEditionContainerFile(const FSSpec * editionFile)        THREEWORDINLINE(0x303C, 0x0210, 0xA82D);


/*
 *  OpenEdition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
OpenEdition(
  SectionHandle    subscriberSectionH,
  EditionRefNum *  refNum)                                    THREEWORDINLINE(0x303C, 0x0412, 0xA82D);


/*
 *  OpenNewEdition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
OpenNewEdition(
  SectionHandle    publisherSectionH,
  OSType           fdCreator,
  const FSSpec *   publisherSectionDocument,       /* can be NULL */
  EditionRefNum *  refNum)                                    THREEWORDINLINE(0x303C, 0x0814, 0xA82D);


/*
 *  CloseEdition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
CloseEdition(
  EditionRefNum   whichEdition,
  Boolean         successful)                                 THREEWORDINLINE(0x303C, 0x0316, 0xA82D);


/*
 *  EditionHasFormat()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
EditionHasFormat(
  EditionRefNum   whichEdition,
  FormatType      whichFormat,
  Size *          formatSize)                                 THREEWORDINLINE(0x303C, 0x0618, 0xA82D);


/*
 *  ReadEdition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
ReadEdition(
  EditionRefNum   whichEdition,
  FormatType      whichFormat,
  void *          buffPtr,
  Size *          buffLen)                                    THREEWORDINLINE(0x303C, 0x081A, 0xA82D);


/*
 *  WriteEdition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
WriteEdition(
  EditionRefNum   whichEdition,
  FormatType      whichFormat,
  const void *    buffPtr,
  Size            buffLen)                                    THREEWORDINLINE(0x303C, 0x081C, 0xA82D);


/*
 *  GetEditionFormatMark()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
GetEditionFormatMark(
  EditionRefNum    whichEdition,
  FormatType       whichFormat,
  unsigned long *  currentMark)                               THREEWORDINLINE(0x303C, 0x061E, 0xA82D);


/*
 *  SetEditionFormatMark()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
SetEditionFormatMark(
  EditionRefNum   whichEdition,
  FormatType      whichFormat,
  unsigned long   setMarkTo)                                  THREEWORDINLINE(0x303C, 0x0620, 0xA82D);


/*
 *  GetEditionInfo()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
GetEditionInfo(
  SectionHandle        sectionH,
  EditionInfoRecord *  editionInfo)                           THREEWORDINLINE(0x303C, 0x0422, 0xA82D);


/*
 *  GoToPublisherSection()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
GoToPublisherSection(const EditionContainerSpec * container)  THREEWORDINLINE(0x303C, 0x0224, 0xA82D);


/*
 *  GetLastEditionContainerUsed()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
GetLastEditionContainerUsed(EditionContainerSpec * container) THREEWORDINLINE(0x303C, 0x0226, 0xA82D);


/*
 *  GetStandardFormats()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
GetStandardFormats(
  const EditionContainerSpec *  container,
  FormatType *                  previewFormat,
  Handle                        preview,
  Handle                        publisherAlias,
  Handle                        formats)                      THREEWORDINLINE(0x303C, 0x0A28, 0xA82D);


/*
 *  GetEditionOpenerProc()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
GetEditionOpenerProc(EditionOpenerUPP * opener)               THREEWORDINLINE(0x303C, 0x022A, 0xA82D);


/*
 *  SetEditionOpenerProc()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
SetEditionOpenerProc(EditionOpenerUPP opener)                 THREEWORDINLINE(0x303C, 0x022C, 0xA82D);


/*
 *  CallEditionOpenerProc()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
CallEditionOpenerProc(
  EditionOpenerVerb          selector,
  EditionOpenerParamBlock *  PB,
  EditionOpenerUPP           routine)                         THREEWORDINLINE(0x303C, 0x052E, 0xA82D);


/*
 *  CallFormatIOProc()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
CallFormatIOProc(
  FormatIOVerb          selector,
  FormatIOParamBlock *  PB,
  FormatIOUPP           routine)                              THREEWORDINLINE(0x303C, 0x0530, 0xA82D);


/*
 *  NewSubscriberDialog()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
NewSubscriberDialog(NewSubscriberReply * reply)               THREEWORDINLINE(0x303C, 0x0232, 0xA82D);


/*
 *  NewSubscriberExpDialog()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
NewSubscriberExpDialog(
  NewSubscriberReply *  reply,
  Point                 where,
  short                 expansionDITLresID,
  ExpDlgHookUPP         dlgHook,
  ExpModalFilterUPP     filter,
  void *                yourDataPtr)                          THREEWORDINLINE(0x303C, 0x0B34, 0xA82D);


/*
 *  NewPublisherDialog()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
NewPublisherDialog(NewPublisherReply * reply)                 THREEWORDINLINE(0x303C, 0x0236, 0xA82D);


/*
 *  NewPublisherExpDialog()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
NewPublisherExpDialog(
  NewPublisherReply *  reply,
  Point                where,
  short                expansionDITLresID,
  ExpDlgHookUPP        dlgHook,
  ExpModalFilterUPP    filter,
  void *               yourDataPtr)                           THREEWORDINLINE(0x303C, 0x0B38, 0xA82D);


/*
 *  SectionOptionsDialog()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
SectionOptionsDialog(SectionOptionsReply * reply)             THREEWORDINLINE(0x303C, 0x023A, 0xA82D);


/*
 *  SectionOptionsExpDialog()
 *  
 *  Availability:
 *    Non-Carbon CFM:   in InterfaceLib 7.1 and later
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API( OSErr )
SectionOptionsExpDialog(
  SectionOptionsReply *  reply,
  Point                  where,
  short                  expansionDITLresID,
  ExpDlgHookUPP          dlgHook,
  ExpModalFilterUPP      filter,
  void *                 yourDataPtr)                         THREEWORDINLINE(0x303C, 0x0B3C, 0xA82D);



#endif  /* CALL_NOT_IN_CARBON */


#if PRAGMA_STRUCT_ALIGN
    #pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
    #pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
    #pragma pack()
#endif

#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif

#ifdef __cplusplus
}
#endif

#endif /* __EDITIONS__ */

