STLSoft - ... Robust, Lightweight, Cross-platform, Template Software ... ATLSTL - Template Software for the Active Template Library COMSTL - The Standard Template Library meets the Component Object Model .netSTL - Standard Template Library meets the Microsoft.NET Common Language Runtime InetSTL - The Standard Template Library meets WinInet MFCSTL - Template Software for the Microsoft Foundation Classes UNIXSTL - Template Software for the UNIX Operating System WinSTL - where the Standard Template Library meets the Win32 API

Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

stlsoft_allocator_base.h

Go to the documentation of this file.
00001 /* 
00002  * File:        stlsoft_allocator_base.h
00003  *
00004  * Purpose:     Allocator commmon features.
00005  *
00006  * Created:     20th August 2003
00007  * Updated:     11th September 2004
00008  *
00009  * Home:        http://stlsoft.org/
00010  *
00011  * Copyright (c) 2003-2004, Matthew Wilson and Synesis Software
00012  * All rights reserved.
00013  *
00014  * Redistribution and use in source and binary forms, with or without
00015  * modification, are permitted provided that the following conditions are met:
00016  *
00017  * - Redistributions of source code must retain the above copyright notice, this
00018  *   list of conditions and the following disclaimer.
00019  * - Redistributions in binary form must reproduce the above copyright notice,
00020  *   this list of conditions and the following disclaimer in the documentation
00021  *   and/or other materials provided with the distribution.
00022  * - Neither the name(s) of Matthew Wilson and Synesis Software nor the names of
00023  *   any contributors may be used to endorse or promote products derived from
00024  *   this software without specific prior written permission.
00025  *
00026  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00027  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00028  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00029  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00030  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00031  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00032  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00033  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00034  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00035  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00036  * POSSIBILITY OF SUCH DAMAGE.
00037  *
00038  * 
00039 
00040 
00044 
00045 #ifndef STLSOFT_INCL_H_STLSOFT_ALLOCATOR_BASE
00046 #define STLSOFT_INCL_H_STLSOFT_ALLOCATOR_BASE
00047 
00048 #ifndef __STLSOFT_DOCUMENTATION_SKIP_SECTION
00049 # define STLSOFT_VER_H_STLSOFT_ALLOCATOR_BASE_MAJOR     2
00050 # define STLSOFT_VER_H_STLSOFT_ALLOCATOR_BASE_MINOR     0
00051 # define STLSOFT_VER_H_STLSOFT_ALLOCATOR_BASE_REVISION  1
00052 # define STLSOFT_VER_H_STLSOFT_ALLOCATOR_BASE_EDIT      8
00053 #endif /* !__STLSOFT_DOCUMENTATION_SKIP_SECTION */
00054 
00055 /* 
00056  * Includes
00057  */
00058 
00059 #ifndef STLSOFT_INCL_H_STLSOFT
00060 # include "stlsoft.h"   // Include the STLSoft root header
00061 #endif /* !STLSOFT_INCL_H_STLSOFT */
00062 #if defined(__STLSOFT_CF_THROW_BAD_ALLOC) || \
00063     (   defined(__STLSOFT_COMPILER_IS_MSVC) && \
00064         _MSC_VER < 1100)
00065 # include <new>         // placement new, std::bad_alloc
00066 #endif /* __STLSOFT_CF_THROW_BAD_ALLOC || _MSC_VER < 1100) */
00067 
00068 /* 
00069  * Allocator compatibilities
00070  */
00071 
00072 /* stl-like allocator classes need allocate and deallocate as static
00073  *
00074  * Discriminated symbol is __STLSOFT_CF_ALLOCATOR_STATIC_ALLOCATE_METHODS
00075  *
00076  * Note: this should be resolving on the library, not the compiler
00077  */
00078 #ifdef __STLSOFT_CF_ALLOCATOR_STATIC_ALLOCATE_METHODS
00079 # undef __STLSOFT_CF_ALLOCATOR_STATIC_ALLOCATE_METHODS
00080 #endif /* __STLSOFT_CF_ALLOCATOR_STATIC_ALLOCATE_METHODS */
00081 
00082 /* stl-like allocator classes need deallocate to use void *
00083  *
00084  * Discriminated symbol is __STLSOFT_CF_ALLOCATOR_TYPED_DEALLOCATE_POINTER
00085  *
00086  * Note: this should be resolving on the library, not the compiler
00087  */
00088 #define __STLSOFT_CF_ALLOCATOR_TYPED_DEALLOCATE_POINTER /* This is standard behaviour */
00089 
00090 /* stl-like allocator classes need a _CharAlloc method
00091  *
00092  * Discriminated symbol is __STLSOFT_CF_ALLOCATOR_CHARALLOC_METHOD
00093  *
00094  * Note: this should be resolving on the library, not the compiler
00095  */
00096 #ifdef __STLSOFT_CF_ALLOCATOR_CHARALLOC_METHOD
00097 # undef __STLSOFT_CF_ALLOCATOR_CHARALLOC_METHOD
00098 #endif /* __STLSOFT_CF_ALLOCATOR_CHARALLOC_METHOD */
00099 
00100 
00101 #if defined(__STLSOFT_COMPILER_IS_DMC)
00102 # define __STLSOFT_CF_ALLOCATOR_STATIC_ALLOCATE_METHODS
00103 # undef __STLSOFT_CF_ALLOCATOR_TYPED_DEALLOCATE_POINTER
00104 #elif defined(__STLSOFT_COMPILER_IS_MWERKS)
00105 # undef __STLSOFT_CF_ALLOCATOR_TYPED_DEALLOCATE_POINTER
00106 #elif ( defined(__STLSOFT_COMPILER_IS_INTEL) || \
00107         defined(__STLSOFT_COMPILER_IS_MSVC)) && \
00108     _MSC_VER < 1300
00109 # undef __STLSOFT_CF_ALLOCATOR_TYPED_DEALLOCATE_POINTER
00110 # define __STLSOFT_CF_ALLOCATOR_CHARALLOC_METHOD
00111 #endif /* compiler */
00112 
00113 #if defined(__STLSOFT_DOCUMENTATION_SKIP_SECTION)
00114 # ifdef __STLSOFT_CF_ALLOCATOR_CHARALLOC_METHOD
00115 #  undef __STLSOFT_CF_ALLOCATOR_CHARALLOC_METHOD
00116 # endif /* __STLSOFT_CF_ALLOCATOR_CHARALLOC_METHOD */
00117 #endif /* !__STLSOFT_DOCUMENTATION_SKIP_SECTION */
00118 
00119 
00120 /* 
00121  * Namespace
00122  */
00123 
00124 #ifndef _STLSOFT_NO_NAMESPACE
00125 namespace stlsoft
00126 {
00127 #endif /* _STLSOFT_NO_NAMESPACE */
00128 
00129 /* 
00130 
00133 
00137 
00142 
00143 /* 
00144  * Classes
00145  */
00146 
00147 
00148 /* 
00149 
00151 
00152 /* 
00153 
00154 #ifndef _STLSOFT_NO_NAMESPACE
00155 } // namespace stlsoft
00156 #endif /* _STLSOFT_NO_NAMESPACE */
00157 
00158 /* 
00159 
00160 #endif /* !STLSOFT_INCL_H_STLSOFT_ALLOCATOR_BASE */
00161 
00162 /* 

STLSoft Libraries documentation © Synesis Software Pty Ltd, 2001-2004