home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / oclsrc15.zip / OCL / Include / OBuffer.hpp < prev    next >
C/C++ Source or Header  |  1996-08-12  |  3KB  |  111 lines

  1. // OCL - OS/2 Class Library
  2. // (c) Cubus 1995
  3. // All Rights Reserved
  4. // OBuffer.hpp
  5.  
  6.  
  7. /*
  8.  * Redistribution and use in source and binary forms, with or without
  9.  * modification, are permitted provided that the following conditions
  10.  * are met:
  11.  * 1. Redistributions of source code must retain the above copyright
  12.  *    notice, this list of conditions and the following disclaimer.
  13.  * 2. Neither the name Cubus nor the name Team OCL may be used to
  14.  *    endorse or promote products derived from this software
  15.  *    without specific prior written permission.
  16.  * 3. See OCL.INF for a detailed copyright notice.
  17.  *
  18.  *              THIS SOFTWARE IS PROVIDED ``AS IS'' AND
  19.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  20.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  21.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  22.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  23.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  24.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  25.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  26.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  27.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  28.  * SUCH DAMAGE.
  29.  */
  30.  
  31.  
  32. // $Header: W:/Projects/OCL/INCLUDE/rcs/OBuffer.hpp 1.1 1996/08/12 00:01:10 B.STEIN Release $
  33.  
  34. #ifndef OBUFFER_INCLUDED
  35.   #define OBUFFER_INCLUDED
  36.  
  37.  
  38. #ifndef OCLOBJECT_INCLUDED
  39.   #include <OCLObject.hpp>
  40. #endif
  41.  
  42. #ifndef OVIOEXCEPTION_INCLUDED
  43.   #include <OVioException.hpp>
  44. #endif
  45.  
  46.  
  47. typedef class OBuffer *pOBuffer;
  48.  
  49.  
  50. class __CPP_EXPORT__ OBuffer
  51.   : public OCLObject
  52. {
  53.  protected:
  54.  
  55.      PBYTE       memPtr;
  56.      ULONG       memSize;
  57.      ULONG       allocSize;
  58.  
  59.  public:
  60.  
  61.      enum MemoryFlags
  62.        {
  63.         ALLOC    = PAG_READ | PAG_WRITE | PAG_COMMIT,
  64.         DEFAULT  = PAG_DEFAULT,
  65.         READ     = PAG_READ,
  66.         WRITE    = PAG_WRITE,
  67.         COMMIT   = PAG_COMMIT,
  68.         DECOMMIT = PAG_DECOMMIT,
  69.         GUARD    = PAG_GUARD,
  70.         EXECUTE  = PAG_EXECUTE,
  71.         TILED    = OBJ_TILE
  72.        };
  73.      
  74.      enum MemorySizes
  75.        {
  76.         PAGESIZE = 4096,
  77.         MAXPATH  = CCHMAXPATH,
  78.         MOSTFIT  = 262144,
  79.         TILESIZE = 65536     
  80.        };
  81.  
  82.      OBuffer      (const ULONG sizeInBytes,
  83.                    const ULONG flags = OBuffer::ALLOC);
  84.    virtual
  85.      ~OBuffer     ();
  86.  
  87.    virtual
  88.      PSZ isOfType () const; 
  89.  
  90.    void
  91.      commit       (const ULONG sizeInBytes),
  92.      decommit     (const ULONG sizeInBytes),
  93.      freeBuffer   ();
  94.  
  95.    ULONG
  96.      allocated    (),
  97.      committed    ();
  98.  
  99.    PBYTE
  100.      getPtr       ();
  101.  
  102.    inline operator PBYTE () const { return(memPtr); }
  103. };
  104.  
  105.  
  106.  
  107. #endif // OBUFFER_INCLUDED
  108.  
  109.  
  110. // end of source
  111.