removed static constant FIXED_STORAGE_SIZE from is_any_of to

make the code compile on borland compilers



[SVN r48218]
This commit is contained in:
Pavol Droba
2008-08-19 14:32:59 +00:00
parent 1f5542b44c
commit 760af1798b

View File

@ -69,9 +69,7 @@ namespace boost {
{ {
private: private:
// set cannot operate on const value-type // set cannot operate on const value-type
typedef typename remove_const<CharT>::type set_value_type; typedef typename ::boost::remove_const<CharT>::type set_value_type;
// Size of the static storage (size of pointer*2)
static const ::std::size_t FIXED_STORAGE_SIZE = sizeof(set_value_type*)*2;
public: public:
// Boost.Lambda support // Boost.Lambda support
@ -88,7 +86,7 @@ namespace boost {
m_Size=Size; m_Size=Size;
set_value_type* Storage=0; set_value_type* Storage=0;
if(m_Size<=FIXED_STORAGE_SIZE) if(use_fixed_storage(m_Size))
{ {
// Use fixed storage // Use fixed storage
Storage=&m_Storage.m_fixSet[0]; Storage=&m_Storage.m_fixSet[0];
@ -113,7 +111,7 @@ namespace boost {
const set_value_type* SrcStorage=0; const set_value_type* SrcStorage=0;
set_value_type* DestStorage=0; set_value_type* DestStorage=0;
if(m_Size<=FIXED_STORAGE_SIZE) if(use_fixed_storage(m_Size))
{ {
// Use fixed storage // Use fixed storage
DestStorage=&m_Storage.m_fixSet[0]; DestStorage=&m_Storage.m_fixSet[0];
@ -134,7 +132,7 @@ namespace boost {
// Destructor // Destructor
~is_any_ofF() ~is_any_ofF()
{ {
if(m_Size>FIXED_STORAGE_SIZE && m_Storage.m_dynSet!=0) if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
{ {
delete [] m_Storage.m_dynSet; delete [] m_Storage.m_dynSet;
} }
@ -147,14 +145,14 @@ namespace boost {
const set_value_type* SrcStorage=0; const set_value_type* SrcStorage=0;
set_value_type* DestStorage=0; set_value_type* DestStorage=0;
if(Other.m_Size<=FIXED_STORAGE_SIZE) if(use_fixed_storage(Other.m_Size))
{ {
// Use fixed storage // Use fixed storage
DestStorage=&m_Storage.m_fixSet[0]; DestStorage=&m_Storage.m_fixSet[0];
SrcStorage=&Other.m_Storage.m_fixSet[0]; SrcStorage=&Other.m_Storage.m_fixSet[0];
// Delete old storage if was present // Delete old storage if was present
if(m_Size>FIXED_STORAGE_SIZE && m_Storage.m_dynSet!=0) if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
{ {
delete [] m_Storage.m_dynSet; delete [] m_Storage.m_dynSet;
} }
@ -172,7 +170,7 @@ namespace boost {
SrcStorage=Other.m_Storage.m_dynSet; SrcStorage=Other.m_Storage.m_dynSet;
// Delete old storage if necessary // Delete old storage if necessary
if(m_Size>FIXED_STORAGE_SIZE && m_Storage.m_dynSet!=0) if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
{ {
delete [] m_Storage.m_dynSet; delete [] m_Storage.m_dynSet;
} }
@ -183,7 +181,7 @@ namespace boost {
m_Size=Other.m_Size; m_Size=Other.m_Size;
} }
// Use fixed storage // Copy the data
::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size); ::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
return *this; return *this;
@ -194,12 +192,19 @@ namespace boost {
bool operator()( Char2T Ch ) const bool operator()( Char2T Ch ) const
{ {
const set_value_type* Storage= const set_value_type* Storage=
(m_Size<=FIXED_STORAGE_SIZE) (use_fixed_storage(m_Size))
? &m_Storage.m_fixSet[0] ? &m_Storage.m_fixSet[0]
: m_Storage.m_dynSet; : m_Storage.m_dynSet;
return ::std::binary_search(Storage, Storage+m_Size, Ch); return ::std::binary_search(Storage, Storage+m_Size, Ch);
} }
private:
// check if the size is eligible for fixed storage
static bool use_fixed_storage(std::size_t size)
{
return size<=sizeof(set_value_type*)*2;
}
private: private:
// storage // storage
@ -207,7 +212,7 @@ namespace boost {
union union
{ {
set_value_type* m_dynSet; set_value_type* m_dynSet;
set_value_type m_fixSet[FIXED_STORAGE_SIZE]; set_value_type m_fixSet[sizeof(set_value_type*)*2];
} }
m_Storage; m_Storage;