You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2009/12/04 02:09:20 UTC
svn commit: r887025 - in /lucene/lucy/trunk/core/Lucy: Object/Num.bp
Object/Num.c Test/Object/TestNum.c
Author: marvin
Date: Fri Dec 4 01:09:20 2009
New Revision: 887025
URL: http://svn.apache.org/viewvc?rev=887025&view=rev
Log:
Commit num_serialization.diff from LUCY-81, adding serialization routines to
Integer32, Integer64, Float32 and Float64.
Modified:
lucene/lucy/trunk/core/Lucy/Object/Num.bp
lucene/lucy/trunk/core/Lucy/Object/Num.c
lucene/lucy/trunk/core/Lucy/Test/Object/TestNum.c
Modified: lucene/lucy/trunk/core/Lucy/Object/Num.bp
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/core/Lucy/Object/Num.bp?rev=887025&r1=887024&r2=887025&view=diff
==============================================================================
--- lucene/lucy/trunk/core/Lucy/Object/Num.bp (original)
+++ lucene/lucy/trunk/core/Lucy/Object/Num.bp Fri Dec 4 01:09:20 2009
@@ -68,6 +68,12 @@
public i32_t
Hash_Code(Float32 *self);
+ public void
+ Serialize(Float32 *self, OutStream *outstream);
+
+ public incremented Float32*
+ Deserialize(Float32 *self, InStream *instream);
+
public incremented Float32*
Clone(Float32 *self);
}
@@ -102,6 +108,12 @@
public i32_t
Hash_Code(Float64 *self);
+ public void
+ Serialize(Float64 *self, OutStream *outstream);
+
+ public incremented Float64*
+ Deserialize(Float64 *self, InStream *instream);
+
public incremented Float64*
Clone(Float64 *self);
}
@@ -137,6 +149,12 @@
public i32_t
Hash_Code(Integer32 *self);
+ public void
+ Serialize(Integer32 *self, OutStream *outstream);
+
+ public incremented Integer32*
+ Deserialize(Integer32 *self, InStream *instream);
+
public incremented Integer32*
Clone(Integer32 *self);
}
@@ -176,6 +194,12 @@
public bool_t
Equals(Integer64 *self, Obj *other);
+ public void
+ Serialize(Integer64 *self, OutStream *outstream);
+
+ public incremented Integer64*
+ Deserialize(Integer64 *self, InStream *instream);
+
public incremented Integer64*
Clone(Integer64 *self);
}
Modified: lucene/lucy/trunk/core/Lucy/Object/Num.c
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/core/Lucy/Object/Num.c?rev=887025&r1=887024&r2=887025&view=diff
==============================================================================
--- lucene/lucy/trunk/core/Lucy/Object/Num.c (original)
+++ lucene/lucy/trunk/core/Lucy/Object/Num.c Fri Dec 4 01:09:20 2009
@@ -12,6 +12,8 @@
#include "Lucy/Object/CharBuf.h"
#include "Lucy/Object/Err.h"
#include "Lucy/Object/VTable.h"
+#include "Lucy/Store/InStream.h"
+#include "Lucy/Store/OutStream.h"
Num*
Num_init(Num *self)
@@ -125,6 +127,19 @@
return Float32_new(self->value);
}
+void
+Float32_serialize(Float32 *self, OutStream *outstream)
+{
+ OutStream_Write_F32(outstream, self->value);
+}
+
+Float32*
+Float32_deserialize(Float32 *self, InStream *instream)
+{
+ float value = InStream_Read_F32(instream);
+ return self ? Float32_init(self, value) : Float32_new(value);
+}
+
/***************************************************************************/
Float64*
@@ -171,6 +186,19 @@
return ints[0] ^ ints[1];
}
+void
+Float64_serialize(Float64 *self, OutStream *outstream)
+{
+ OutStream_Write_F64(outstream, self->value);
+}
+
+Float64*
+Float64_deserialize(Float64 *self, InStream *instream)
+{
+ double value = InStream_Read_F64(instream);
+ return self ? Float64_init(self, value) : Float64_new(value);
+}
+
/***************************************************************************/
Integer32*
@@ -216,6 +244,19 @@
return self->value;
}
+void
+Int32_serialize(Integer32 *self, OutStream *outstream)
+{
+ OutStream_Write_C32(outstream, (u32_t)self->value);
+}
+
+Integer32*
+Int32_deserialize(Integer32 *self, InStream *instream)
+{
+ i32_t value = (i32_t)InStream_Read_C32(instream);
+ return self ? Int32_init(self, value) : Int32_new(value);
+}
+
/***************************************************************************/
Integer64*
@@ -280,6 +321,19 @@
return true;
}
+void
+Int64_serialize(Integer64 *self, OutStream *outstream)
+{
+ OutStream_Write_C64(outstream, (u64_t)self->value);
+}
+
+Integer64*
+Int64_deserialize(Integer64 *self, InStream *instream)
+{
+ i64_t value = (i64_t)InStream_Read_C64(instream);
+ return self ? Int64_init(self, value) : Int64_new(value);
+}
+
/* Copyright 2009 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
Modified: lucene/lucy/trunk/core/Lucy/Test/Object/TestNum.c
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/core/Lucy/Test/Object/TestNum.c?rev=887025&r1=887024&r2=887025&view=diff
==============================================================================
--- lucene/lucy/trunk/core/Lucy/Test/Object/TestNum.c (original)
+++ lucene/lucy/trunk/core/Lucy/Test/Object/TestNum.c Fri Dec 4 01:09:20 2009
@@ -2,6 +2,7 @@
#include "Lucy/Util/ToolSet.h"
#include "Lucy/Test.h"
+#include "Lucy/Test/TestUtils.h"
#include "Lucy/Test/Object/TestNum.h"
static void
@@ -167,16 +168,48 @@
DECREF(f32);
}
+static void
+test_serialization(TestBatch *batch)
+{
+ Float32 *f32 = Float32_new(1.33f);
+ Float64 *f64 = Float64_new(1.33);
+ Integer32 *i32 = Int32_new(-1);
+ Integer64 *i64 = Int64_new(-1);
+ Float32 *f32_thaw = (Float32*)TestUtils_freeze_thaw((Obj*)f32);
+ Float64 *f64_thaw = (Float64*)TestUtils_freeze_thaw((Obj*)f64);
+ Integer32 *i32_thaw = (Integer32*)TestUtils_freeze_thaw((Obj*)i32);
+ Integer64 *i64_thaw = (Integer64*)TestUtils_freeze_thaw((Obj*)i64);
+
+ ASSERT_TRUE(batch, Float32_Equals(f32, (Obj*)f32_thaw),
+ "Float32 freeze/thaw");
+ ASSERT_TRUE(batch, Float64_Equals(f64, (Obj*)f64_thaw),
+ "Float64 freeze/thaw");
+ ASSERT_TRUE(batch, Int32_Equals(i32, (Obj*)i32_thaw),
+ "Integer32 freeze/thaw");
+ ASSERT_TRUE(batch, Int64_Equals(i64, (Obj*)i64_thaw),
+ "Integer64 freeze/thaw");
+
+ DECREF(i64_thaw);
+ DECREF(i32_thaw);
+ DECREF(f64_thaw);
+ DECREF(f32_thaw);
+ DECREF(i64);
+ DECREF(i32);
+ DECREF(f64);
+ DECREF(f32);
+}
+
void
TestNum_run_tests()
{
- TestBatch *batch = Test_new_batch("TestNum", 34, NULL);
+ TestBatch *batch = Test_new_batch("TestNum", 38, NULL);
PLAN(batch);
test_To_String(batch);
test_accessors(batch);
test_Equals_and_Compare_To(batch);
test_Clone(batch);
+ test_serialization(batch);
batch->destroy(batch);
}