home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 3 / Info_Mac_1994-01.iso / Development / Source / Arashi 1.1 Source / For your think c folder / Juri's Class Library / RamFiles.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-05  |  2.4 KB  |  146 lines  |  [TEXT/KAHL]

  1. /*/
  2.      Project Arashi: RamFiles.c
  3.      Major release: Version 1.1, 7/22/92
  4.  
  5.      Last modification: Monday, April 5, 1993, 0:11
  6.      Created: Friday, October 23, 1992, 16:39
  7.  
  8.      Copyright © 1992-1993, Juri Munkki
  9. /*/
  10.  
  11. #include <RamFiles.h>
  12.  
  13. short    IncreaseRamFile(
  14.     Handle    theFile,
  15.     long    *realSize,
  16.     long    *logicalSize,
  17.     long    increase)
  18. {    
  19.     increase += increase & 1;    /*    Keep it even!    */
  20.     *logicalSize += increase;
  21.     
  22.     if( *logicalSize <= *realSize )
  23.     {    return 0;
  24.     }
  25.     else
  26.     {    SetHandleSize(theFile, *realSize+increase);
  27.         *realSize = GetHandleSize(theFile);
  28.         
  29.         if(*logicalSize <= *realSize)
  30.             return 0;
  31.         else
  32.         {    *logicalSize-=increase;
  33.             return memFullErr;
  34.         }
  35.     }
  36. }
  37.  
  38. short    IncreaseByClump(
  39.     Handle    theFile,
  40.     long    *realSize,
  41.     long    *logicalSize,
  42.     long    increase,
  43.     long    clumpSize)
  44. {    
  45.     increase += increase & 1;
  46.     *logicalSize += increase;    /*    Keep it even!    */
  47.     
  48.     if( *logicalSize <= *realSize )
  49.     {    return noErr;
  50.     }
  51.     else
  52.     {    SetHandleSize(theFile, *realSize+increase+clumpSize);
  53.         *realSize = GetHandleSize(theFile);
  54.         
  55.         if(*logicalSize <= *realSize)
  56.         {    return noErr;
  57.         }
  58.         else
  59.         {    SetHandleSize(theFile, *realSize+increase);
  60.             *realSize = GetHandleSize(theFile);
  61.             
  62.             if(*logicalSize <= *realSize)
  63.                 return noErr;
  64.             else
  65.             {    *logicalSize-=increase;
  66.                 return memFullErr;
  67.             }
  68.  
  69.         }
  70.     }
  71. }
  72.  
  73. void    PackRamFile(
  74.     Handle    theFile,
  75.     long    *realSize,
  76.     long    *logicalSize)
  77. {
  78.     int    state;
  79.     
  80.     state = HGetState(theFile);
  81.     HUnlock(theFile);
  82.     
  83.     SetHandleSize(theFile, *logicalSize);
  84.     *realSize = GetHandleSize(theFile);
  85.     
  86.     HSetState(theFile,state);
  87. }
  88.  
  89. short    OddIncreaseRamFile(
  90.     Handle    theFile,
  91.     long    *realSize,
  92.     long    *logicalSize,
  93.     long    increase)
  94. {    
  95.     *logicalSize += increase;
  96.     
  97.     if( *logicalSize <= *realSize )
  98.     {    return 0;
  99.     }
  100.     else
  101.     {    SetHandleSize(theFile, *realSize+increase);
  102.         *realSize = GetHandleSize(theFile);
  103.         
  104.         if(*logicalSize <= *realSize)
  105.             return 0;
  106.         else
  107.         {    *logicalSize-=increase;
  108.             return memFullErr;
  109.         }
  110.     }
  111. }
  112.  
  113. short    OddIncreaseByClump(
  114.     Handle    theFile,
  115.     long    *realSize,
  116.     long    *logicalSize,
  117.     long    increase,
  118.     long    clumpSize)
  119. {    
  120.     *logicalSize += increase;
  121.     
  122.     if( *logicalSize <= *realSize )
  123.     {    return noErr;
  124.     }
  125.     else
  126.     {    SetHandleSize(theFile, *realSize+increase+clumpSize);
  127.         *realSize = GetHandleSize(theFile);
  128.         
  129.         if(*logicalSize <= *realSize)
  130.         {    return noErr;
  131.         }
  132.         else
  133.         {    SetHandleSize(theFile, *realSize+increase);
  134.             *realSize = GetHandleSize(theFile);
  135.             
  136.             if(*logicalSize <= *realSize)
  137.                 return noErr;
  138.             else
  139.             {    *logicalSize-=increase;
  140.                 return memFullErr;
  141.             }
  142.  
  143.         }
  144.     }
  145. }
  146.