Main Page   Class Hierarchy   Compound List   File List   Compound Members  

galloc.h

00001 /*=============================================================================
00002         File: galloc.h
00003      Purpose: There is a conflict between VC++6 and normal (i.e. egcs) C++
00004               compiler. This defines macros necessary to solve that problem.
00005     Revision: $Id: galloc.h,v 1.2 2002/05/13 21:07:45 philosophil Exp $
00006   Created by: Philippe Lavoie          (3 Oct, 1996)
00007  Modified by: 
00008 
00009  Copyright notice:
00010           Copyright (C) 1996-1998 Philippe Lavoie
00011  
00012           This library is free software; you can redistribute it and/or
00013           modify it under the terms of the GNU Library General Public
00014           License as published by the Free Software Foundation; either
00015           version 2 of the License, or (at your option) any later version.
00016  
00017           This library is distributed in the hope that it will be useful,
00018           but WITHOUT ANY WARRANTY; without even the implied warranty of
00019           MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00020           Library General Public License for more details.
00021  
00022           You should have received a copy of the GNU Library General Public
00023           License along with this library; if not, write to the Free
00024           Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00025 =============================================================================*/
00026 
00027 #ifndef _MATRIX_galloc_h_
00028 #define _MATRIX_galloc_h_
00029 
00030 // this file is included inside the PLib namespace
00031 
00032 //template <class T, const int D> class HPoint_nD ;
00033 
00034   template <class T> 
00035     void resizeBasicArray(BasicArray<T>& a, int nsize) ;
00036   
00037   template <class T, const int D> 
00038     void resizeBasicArrayHPoint(BasicArray<HPoint_nD<T,D> >&, int) ;
00039 
00040   // forward declartations of specialisations:
00041   template<> void resizeBasicArray(BasicArray<HPoint_nD<float,2> >& a, int);
00042   template<> void resizeBasicArray(BasicArray<HPoint_nD<double,2> >& a, int);
00043   template<> void resizeBasicArray(BasicArray<HPoint_nD<float,3> >& a, int );
00044   template<> void resizeBasicArray(BasicArray<HPoint_nD<double,3> >& a, int);
00045   
00046 
00047 
00048 #ifdef HAVE_ISO_FRIEND_DECL
00049  
00050 #define FRIEND_ARRAY_ALLOCATOR \
00051   friend void resizeBasicArray<>(BasicArray<T>&, int) ; \
00052   friend void resizeBasicArrayHPoint<>(BasicArray<HPoint_nD<float,2> >&,int); \
00053   friend void resizeBasicArrayHPoint<>(BasicArray<HPoint_nD<double,2> >&,int);\
00054   friend void resizeBasicArrayHPoint<>(BasicArray<HPoint_nD<float,3> >&,int); \
00055   friend void resizeBasicArrayHPoint<>(BasicArray<HPoint_nD<double,3> >&,int); 
00056 
00057 #else
00058 
00059   // explicit instantiation
00060   template void resizeBasicArrayHPoint(BasicArray<HPoint_nD<float,2> >&,int);
00061   template void resizeBasicArrayHPoint(BasicArray<HPoint_nD<double,2> >&,int);
00062   template void resizeBasicArrayHPoint(BasicArray<HPoint_nD<float,3> >&,int);
00063   template void resizeBasicArrayHPoint(BasicArray<HPoint_nD<double,3> >&,int);
00064 
00065 
00066 #define FRIEND_ARRAY_ALLOCATOR \
00067   friend void resizeBasicArray(BasicArray<T>&, int) ; \
00068   friend void resizeBasicArrayHPoint(BasicArray<HPoint_nD<float,2> >&,int); \
00069   friend void resizeBasicArrayHPoint(BasicArray<HPoint_nD<double,2> >&,int);\
00070   friend void resizeBasicArrayHPoint(BasicArray<HPoint_nD<float,3> >&,int); \
00071   friend void resizeBasicArrayHPoint(BasicArray<HPoint_nD<double,3> >&,int); 
00072 
00073 #endif
00074 
00075 
00076 #endif

Generated on Tue Jun 24 13:26:55 2003 for NURBS++ by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002