📄 object.h
字号:
//-< OBJECT.H >------------------------------------------------------*--------*
// POST++ Version 1.0 (c) 1998 GARRET * ? *
// (Persistent Object Storage) * /\| *
// * / \ *
// Created: 2-Feb-98 K.A. Knizhnik * / [] \ *
// Last update: 19-Apr-98 K.A. Knizhnik * GARRET *
//-------------------------------------------------------------------*--------*
// Main header file. Persistent object interface.
//-------------------------------------------------------------------*--------*
#ifndef __OBJECT_H__
#define __OBJECT_H__
#include "classinfo.h"
#define new_in(STORAGE, CLASS) new (CLASS::self_class, STORAGE) CLASS
class object {
public:
size_t get_size() const {
storage* sp = storage::find_storage(this);
CS(sp->mutex);
return sp->get_header(this)->size;
}
class_descriptor* get_classinfo() const {
storage* sp = storage::find_storage(this);
CS(sp->mutex);
return sp->get_object_class(sp->get_header(this)->cid);
}
storage* get_storage() const {
return storage::find_storage(this);
}
void* operator new(size_t size, class_descriptor& desc, storage& sp,
size_t varying_size = 0)
{
void* p = sp.allocate(desc.id, size + varying_size);
memset(p, 0, size + varying_size);
return p;
}
void* operator new(size_t, object* ptr) { return ptr; }
void operator delete(void* p) {
if (p != NULL) {
object* obj = (object*)p;
storage::find_storage(obj)->free(obj);
}
}
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -