home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / warphead.zip / H / DOCPRIV.H < prev    next >
C/C++ Source or Header  |  1997-02-28  |  9KB  |  312 lines

  1. /* @(#)Z 1.4 com/src/bento/DocPriv.h, odstorage, od96os2, odos29646d 96/11/15 15:29:27 (96/10/29 09:11:55) */
  2. /*====START_GENERATED_PROLOG======================================
  3.  */
  4. /*
  5.  *   COMPONENT_NAME: odstorage
  6.  *
  7.  *   CLASSES:   DraftLink
  8.  *        DraftList
  9.  *        DraftListIterator
  10.  *        VersionLink
  11.  *        VersionList
  12.  *        VersionListIterator
  13.  *
  14.  *   ORIGINS: 82,27
  15.  *
  16.  *
  17.  *   (C) COPYRIGHT International Business Machines Corp. 1995,1996
  18.  *   All Rights Reserved
  19.  *   Licensed Materials - Property of IBM
  20.  *   US Government Users Restricted Rights - Use, duplication or
  21.  *   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  22.  *       
  23.  *   IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  24.  *   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  25.  *   PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  26.  *   CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
  27.  *   USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
  28.  *   OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  29.  *   OR PERFORMANCE OF THIS SOFTWARE.
  30.  */
  31. /*====END_GENERATED_PROLOG========================================
  32.  */
  33.  
  34. /*
  35.     File:        DocPriv.h
  36.  
  37.     Contains:    Private Definition for CMDocument
  38.  
  39.     Owned by:    Vincent Lo
  40.  
  41.     Copyright:    ⌐ 1992-1995 by Apple Computer, Inc., all rights reserved.
  42.  
  43.     Change History (most recent first):
  44.     
  45.         <13>     6/10/95    VL        1252808: ODVersionID is moved from
  46.                                     ODTypesB.idl.
  47.         <12>     5/25/95    jpa        List.h --> LinkList.h [1253324]
  48.         <11>     3/31/95    EL        1234685: ExportTo has extra parameter so we
  49.                                     can skip top draft. Dirty flag no longer
  50.                                     needed because version list only
  51.                                     externalized on close or flush.
  52.         <10>     3/24/95    EL        1209355: dirty flag for version list.
  53.                                     #define TestFlushContainer before making
  54.                                     this change permanent.
  55.          <9>     3/23/95    VL        1228003: Added Print.
  56.          <8>      3/9/95    VL        1226089: Introduced fHighestDraftID to
  57.                                     prevent DraftID from being reused in a
  58.                                     session.
  59.          <7>     2/15/95    EL        1182275: Add GetSameVersionDraftID to get
  60.                                     the lowest draft that has the same version
  61.                                     as the latest draft.
  62.          <6>     1/11/95    VL        1185688: Made storage more robust in terms
  63.                                     of error handling. Also did some code
  64.                                     review cleanup.
  65.          <5>     8/26/94    VL        1150214: Added Count.
  66.          <4>     7/11/94    VL        Added Exists calls.
  67.          <3>     6/20/94    CC        ODMemoryHeap* changed to ODMemoryHeapID.
  68.          <2>     6/15/94    RR        ODHeap -> ODMemoryHeap
  69.          <1>     5/27/94    VL        first checked in
  70.  
  71.     To Do:
  72.     In Progress:
  73. */
  74.  
  75.  
  76. #ifndef _DOCPRIV_
  77. #define _DOCPRIV_
  78.  
  79. #ifndef _LINKLIST_
  80. #include "LinkList.h"
  81. #endif
  82.  
  83. #ifndef _PLFMDEF_
  84. #include "PlfmDef.h"
  85. #endif
  86.  
  87. #ifndef _ODMEMORY_
  88. #include "ODMemory.h"
  89. #endif
  90.  
  91. //==============================================================================
  92. // Types
  93. //==============================================================================
  94. typedef    ODULong    ODVersionID;
  95.  
  96. //==============================================================================
  97. // Constants
  98. //==============================================================================
  99. const    ODVersionID    kODTombstonedVersion = 0;
  100. #define TestFlushContainer 1
  101.  
  102. //==============================================================================
  103. // Classes defined in this interface
  104. //==============================================================================
  105. class DraftLink;
  106. class DraftList;
  107. class VersionList;
  108. class DraftListIterator;
  109. class VersionListIterator;
  110. class CMDraft;
  111.  
  112. //==============================================================================
  113. // Classes used by this interface
  114. //==============================================================================
  115.  
  116. //==============================================================================
  117. // DraftLink
  118. //==============================================================================
  119.  
  120. class DraftLink : public Link {
  121.  
  122. public:
  123.     
  124.     DraftLink(ODDraftID id, CMDraft* draft)
  125.     {
  126.         fDraftID = id;
  127.         fDraft = draft;
  128.     }
  129.     ODVMethod ~DraftLink() {;};
  130.     
  131.     ODDraftID GetDraftID() {return fDraftID;};
  132.     CMDraft*    GetDraft() {return fDraft;};
  133.  
  134. private:
  135.     
  136.     ODDraftID                fDraftID;
  137.     CMDraft*                fDraft;
  138. };
  139.  
  140. //==============================================================================
  141. // DraftList
  142. //==============================================================================
  143.  
  144. class DraftList
  145. {    
  146. public:
  147.  
  148.     DraftList();
  149.     
  150.     ODVMethod    ~DraftList();
  151.     
  152.     ODMethod void Initialize();
  153.     
  154.     ODMethod void Add(ODDraftID draftID, CMDraft* draft);
  155.     
  156.     ODMethod void Remove(ODDraftID draftID);
  157.     
  158.     ODMethod CMDraft* Get(ODDraftID draftID);
  159.     
  160.     ODMethod ODULong Count();
  161.     
  162. private:
  163.  
  164.     ODMethod DraftLink* GetLink(ODDraftID draftID);
  165.     
  166.  
  167.     LinkedList* fLinkedList;
  168.     
  169.     ODMemoryHeapID        fHeap;
  170.     
  171. public:    // private by convention
  172.  
  173.     ODMethod    ODMemoryHeapID        GetHeap();
  174.     ODMethod    LinkedList* GetLinkedList();
  175. };
  176.  
  177. //==============================================================================
  178. // DraftListIterator
  179. //==============================================================================
  180.  
  181. class DraftListIterator
  182. {
  183.  
  184. public:
  185.  
  186.     DraftListIterator(DraftList* DraftList);
  187.     
  188.     ~DraftListIterator();
  189.     
  190.     ODMethod    void        Initialize();
  191.     
  192.     ODMethod    CMDraft*    Last();
  193.     ODMethod    CMDraft*    Previous();
  194.     ODMethod    ODBoolean    IsNotComplete();
  195.     
  196. private:
  197.  
  198.     DraftList*            fDraftList;
  199.     LinkedListIterator* fIterator;
  200. };
  201.  
  202. //==============================================================================
  203. // VersionLink
  204. //==============================================================================
  205.  
  206. class VersionLink : public Link {
  207.  
  208. public:
  209.     
  210.     VersionLink(ODDraftID draftID, ODVersionID versionID);
  211.     ODVMethod ~VersionLink() {;};
  212.     
  213.     ODDraftID        GetDraftID() {return fDraftID;};
  214.     ODVersionID    GetVersionID() {return fVersionID;};
  215.     void            SetVersionID(ODVersionID versionID) {fVersionID = versionID;};
  216.  
  217. private:
  218.  
  219.     ODDraftID                fDraftID;
  220.     ODVersionID            fVersionID;
  221. };
  222.  
  223.     
  224. //==============================================================================
  225. // VersionList
  226. //==============================================================================
  227.  
  228. class VersionList {
  229.     
  230. public:
  231.  
  232.     VersionList();
  233.     ODVMethod    ~VersionList();
  234.     
  235.     ODMethod    void Initialize();
  236.     ODMethod    void Initialize(ODPtr buffer, ODULong size);
  237.     ODMethod    void ExportTo(ODPtr* buffer, ODULong* size, ODBoolean ignoreTopDraft);
  238.     ODMethod    void Reinitialize(ODPtr buffer, ODULong size);
  239.     
  240.     ODMethod     ODDraftID CreateDraft();
  241.     ODMethod    void RemoveDraft(ODDraftID draftID);
  242.     
  243.     ODMethod    ODVersionID    GetDraft(ODDraftID draftID);
  244.     
  245.     ODMethod    ODVersionID    CreateVersion(ODDraftID draftID);
  246.     ODMethod    ODVersionID    GetCurrentVersion(ODDraftID draftID);
  247.     
  248.     ODMethod    ODBoolean Exists(ODDraftID draftID);
  249.     
  250.     ODMethod    void             CollapseDrafts(ODDraftID fromDraftID, ODDraftID toDraftID);
  251.     ODMethod    void             SaveToAPrevDraft(ODDraftID fromDraftID, ODDraftID toDraftID);
  252.     ODMethod    ODVersionID    RemoveChanges(ODDraftID draftID);
  253.     ODMethod    ODBoolean        ChangedFromPrev(ODDraftID draftID);
  254.  
  255.     ODMethod    ODDraftID GetBaseDraftID();
  256.     ODMethod    ODDraftID GetLatestDraftID();
  257.     ODMethod    ODDraftID GetPreviousDraftID(ODDraftID draftID);
  258.     ODMethod    ODDraftID GetNextDraftID(ODDraftID draftID);
  259.     ODMethod    ODDraftID GetSameVersionDraftID(ODDraftID draftID);
  260.  
  261.     ODMethod    ODBoolean PreviousDraftExists(ODDraftID draftID);
  262.     ODMethod    ODBoolean NextDraftExists(ODDraftID draftID);
  263.     
  264.     ODMethod    ODBoolean    IsAbove(ODDraftID draftID1, ODDraftID draftID2);
  265.     ODMethod    ODBoolean    IsBelow(ODDraftID draftID1, ODDraftID draftID2);
  266.  
  267.     ODMethod    void Print(char* string);
  268.         
  269. private:
  270.  
  271.     ODMethod    VersionLink* GetLink(ODDraftID draftID);
  272.     ODMethod    void Clear();
  273.     
  274.     LinkedList*        fLinkedList;
  275.     ODMemoryHeapID    fHeap;
  276.     ODVersionID        fLatestVersionID;
  277.     ODDraftID        fHighestDraftID;
  278.     
  279. public: // private by convention
  280.  
  281.     ODMethod    ODMemoryHeapID        GetHeap();
  282.     ODMethod    LinkedList*    GetLinkedList();
  283. };
  284.  
  285.  
  286. //==============================================================================
  287. // VersionListIterator
  288. //==============================================================================
  289.  
  290. class VersionListIterator
  291. {
  292.  
  293. public:
  294.  
  295.     VersionListIterator(VersionList* versionList);
  296.     
  297.     ODVMethod    ~VersionListIterator();
  298.     
  299.     ODMethod    void    Initialize();
  300.     
  301.     ODMethod    VersionLink*    Last();
  302.     ODMethod    VersionLink*    Previous();
  303.     ODMethod    ODBoolean        IsNotComplete();
  304.     
  305. private:
  306.  
  307.     VersionList*        fVersionList;
  308.     LinkedListIterator* fIterator;
  309. };
  310.  
  311. #endif    // _DOCPRIV_
  312.