45__rw_realloc (
void *
array, _RWSTD_SIZE_T
size, _RWSTD_SIZE_T &
n,
int inx)
75 operator delete (
array);
87 int ios_base::xalloc ()
97void ios_base::_C_fire_event (
event ev,
bool reentrant)
102 _C_usr_data::_C_event_cb *cba = _C_usr->_C_cbarray;
103 _RWSTD_SIZE_T cbsize = _C_usr->_C_cbsize;
124 _C_set (_C_state |
badbit, _C_except | _RW::__rw_nolock,
133 memcpy (cba, _C_usr->_C_cbarray, cbsize *
sizeof *cba);
136 if (!(
flags () & _RW::__rw_nolock))
141 for (_RWSTD_SIZE_T
i = cbsize;
i-- > 0; ) {
147 cba [
i]._C_fn (ev, *
this, cba [
i]._C_index);
151 return_temporary_buffer (cba);
155 if (!(
flags () & _RW::__rw_nolock))
161 return_temporary_buffer (cba);
166 if (cba && !(
flags () & _RW::__rw_nolock))
176_C_copyfmt (
const ios_base &
rhs,
177 void *dst,
const void *src, _RWSTD_SIZE_T
size)
182 typedef _C_usr_data::_C_event_cb EventCB;
189 _RWSTD_SIZE_T a_size [3];
201 const fmtflags flagmask = ~(_RW::__rw_nolock | _RW::__rw_nolockbuf);
211 ptie =
rhs._C_usr->_C_tie;
214 const _C_usr_data*
const rusr =
rhs._C_usr;
221 a_size [0] = rusr->_C_isize;
222 a_size [1] = rusr->_C_psize;
223 a_size [2] = rusr->_C_cbsize;
226 a_size [0] ?
operator new (a_size [0] *
sizeof *ia) : 0);
229 a_size [1] ?
operator new (a_size [1] *
sizeof *pa) : 0);
232 a_size [2] ?
operator new (a_size [2] *
sizeof *cba) : 0);
235 memcpy (ia, rusr->_C_iarray, a_size [0] *
sizeof *ia);
236 memcpy (pa, rusr->_C_parray, a_size [1] *
sizeof *pa);
237 memcpy (cba, rusr->_C_cbarray, a_size [2] *
sizeof *cba);
242 memset (a_size, 0,
sizeof a_size);
249 fmtfl =
rhs._C_fmtfl;
252 except =
rhs._C_except;
257 if (
size <=
sizeof srcbuf)
258 src = memcpy (srcbuf, src,
size);
262 operator delete (ia);
263 operator delete (pa);
264 operator delete (cba);
276 (this->*_C_usr->_C_fire)(erase_event,
true );
280 operator delete (_C_usr->_C_iarray);
281 _C_usr->_C_iarray = 0;
282 _C_usr->_C_isize = 0;
283 operator delete (_C_usr->_C_parray);
284 _C_usr->_C_parray = 0;
285 _C_usr->_C_psize = 0;
286 operator delete (_C_usr->_C_cbarray);
287 _C_usr->_C_cbarray = 0;
288 _C_usr->_C_cbsize = 0;
290 else if (ia || pa || cba || ptie) {
292 _C_usr =
new _C_usr_data ();
294#ifdef _RWSTD_NO_POD_ZERO_INIT
296# ifdef _RWSTD_NO_NEW_THROWS
304 memset (_C_usr, 0,
sizeof *_C_usr);
312 operator delete (ia);
313 operator delete (pa);
314 operator delete (cba);
319 if (ia || pa || cba || ptie) {
322 _C_usr->_C_iarray = ia;
323 _C_usr->_C_parray = pa;
324 _C_usr->_C_cbarray = cba;
326 _C_usr->_C_isize = a_size [0];
327 _C_usr->_C_psize = a_size [1];
328 _C_usr->_C_cbsize = a_size [2];
330 _C_usr->_C_tie = ptie;
332 _C_usr->_C_fire = &ios_base::_C_fire_event;
336 _C_usr_data::_C_dealloc (_C_usr);
341 _C_fmtfl = fmtfl & flagmask | _C_fmtfl & ~flagmask;
350 memcpy (dst, src,
size);
352 if (_C_usr && _C_usr->_C_fire) {
356 (this->*_C_usr->_C_fire)(copyfmt_event,
true );
371 _C_set (_C_state, _C_except | _RW::__rw_nolock, _C_rdbuf);
375long& ios_base::iword (
int inx)
380 _C_usr = _C_usr_data::_C_alloc (&ios_base::_C_fire_event);
382 long*
const ia = _C_usr
393 return (_C_usr->_C_iarray = ia)[
inx];
396 _C_set (_C_state |
badbit, _C_except | _RW::__rw_nolock, _C_rdbuf);
399 static long dummy_iword;
401 return dummy_iword = 0;
405void*& ios_base::pword (
int inx)
410 _C_usr = _C_usr_data::_C_alloc (&ios_base::_C_fire_event);
412 void**
const pa = _C_usr
423 return (_C_usr->_C_parray = pa)[
inx];
426 _C_set (_C_state |
badbit, _C_except | _RW::__rw_nolock, _C_rdbuf);
429 static void *dummy_pword;
431 return dummy_pword = 0;
436register_callback (event_callback
fun,
int inx)
443 _C_usr = _C_usr_data::_C_alloc (&ios_base::_C_fire_event);
445 typedef _C_usr_data::_C_event_cb EventCB;
447 _RWSTD_SIZE_T
sz = 0;
451 sz = _C_usr->_C_cbsize;
453 _RW::__rw_realloc (_C_usr->_C_cbarray,
463 _C_usr->_C_cbarray = cba;
465 _C_usr->_C_cbarray [
sz]._C_index =
inx;
466 _C_usr->_C_cbarray [
sz]._C_fn =
fun;
470 _C_set (_C_state |
badbit, _C_except | _RW::__rw_nolock, _C_rdbuf);
#define _GET_TEMP_BUFFER(type, size)
#define _RWSTD_ATOMIC_PREINCREMENT(x, ignore)
#define _RWSTD_STATIC_CAST(T, x)
#define _RWSTD_NAMESPACE(name)
#define _RWSTD_MT_GUARD(ignore)
#define _RWSTD_ASSERT(ignore)
#define _RWSTD_CONST_CAST(T, x)
#define _RWSTD_ERROR_FIRST