Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
126
Src/nde/osx/IndexField.cpp
Normal file
126
Src/nde/osx/IndexField.cpp
Normal file
|
@ -0,0 +1,126 @@
|
|||
/* ---------------------------------------------------------------------------
|
||||
Nullsoft Database Engine
|
||||
--------------------
|
||||
codename: Near Death Experience
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
|
||||
IndexField Class
|
||||
|
||||
--------------------------------------------------------------------------- */
|
||||
|
||||
#include "nde.h"
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
IndexField::IndexField(unsigned char id, int Pos, int type, CFStringRef FieldName)
|
||||
{
|
||||
InitField();
|
||||
Type = FIELD_INDEX;
|
||||
Name = (CFStringRef)CFRetain(FieldName);
|
||||
ID = id;
|
||||
Position = Pos;
|
||||
DataType = type;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
void IndexField::InitField(void)
|
||||
{
|
||||
index = 0;
|
||||
Type = FIELD_INDEX;
|
||||
Name = NULL;
|
||||
ID = 0;
|
||||
Position = -1;
|
||||
DataType = FIELD_UNKNOWN;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
IndexField::IndexField()
|
||||
{
|
||||
InitField();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
IndexField::~IndexField()
|
||||
{
|
||||
if (Name)
|
||||
CFRelease(Name);
|
||||
delete index;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
void IndexField::ReadTypedData(const uint8_t *data, size_t len)
|
||||
{
|
||||
unsigned char c;
|
||||
int pos=0;
|
||||
CHECK_INT(len);
|
||||
Position = GET_INT(); pos += 4;
|
||||
CHECK_INT(len);
|
||||
DataType = GET_INT(); pos += 4;
|
||||
CHECK_CHAR(len);
|
||||
c = GET_CHAR(); pos++;
|
||||
if (c)
|
||||
{
|
||||
CHECK_BIN(len, c);
|
||||
if (Name)
|
||||
CFRelease(Name);
|
||||
Name = CFStringCreateWithBytes(kCFAllocatorDefault, data+pos, c, kCFStringEncodingUTF8, false);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
void IndexField::WriteTypedData(uint8_t *data, size_t len)
|
||||
{
|
||||
int pos=0;
|
||||
CHECK_INT(len);
|
||||
PUT_INT(Position); pos += 4;
|
||||
|
||||
CHECK_INT(len);
|
||||
PUT_INT(DataType); pos += 4;
|
||||
CHECK_CHAR(len);
|
||||
|
||||
if (Name)
|
||||
{
|
||||
CFIndex lengthRequired=0;
|
||||
CFStringGetBytes(Name, CFRangeMake(0, CFStringGetLength(Name)), kCFStringEncodingUTF8, 0, false, NULL, 0, &lengthRequired);
|
||||
CHECK_BIN(len, lengthRequired+1);
|
||||
PUT_CHAR(lengthRequired); pos++;
|
||||
|
||||
CFStringGetBytes(Name, CFRangeMake(0, CFStringGetLength(Name)), kCFStringEncodingUTF8, 0, false, data+pos, lengthRequired, 0);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
CFStringRef IndexField::GetIndexName(void)
|
||||
{
|
||||
return Name;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
size_t IndexField::GetDataSize(void)
|
||||
{
|
||||
if (Name)
|
||||
{
|
||||
CFIndex lengthRequired=0;
|
||||
CFStringGetBytes(Name, CFRangeMake(0, CFStringGetLength(Name)), kCFStringEncodingUTF8, 0, false, NULL, 0, &lengthRequired);
|
||||
return lengthRequired+9;
|
||||
}
|
||||
else
|
||||
return 9;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
int IndexField::Compare(Field * /*Entry*/)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
int IndexField::TranslateToIndex(int Id, IndexField *toindex)
|
||||
{
|
||||
if (index && toindex && toindex->index)
|
||||
return index->TranslateIndex(Id, toindex->index);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue