/*
 * buffers.h
 *
 * Turbo Vision - Version 2.0
 *
 * Copyright (c) 1994 by Borland International
 * All Rights Reserved.
 *
 * Modified by Sergio Sigala <ssigala@globalnet.it>
 */

#if defined( Uses_TVMemMgr ) && !defined( __TVMemMgr )
#define __TVMemMgr

const int DEFAULT_SAFETY_POOL_SIZE = 4096;

/**
 * @internal
 */
class TBufListEntry
{

private:

    TBufListEntry( void*& );
    ~TBufListEntry();

    void *operator new( size_t, size_t );
    void *operator new( size_t );
    void operator delete( void * );

    TBufListEntry *next;
    TBufListEntry *prev;
    void*& owner;

    static TBufListEntry *bufList;
    static Boolean freeHead();

    friend class TVMemMgr;
    friend void *operator new( size_t );
    friend void * allocBlock( size_t );

};

/**
 * @internal
 */
class TVMemMgr
{

public:

    TVMemMgr();

    static void resizeSafetyPool( size_t = DEFAULT_SAFETY_POOL_SIZE );
    static int safetyPoolExhausted();
#ifndef __UNPATCHED
    static void clearSafetyPool();
#endif

    static void allocateDiscardable( void *&, size_t );
    static void freeDiscardable( void * );
#ifndef __UNPATCHED
    static void suspend(void);
#endif

private:

    static void * safetyPool;
    static size_t safetyPoolSize;
    static int inited;
    static int initMemMgr();

};

#endif  // Uses_TVMemMgr

Documentation generated by sergio@athena.milk.it on Wed Feb 10 22:11:47 CET 1999