version 1.1.2.11, 2001/10/01 21:45:41
|
version 1.1.2.13, 2001/10/03 16:55:03
|
|
|
| |
/////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////// |
| |
static void default_delete(void * data) |
|
{ |
|
if( data != NULL) |
|
std::operator delete(data); |
|
} |
|
| |
class PEGASUS_EXPORT thread_data | class PEGASUS_EXPORT thread_data |
{ | { |
| |
public: | public: |
|
static void default_delete(void *data); |
|
|
thread_data( Sint8 *key ) : _delete_func(NULL) , _data(NULL), _size(0) | thread_data( Sint8 *key ) : _delete_func(NULL) , _data(NULL), _size(0) |
{ | { |
PEGASUS_ASSERT(key != NULL); | PEGASUS_ASSERT(key != NULL); |
|
|
_key = new Sint8 [keysize + 1]; | _key = new Sint8 [keysize + 1]; |
memcpy(_key, key, keysize); | memcpy(_key, key, keysize); |
_key[keysize] = 0x00; | _key[keysize] = 0x00; |
_data = std:: operator new ( _size ); |
_data = ::operator new(_size) ; |
| |
} | } |
| |
|
|
_key = new Sint8[keysize + 1]; | _key = new Sint8[keysize + 1]; |
memcpy(_key, key, keysize); | memcpy(_key, key, keysize); |
_key[keysize] = 0x00; | _key[keysize] = 0x00; |
_data = std::operator new(_size); |
_data = ::operator new(_size); |
memcpy(_data, data, size); | memcpy(_data, data, size); |
} | } |
| |
|
|
delete [] _key; | delete [] _key; |
} | } |
| |
void *get_data(void ); |
void put_data(void (*del)(void *), size_t size, void *data ) throw(NullPointer) |
Uint32 get_size(void); |
|
void *put_data(void (*delete_func) (void *), Uint32 size, void *data ) |
|
{ | { |
void *old_data = data; |
if(_data != NULL) |
_delete_func = delete_func; |
if(_delete_func != NULL) |
|
_delete_func(_data); |
|
|
|
_delete_func = del; |
_data = data; | _data = data; |
_size = size; | _size = size; |
return(old_data); |
return ; |
|
} |
|
|
|
size_t get_size(void) { return _size; } |
|
|
|
void get_data(void **data, size_t *size) |
|
{ |
|
if(data == NULL || size == NULL) |
|
throw NullPointer(); |
|
|
|
*data = _data; |
|
*size = _size; |
|
return; |
|
|
} | } |
|
|
|
void copy_data(void **buf, size_t *size) throw(BufferTooSmall, NullPointer) |
|
{ |
|
if((buf == NULL) || (size == NULL)) |
|
throw NullPointer() ; |
|
*buf = ::operator new(_size); |
|
*size = _size; |
|
memcpy(*buf, _data, _size); |
|
return; |
|
} |
|
|
inline Boolean operator==(const void *key) const | inline Boolean operator==(const void *key) const |
{ | { |
if ( ! strcmp(_key, (Sint8 *)key)) | if ( ! strcmp(_key, (Sint8 *)key)) |