00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _GLASS_MSVC_HH_
00022 #define _GLASS_MSVC_HH_
00023
00024
00029 #if defined(_MSC_VER)
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 # if defined(LIBGLASS_DLL)
00045 # if defined(LIBGLASS_EXPORTS)
00046 # define LIBGLASS_API __declspec(dllexport)
00047 # define LIBGLASS_IMP_TEMPLATE
00048 # else
00049 # define LIBGLASS_API __declspec(dllimport)
00050 # define LIBGLASS_IMP_TEMPLATE extern
00051 # endif // LIBGLASS_EXPORTS
00052 # else
00053 # define LIBGLASS_API
00054 # define LIBGLASS_IMP_TEMPLATE
00055 # endif // LIBGLASS_DLL
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 # pragma warning(disable:4786)
00075
00076
00077 # pragma warning(disable:4503)
00078
00079 # pragma warning( disable: 4290 )
00080
00081
00082
00083
00084
00085 # pragma warning( push, 3 )
00086 # include <iostream>
00087 # include <utility>
00088 # include <vector>
00089 # include <list>
00090 # include <algorithm>
00091 # include <fstream>
00092 # include <memory>
00093 # include <map>
00094
00095 # pragma warning( pop )
00096
00097
00098 # if !defined(_STLPORT_VERSION)
00099 error We require STLport standard template library
00100 # endif // _STLPORT_VERSION
00101
00102
00103
00104 # if defined(LIBGLASS_DLL)
00105
00106
00107 # pragma warning( push )
00108
00109 # pragma warning(disable:4660)
00110
00111
00112
00113
00114 #include "types.h"
00115
00116
00117
00118
00119
00120
00121
00122
00127 # define LIBGLASS_IMP_TEMPLATE_STL_MAP(Ta,Tb) \
00128 LIBGLASS_IMP_TEMPLATE template struct LIBGLASS_API _STL::less<Ta>; \
00129 LIBGLASS_IMP_TEMPLATE template struct LIBGLASS_API _STL::less<Tb>; \
00130 LIBGLASS_IMP_TEMPLATE template class LIBGLASS_API _STL::_STLP_alloc_proxy<_STL::_rbT__B<_STL::map<Ta,Tb>::value_type,_STL::allocator<_STL::pair<const Ta,Tb> > >::_Node *,_STL::_rbT__B<_STL::map<Ta,Tb>::value_type,_STL::allocator<_STL::pair<const Ta,Tb> > >::_Node,_STL::_rbT__B<_STL::map<Ta,Tb>::value_type,_STL::allocator<_STL::pair<const Ta,Tb> > >::_M_node_allocator_type>; \
00131 LIBGLASS_IMP_TEMPLATE template class LIBGLASS_API _STL::_Rb_tree<_STL::map<Ta,Tb>::key_type,_STL::map<Ta,Tb>::value_type,_STL::_S1st<_STL::map<Ta,Tb>::value_type>,_STL::map<Ta,Tb>::key_compare,_STL::allocator<_STL::pair<const Ta,Tb> > >; \
00132 LIBGLASS_IMP_TEMPLATE template class LIBGLASS_API _STL::map<Ta,Tb>
00133
00138 #define LIBGLASS_IMP_TEMPLATE_STL_LIST(T) \
00139 LIBGLASS_IMP_TEMPLATE template class LIBGLASS_API _STL::_STLP_alloc_proxy<_STL::_List_base<T,_STL::allocator<T> >::_Node *,_STL::_List_base<T,_STL::allocator<T> >::_Node,_STL::_List_base<T,_STL::allocator<T> >::_Node_allocator_type>; \
00140 LIBGLASS_IMP_TEMPLATE template class LIBGLASS_API _STL::list<T>
00141
00146 #define LIBGLASS_IMP_TEMPLATE_STL_SET(T) \
00147 LIBGLASS_IMP_TEMPLATE template struct LIBGLASS_API _STL::less<T>; \
00148 LIBGLASS_IMP_TEMPLATE template class LIBGLASS_API _STL::_STLP_alloc_proxy<_STL::_rbT__B<_STL::set<T>::value_type,_STL::allocator<T> >::_Node *,_STL::_rbT__B<_STL::set<T>::value_type,_STL::allocator<T> >::_Node,_STL::_rbT__B<_STL::set<T>::value_type,_STL::allocator<T> >::_M_node_allocator_type>; \
00149 LIBGLASS_IMP_TEMPLATE template class LIBGLASS_API _STL::_Rb_tree<_STL::set<T>::key_type,_STL::set<T>::value_type,_STL::_Identity<_STL::set<T>::value_type>,_STL::set<T>::key_compare,_STL::allocator<T> >; \
00150 LIBGLASS_IMP_TEMPLATE template class LIBGLASS_API _STL::set<T>
00151
00152
00153
00154
00155
00156 # pragma warning( pop )
00157
00158
00159 # endif // LIBGLASS_DLL
00160
00161
00162 #else // _MSC_VER
00163
00164
00165
00166 # define LIBGLASS_API
00167
00168 #endif // _MSC_VER
00169
00170
00171
00172
00173 #endif // _GLASS_MSVC_HH_