home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / opendc12.zip / od124os2.exe / od12osr1.exe / src / LinkSpcB.cpp < prev    next >
C/C++ Source or Header  |  1997-03-21  |  12KB  |  318 lines

  1. /* @(#) 1.9 com/src/storage/LinkSpcB.cpp, oddataxfer, od96os2, odos29712d 10/31/96 07:56:29 [3/21/97 17:21:23] */
  2. //====START_GENERATED_PROLOG======================================
  3. //
  4. //
  5. //   COMPONENT_NAME: oddataxfer
  6. //
  7. //   CLASSES: none
  8. //
  9. //   ORIGINS: 82,27
  10. //
  11. //
  12. //   (C) COPYRIGHT International Business Machines Corp. 1995,1996
  13. //   All Rights Reserved
  14. //   Licensed Materials - Property of IBM
  15. //   US Government Users Restricted Rights - Use, duplication or
  16. //   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  17. //       
  18. //   IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  19. //   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  20. //   PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  21. //   CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
  22. //   USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
  23. //   OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  24. //   OR PERFORMANCE OF THIS SOFTWARE.
  25. //
  26. //====END_GENERATED_PROLOG========================================
  27. //
  28.  
  29. /*
  30.         File:           LinkSpecB.cpp
  31.  
  32.         Contains:       Implementation for ODBaseLinkSpec class.
  33.  
  34.         Owned by:       Craig Carper
  35.  
  36.         Copyright:      ⌐ 1993 - 1995 by Apple Computer, Inc., all rights reserved.
  37.  
  38.         Change History (most recent first):
  39.  
  40.                  <7>     6/27/96        DJ              23569: Enable compile on AIX platform
  41.                  <6>      8/3/95        RR              #1257260: Collapse B classes. Remove
  42.                                                                         somInit methods. Don't call IsInitialized
  43.                                                                         or SubclassResponsibility
  44.                  <5>     5/26/95        VL              1251403: Multithreading naming support.
  45.                  <4>     3/10/95        CC              1225926: Added FromThisDraft().
  46.                  <3>    12/20/94        VL              1195012: Make Storage calls be
  47.                                                                         marshallable.
  48.                  <2>    12/15/94        CC              1205709 LinkSpcB.cpp - Added implementation
  49.                                                                         of AcquirePart(), GetPartData(),
  50.                                                                         ReadLinkSpec(), WriteLinkSpec() methods.
  51.                  <1>     6/24/94        CC              first checked in
  52.         To Do:
  53. */
  54.  
  55. #define VARIABLE_MACROS
  56.  
  57. #define ODBaseLinkSpec_Class_Source
  58. #include <LinkSpcB.xih>
  59.  
  60. #ifndef SOM_ODStorageUnit_xh
  61. #include "StorageU.xh"
  62. #endif
  63.  
  64. #ifndef _BARRAY_
  65. #include <BArray.h>
  66. #endif
  67.  
  68. #ifndef _STORUTIL_
  69. #include <StorUtil.h>
  70. #endif
  71.  
  72. #ifndef _PLATFORM_OS2_
  73. #pragma segment ODBaseLinkSpec
  74. #endif
  75.  
  76. //==============================================================================
  77. // ODBaseLinkSpec
  78. //==============================================================================
  79.  
  80. //------------------------------------------------------------------------------
  81. // ODBaseLinkSpec: somInit
  82. //------------------------------------------------------------------------------
  83.  
  84. SOM_Scope void  SOMLINK ODBaseLinkSpecsomInit(ODBaseLinkSpec *somSelf)
  85. {
  86. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  87.     ODBaseLinkSpecData *somThis = ODBaseLinkSpecGetData(somSelf);
  88. #endif
  89.     ODBaseLinkSpecMethodDebug("ODBaseLinkSpec","somInit");
  90.  
  91.     parent_somInit(somSelf);
  92. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  93.         _fPart = kODNULL;
  94.         _fPartData = CreateEmptyByteArrayStruct(0);
  95. #endif
  96. }
  97.  
  98. //------------------------------------------------------------------------------
  99. // ODBaseLinkSpec: somUninit
  100. //------------------------------------------------------------------------------
  101.  
  102. SOM_Scope void  SOMLINK ODBaseLinkSpecsomUninit(ODBaseLinkSpec *somSelf)
  103. {
  104. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  105.     ODBaseLinkSpecData *somThis = ODBaseLinkSpecGetData(somSelf);
  106. #endif
  107.     ODBaseLinkSpecMethodDebug("ODBaseLinkSpec","somUninit");
  108.  
  109. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  110.     DisposeByteArrayStruct(_fPartData);
  111. #endif
  112.  
  113.     parent_somUninit(somSelf);
  114. }
  115.  
  116. //------------------------------------------------------------------------------
  117. // ODBaseLinkSpec: InitBaseLinkSpec
  118. //------------------------------------------------------------------------------
  119.  
  120. SOM_Scope void  SOMLINK ODBaseLinkSpecInitBaseLinkSpec(ODBaseLinkSpec *somSelf, Environment *ev,
  121.                 ODPart* part,
  122.                 ODByteArray* partData)
  123. {
  124. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  125.     ODBaseLinkSpecData *somThis = ODBaseLinkSpecGetData(somSelf);
  126. #endif
  127.     ODBaseLinkSpecMethodDebug("ODBaseLinkSpec","InitBaseLinkSpec");
  128. #ifdef _PLATFORM_MACINTOSH_
  129.         SOM_CATCH return;
  130. #endif
  131.  
  132. #if defined(_PLATFORM_OS2_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)
  133.         SOM_TRY
  134. #endif
  135.  
  136. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  137.         if ( partData )
  138.         {
  139.                 DisposeByteArrayStruct(_fPartData);
  140.                 _fPartData = CopyByteArrayStruct(partData);
  141.         }
  142.  
  143.         _fPart = part;
  144. #endif
  145.  
  146.  
  147. #if defined(_PLATFORM_OS2_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)
  148.         SOM_CATCH_ALL
  149.  
  150.         SOM_ENDTRY
  151.           return;
  152. #endif
  153. }
  154.  
  155. //------------------------------------------------------------------------------
  156. // ODBaseLinkSpec::GetPart
  157. //------------------------------------------------------------------------------
  158.  
  159. SOM_Scope ODPart*  SOMLINK ODBaseLinkSpecGetPart(ODBaseLinkSpec *somSelf, Environment *ev)
  160. {
  161. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  162.     ODBaseLinkSpecData *somThis = ODBaseLinkSpecGetData(somSelf);
  163. #endif
  164.     ODBaseLinkSpecMethodDebug("ODBaseLinkSpec","GetPart");
  165.  
  166. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  167.         return _fPart;
  168. #endif
  169. #ifdef _PLATFORM_WIN32_
  170.         return kODNULL;
  171. #endif
  172. }
  173.  
  174. //------------------------------------------------------------------------------
  175. // ODBaseLinkSpec::GetPartData
  176. //------------------------------------------------------------------------------
  177.  
  178. SOM_Scope ODByteArray  SOMLINK ODBaseLinkSpecGetPartData(ODBaseLinkSpec *somSelf, Environment *ev)
  179. {
  180. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  181.     ODBaseLinkSpecData *somThis = ODBaseLinkSpecGetData(somSelf);
  182. #endif
  183.     ODBaseLinkSpecMethodDebug("ODBaseLinkSpec","GetPartData");
  184. #ifdef _PLATFORM_MACINTOSH_
  185.         SOM_CATCH return CreateEmptyByteArrayStruct(0);
  186. #endif
  187.  
  188. #if defined(_PLATFORM_OS2_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)
  189.         SOM_TRY
  190. #endif
  191.  
  192. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  193.         return CopyByteArrayStruct(&_fPartData);
  194. #endif
  195. #ifdef _PLATFORM_WIN32_
  196.         return CreateEmptyByteArrayStruct(0);
  197. #endif
  198.  
  199.  
  200. #if defined(_PLATFORM_OS2_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)
  201.         SOM_CATCH_ALL
  202.  
  203.         SOM_ENDTRY
  204.           return CreateEmptyByteArrayStruct(0);
  205. #endif
  206.  
  207.  
  208. }
  209.  
  210. //------------------------------------------------------------------------------
  211. // ODBaseLinkSpec: WriteLinkSpec
  212. //------------------------------------------------------------------------------
  213.  
  214. SOM_Scope void  SOMLINK ODBaseLinkSpecWriteLinkSpec(ODBaseLinkSpec *somSelf, Environment *ev,
  215.                 ODStorageUnit* su)
  216. {
  217. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  218.     ODBaseLinkSpecData *somThis = ODBaseLinkSpecGetData(somSelf);
  219. #endif
  220.     ODBaseLinkSpecMethodDebug("ODBaseLinkSpec","WriteLinkSpec");
  221. #ifdef _PLATFORM_MACINTOSH_
  222.         SOM_CATCH return;
  223. #endif
  224.  
  225. #if defined(_PLATFORM_OS2_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)
  226.         SOM_TRY
  227. #endif
  228.  
  229.         // Assumes su has been focused to a property and link spec value
  230.  
  231. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  232.         StorageUnitSetValue(su, ev, sizeof(ODPart*), (ODValue) &_fPart);
  233.         StorageUnitSetValue(su, ev, sizeof(ODULong), (ODValue) &_fPartData._length);
  234.         StorageUnitSetValue(su, ev, _fPartData._length, (ODValue) _fPartData._buffer);
  235. #endif // _PLATFORM_MACINTOSH_ or OS2 or AIX
  236.  
  237.  
  238. #if defined(_PLATFORM_OS2_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)
  239.         SOM_CATCH_ALL
  240.  
  241.         SOM_ENDTRY
  242.           return;
  243. #endif
  244. }
  245.  
  246. //------------------------------------------------------------------------------
  247. // ODBaseLinkSpec: ReadLinkSpec
  248. //------------------------------------------------------------------------------
  249.  
  250. SOM_Scope void  SOMLINK ODBaseLinkSpecReadLinkSpec(ODBaseLinkSpec *somSelf, Environment *ev,
  251.                 ODStorageUnit* su)
  252. {
  253. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  254.     ODBaseLinkSpecData *somThis = ODBaseLinkSpecGetData(somSelf);
  255. #endif
  256.     ODBaseLinkSpecMethodDebug("ODBaseLinkSpec","ReadLinkSpec");
  257. #ifdef _PLATFORM_MACINTOSH_
  258.         SOM_CATCH return;
  259. #endif
  260.  
  261. #if defined(_PLATFORM_OS2_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)
  262.         SOM_TRY
  263. #endif
  264.  
  265. #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
  266.         ODPart*                 part;
  267.         ODByteArray             partData;
  268.         ODULong                 dataSize;
  269.         ODULong                 valueSize;
  270.  
  271.         // Assumes su has been focused to a property and link spec value,
  272.         // and the current offset is where the base link spec was written.
  273.         valueSize = StorageUnitGetValue(su, ev, sizeof(ODPart*), (ODValue) &part);
  274.         if ( valueSize != sizeof(ODPart*) )
  275.                 THROW(kODErrCorruptLinkSpecValue);
  276.  
  277.         valueSize = StorageUnitGetValue(su, ev, sizeof(ODULong), (ODValue) &dataSize);
  278.         if ( valueSize != sizeof(ODULong) )
  279.                 THROW(kODErrCorruptLinkSpecValue);
  280.  
  281.         partData = CreateEmptyByteArrayStruct(dataSize);
  282.         if ( dataSize > 0 )
  283.         {
  284.                 valueSize = StorageUnitGetValue(su, ev, dataSize, (ODValue) partData._buffer);
  285.                 if ( valueSize != dataSize )
  286.                 {
  287.                         DisposeByteArrayStruct(partData);
  288.                         THROW(kODErrCorruptLinkSpecValue);
  289.                 }
  290.         }
  291.         partData._length = dataSize;
  292.  
  293.         _fPart = part;
  294.         DisposeByteArrayStruct(_fPartData);
  295.         _fPartData = partData;
  296. #endif // _PLATFORM_MACINTOSH_ or OS2 or AIX
  297.  
  298.  
  299. #if defined(_PLATFORM_OS2_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)
  300.         SOM_CATCH_ALL
  301.  
  302.         SOM_ENDTRY
  303.           return;
  304. #endif
  305. }
  306.  
  307. //------------------------------------------------------------------------------
  308. // ODBaseLinkSpec::FromThisDraft
  309. //------------------------------------------------------------------------------
  310.  
  311. SOM_Scope ODBoolean  SOMLINK ODBaseLinkSpecFromThisDraft(ODBaseLinkSpec *somSelf, Environment *ev)
  312. {
  313.     // ODBaseLinkSpecData *somThis = ODBaseLinkSpecGetData(somSelf);
  314.     ODBaseLinkSpecMethodDebug("ODBaseLinkSpec","FromThisDraft");
  315.  
  316.         return kODTrue;
  317. }
  318.