You need to sign in or sign up before continuing.
Commit 5811033c authored by Ivan Donchevskiy's avatar Ivan Donchevskiy

Writing fields in classes CycleStorage and TableBlockStorage using memcpy

parent 30d0f9a7
......@@ -209,8 +209,7 @@ bool CycleStorage::AddRow(char* str)
if(head==-1)
{
jrn->status=1;
for(k=0;k<inf_size;k++)
*((char*)(jrn)+sizeof(CycleStorageElem)+k)=*(str+k);
memcpy((void*)((char*)jrn+sizeof(CycleStorageElem)),(void*)str,inf_size);
filewrite(jrn,0);
head=0;
tail=0;
......@@ -219,8 +218,7 @@ bool CycleStorage::AddRow(char* str)
if(head==tail)
{
jrn->status=2;
for(k=0;k<inf_size;k++)
*((char*)(jrn)+sizeof(CycleStorageElem)+k)=*(str+k);
memcpy((void*)((char*)jrn+sizeof(CycleStorageElem)),(void*)str,inf_size);
filewrite(jrn,1);
tail=1;
return true;
......@@ -242,8 +240,7 @@ bool CycleStorage::AddRow(char* str)
if(jrn->status==0)
{
jrn->status=2;
for(k=0;k<inf_size;k++)
*((char*)(jrn)+sizeof(CycleStorageElem)+k)=*(str+k);
memcpy((void*)((char*)jrn+sizeof(CycleStorageElem)),(void*)str,inf_size);
filewrite(jrn,tail);
return true;
}
......@@ -252,8 +249,7 @@ bool CycleStorage::AddRow(char* str)
head++;
if(head>=size) head=0;
jrn->status=i;
for(k=0;k<inf_size;k++)
*((char*)(jrn)+sizeof(CycleStorageElem)+k)=*(str+k);
memcpy((void*)((char*)jrn+sizeof(CycleStorageElem)),(void*)str,inf_size);
filewrite(jrn,tail);
fseek(file,seekpos+head*(sizeof(CycleStorageElem)+inf_size),0);
fread(jrn,(sizeof(CycleStorageElem)+inf_size),1,file);
......
......@@ -246,16 +246,13 @@ bool TableBlockStorage::AddRow(char* key, char* value)
if(pos>=0)
{
mem[pos]->count=++max;
for(k=0;k<inf_size;k++)
*((char*)mem[pos]+sizeof(TableBlockStorageElem)+k_size+k)=*(value+k);
memcpy((void*)((char*)mem[pos]+sizeof(TableBlockStorageElem)+k_size),(void*)value,inf_size);
filewrite(mem[pos],cur_block*block_size+pos);
return true;;
}
mem[empty]->count=++max;
for(k=0;k<k_size;k++)
*((char*)mem[empty]+sizeof(TableBlockStorageElem)+k)=*(key+k);
for(k=0;k<inf_size;k++)
*((char*)mem[empty]+sizeof(TableBlockStorageElem)+k_size+k)=*(value+k);
memcpy((void*)((char*)mem[empty]+sizeof(TableBlockStorageElem)),(void*)key,k_size);
memcpy((void*)((char*)mem[empty]+sizeof(TableBlockStorageElem)+k_size),(void*)value,inf_size);
filewrite(mem[empty],cur_block*block_size+empty);
return true;
}
......@@ -290,8 +287,7 @@ char* TableBlockStorage::FindKeyValue(char* key, char* val)
if((*((char*)mem[i]+sizeof(TableBlockStorageElem))!=0)&&(mem[i]>=0))
if(KeyCompare((char*)mem[i],key,k_size))
{
for(k=0;k<inf_size;k++)
*(val+k)=*((char*)mem[i]+sizeof(TableBlockStorageElem)+k_size+k);
memcpy((void*)val,(void*)((char*)mem[i]+sizeof(TableBlockStorageElem)+k_size),inf_size);
return val;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment