📄 block.h
字号:
// Block.h: interface for the CBlock class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_BLOCK_H__FFBDA8AC_79D4_4609_A6DF_8B608415ED94__INCLUDED_)
#define AFX_BLOCK_H__FFBDA8AC_79D4_4609_A6DF_8B608415ED94__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "DEF.h"
#include "afx.h"
#include "Relationship.h"
#include "Record.h"
#include "DatabaseFile.h"
#include "Update.h"
//溢出块没有表项,record_num==-1
class Record;
/*typedef struct OffsetTerm
{
//写入文件的偏移量表项有7个字节
WORD offset;
BYTE isexist;
int time;//记录时间戳
////////////////////////////////////
Record *r;
OffsetTerm *next;
OffsetTerm *prior;
OffsetTerm(WORD o,BYTE i,int t,Record *rcd,OffsetTerm *n,OffsetTerm *p)
:offset(o),isexist(i),time(t),r(rcd),next(n),prior(p)
{}
}*OffsetTable;//写入文件的偏移量表项有7个字节,不包括指针*/
/*typedef struct Space
{
WORD offset;
WORD large;
Space *prior;
Space *next;
//Space(WORD o,WORD l):offset(o),large(l)
{
prior=next=NULL;
}
}*SpaceTable;*/
class CBlock : public CMemFile
{
public:
//void DeleteRecordNoRet(UINT uOffset,Relatioship *R);
//Record UpdateRecord(UINT uOffset,CUpdate up,Relationship *R);
Record *DeleteRecord(UINT uOffset,Relationship *R);
Record * ReadRecord(UINT offset,Relationship *R);
BOOL WriteBack();
PDB ID;
BYTE rtag:4,wtag:4;
bool view;
BYTE *Buffer;
BOOL WriteRecord(Record *rcd,UINT uOffset,PDB addr1=0,PDB addr2=0);
CBlock(UINT nGrowBytes = 1024 );
CBlock(BYTE* lpBuffer, UINT nBufferSize,PDB db_addr,bool vew,UINT nGrowBytes = 0);
void ReWrite(WORD offset,Record *r,WORD StartNo
,WORD EndNo,UINT length,UINT occupy,WORD forward_addr);
//CBlock *CreateFloodBlock();
//CBlock *GetFloodBlock(UINT index);
//int AddOffsetTerm(UINT pri,OffsetTerm *o,bool read_committed);//pri为0表示"插"在最后
void Attach( BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0 );
//int WriteRecord(Space *s,Record *r);//以外返回UNSUCCESS
int GetTime();
virtual ~CBlock();
};
#endif // !defined(AFX_BLOCK_H__FFBDA8AC_79D4_4609_A6DF_8B608415ED94__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -