Added fixes for:

Compilers that pretend to be Visual C++
export of memory management code


[SVN r18955]
This commit is contained in:
John Maddock
2003-07-07 11:44:00 +00:00
parent 5c0a6398ab
commit c32c644a38
4 changed files with 55 additions and 7 deletions

View File

@ -232,13 +232,13 @@ using std::distance;
*
****************************************************************************/
#if defined(BOOST_MSVC) || defined(__ICL)
#if defined(_MSC_VER) && (_MSC_VER >= 1200) && defined(_MSC_EXTENSIONS)
# if defined(_DEBUG)
# define BOOST_REGEX_CALL __cdecl
# else
# define BOOST_REGEX_CALL __fastcall
# endif
# define BOOST_REGEX_CCALL __stdcall
# define BOOST_REGEX_CCALL __cdecl
#endif
#if defined(__BORLANDC__)
@ -556,5 +556,19 @@ inline void pointer_construct(T* p, const T& t)
}} // namespaces
#endif
/*****************************************************************************
*
* helper memory allocation functions:
*
****************************************************************************/
#if defined(__cplusplus) && defined(BOOST_REGEX_NON_RECURSIVE)
namespace boost{ namespace re_detail{
BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block();
BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void*);
}} // namespaces
#endif
#endif

View File

@ -442,7 +442,6 @@ private:
#ifdef BOOST_REGEX_RECURSIVE
#include <boost/regex/v4/perl_matcher_recursive.hpp>
#else
#include <boost/regex/v4/mem_block_cache.hpp>
#include <boost/regex/v4/perl_matcher_non_recursive.hpp>
#endif
// this one has to be last:

View File

@ -91,7 +91,7 @@ struct save_state_init
save_state_init(saved_state** base, saved_state** end)
: stack(base)
{
*base = static_cast<saved_state*>(block_cache.get());
*base = static_cast<saved_state*>(get_mem_block());
*end = reinterpret_cast<saved_state*>(reinterpret_cast<char*>(*base)+BOOST_REGEX_BLOCKSIZE);
--(*end);
new (*end)saved_state(0);
@ -99,7 +99,7 @@ struct save_state_init
}
~save_state_init()
{
block_cache.put(*stack);
put_mem_block(*stack);
*stack = 0;
}
};
@ -145,7 +145,7 @@ void perl_matcher<BidiIterator, Allocator, traits, Allocator2>::extend_stack()
--used_block_count;
saved_state* stack_base;
saved_state* backup_state;
stack_base = static_cast<saved_state*>(block_cache.get());
stack_base = static_cast<saved_state*>(get_mem_block());
backup_state = reinterpret_cast<saved_state*>(reinterpret_cast<char*>(stack_base)+BOOST_REGEX_BLOCKSIZE);
saved_extra_block* block = static_cast<saved_extra_block*>(backup_state);
--block;
@ -799,7 +799,7 @@ bool perl_matcher<BidiIterator, Allocator, traits, Allocator2>::unwind_extra_blo
m_stack_base = pmp->base;
m_backup_state = pmp->end;
boost::re_detail::inplace_destroy(pmp);
block_cache.put(condemmed);
put_mem_block(condemmed);
return true; // keep looking
}