29 _controlfp_s(&old_val,p_val,mask);
34 _controlfp_s(&dummy,old_val,mask);
60 __control87_2(p_val,p_mask,NULL,&
m_oldval);
80 template<
typename T>
static void release(
T* p_ptr) {
delete p_ptr;}
84 template<
typename T>
static void release(
T* p_ptr) {
delete[] p_ptr;}
88 static void release(
void * p_ptr) {free(p_ptr);}
92 template<
typename T,
typename t_releaser = releaser_delete >
116 ptrholder_t(
const t_self &) {
throw pfc::exception_not_implemented();}
117 const t_self &
operator=(
const t_self & ) {
throw pfc::exception_not_implemented();}
123 template<
typename t_releaser>
147 ptrholder_t(
const t_self &) {
throw pfc::exception_not_implemented();}
148 const t_self &
operator=(
const t_self & ) {
throw pfc::exception_not_implemented();}
155 template<
typename t_type,t_type p_initval>
165 template<
typename t_base>
182 template<
typename t_base>
187 template<
typename TClass>
203 template<
typename TClass>
232 m_obj->m_data =
this;
247 enum {slice = 1024*1024};
253 m_data.set_size( (newSize + slice - 1) / slice );
255 for(
size_t walk = 0; walk < m_data.get_size(); ++walk) {
256 size_t thisSlice = slice;
257 if (walk + 1 == m_data.get_size()) {
258 size_t cut = newSize % slice;
259 if (cut) thisSlice = cut;
261 void* ptr = malloc(thisSlice);
262 if (ptr == NULL) {clear();
throw std::bad_alloc();}
263 m_data[walk] = (uint8_t*)ptr;
267 size_t size()
const {
return m_size;}
269 for(
size_t walk = 0; walk < m_data.get_size(); ++walk) free(m_data[walk]);
273 void read(
void * ptrOut,
size_t bytes,
size_t offset) {
274 PFC_ASSERT( offset + bytes <= size() );
275 uint8_t * outWalk = (uint8_t*) ptrOut;
277 size_t o1 = offset / slice, o2 = offset % slice;
278 size_t delta = slice - o2;
if (delta > bytes) delta = bytes;
279 memcpy(outWalk, m_data[o1] + o2, delta);
285 void write(
const void * ptrIn,
size_t bytes,
size_t offset) {
286 PFC_ASSERT( offset + bytes <= size() );
287 const uint8_t * inWalk = (
const uint8_t*) ptrIn;
289 size_t o1 = offset / slice, o2 = offset % slice;
290 size_t delta = slice - o2;
if (delta > bytes) delta = bytes;
291 memcpy(m_data[o1] + o2, inWalk, delta);
297 uint8_t *
_slicePtr(
size_t which) {
return m_data[which];}
300 if (which + 1 == _sliceCount()) {
301 size_t s = m_size % slice;
310 PFC_CLASS_NOT_COPYABLE_EX(bigmem)
314 double exp_int(
double base,
int exp );
sse_control(unsigned p_mask, unsigned p_val)
array_t< uint8_t * > m_data
double exp_int(double base, int exp)
objDestructNotifyScope(objDestructNotify &obj)
t_self & operator>>(t_self &p_dest)
void write(const void *ptrIn, size_t bytes, size_t offset)
static const t_instanceList & instanceList()
static void release(T *p_ptr)
instanceTrackerV2(const t_self &p_other)
ptrholder_t(const t_self &)
t_type replace_null_t(t_type &p_var)
size_t _sliceSize(size_t which)
objDestructNotifyData * m_data
objDestructNotifyData * m_next
static void release(T *p_ptr)
uint8_t * _slicePtr(size_t which)
pfc::avltree_t< TClass * > t_instanceList
t_self & operator>>(t_self &p_dest)
instanceTracker< t_base > t_self
static void release(void *p_ptr)
void enumerate(t_callback &p_callback) const
~objDestructNotifyScope()
instanceTrackerV2< TClass > t_self
fpu_control_flushdenormal()
static t_instanceList g_list
fpu_control(unsigned p_mask, unsigned p_val)
void read(void *ptrOut, size_t bytes, size_t offset)
const t_self & operator=(const t_self &)
vartoggle_t< bool > booltoggle
sse_control_flushdenormal()
t_self & operator<<(t_self &p_source)
t_self & operator<<(t_self &p_source)
TEMPLATE_CONSTRUCTOR_FORWARD_FLOOD_WITH_INITIALIZER(instanceTracker, t_base,{g_list+=this;})
fpu_control_roundnearest()
const t_self & operator=(const t_self &)
Assumes t_freefunc to never throw exceptions.
void resize(size_t newSize)
pfc::avltree_t< t_self * > t_list
ptrholder_t(const t_self &)
vartoggle_t(T &p_var, const T &val)
const t_self & operator=(T *p_ptr)
static const t_list & instanceList()
ptrholder_t< T, t_releaser > t_self
ptrholder_t< T, t_releaser > t_self
static void forEach(t_callback &p_callback)
const t_self & operator=(T *p_ptr)
static void forEach(t_callback &p_callback)
instanceTracker(const t_self &p_other)