示例#1
0
文件: MTentry.cpp 项目: voidcycles/m3
GiSTcompressedEntry
MTentry::Compress() const
{
    GiSTcompressedEntry compressedEntry;
    double rmin=((MTkey *)key)->minradius(), rmax=((MTkey *)key)->maxradius(), dist=((MTkey *)key)->distance;
    int sizeofObject=((MTkey *)key)->object().CompressedLength();
    BOOL splitted=((MTkey *)key)->splitted, recomp=((MTkey *)key)->recomp;

    compressedEntry.key=new char[CompressedLength()];
    ((MTkey *)key)->object().Compress(compressedEntry.key);	// compress the object
    memcpy(compressedEntry.key+sizeofObject, &rmin, sizeof(double));
    memcpy(compressedEntry.key+sizeofObject+sizeof(double), &rmax, sizeof(double));
    memcpy(compressedEntry.key+sizeofObject+2*sizeof(double), &dist, sizeof(double));
    memcpy(compressedEntry.key+sizeofObject+3*sizeof(double), &splitted, sizeof(BOOL));
    memcpy(compressedEntry.key+sizeofObject+3*sizeof(double)+sizeof(BOOL), &recomp, sizeof(BOOL));
//	Object obj(compressedEntry.key);	// decompress the object
    compressedEntry.keyLen=CompressedLength();
    compressedEntry.ptr=ptr;
    return compressedEntry;
}
示例#2
0
GiSTcompressedEntry
MTentry::Compress () const
{
	double rmin = ((MTkey *)key)->MinRadius(), rmax = ((MTkey *)key)->MaxRadius(), dist = ((MTkey *)key)->distance;
	BOOL splitted = ((MTkey *)key)->splitted, recomp = ((MTkey *)key)->recomp;

	GiSTcompressedEntry compressedEntry;
	compressedEntry.keyLen = CompressedLength ();
	compressedEntry.ptr = ptr;
	compressedEntry.key = new char[compressedEntry.keyLen];
	((MTkey *)key)->object().Compress(compressedEntry.key);  // compress the object

	int objSize = ((MTkey *)key)->object().CompressedLength ();
	memcpy (compressedEntry.key+objSize, &rmin, sizeof(double));
	memcpy (compressedEntry.key+objSize+sizeof(double), &rmax, sizeof(double));
	memcpy (compressedEntry.key+objSize+2*sizeof(double), &dist, sizeof(double));
	memcpy (compressedEntry.key+objSize+3*sizeof(double), &splitted, sizeof(BOOL));
	memcpy (compressedEntry.key+objSize+3*sizeof(double)+sizeof(BOOL), &recomp, sizeof(BOOL));

	return compressedEntry;
}