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 2013/07/26 03:30:43 UTC

[lucy-commits] [3/6] git commit: refs/heads/move-dumpable - Implement Dump/Load manually.

Implement Dump/Load manually.

For classes which have heretofore relied on CFCDumpable for
autogenerating Dump/Load, create manual implementations.


Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/163c43ed
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/163c43ed
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/163c43ed

Branch: refs/heads/move-dumpable
Commit: 163c43ed86b381971adfa25959fdcdc3b63a0f9a
Parents: f1585ac
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Thu Jul 25 16:07:02 2013 -0700
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Thu Jul 25 18:27:24 2013 -0700

----------------------------------------------------------------------
 core/Lucy/Analysis/Analyzer.c             | 20 ++++++++++
 core/Lucy/Analysis/Analyzer.cfh           |  6 +++
 core/Lucy/Analysis/PolyAnalyzer.c         | 13 +++++++
 core/Lucy/Analysis/PolyAnalyzer.cfh       |  3 ++
 core/Lucy/Analysis/SnowballStopFilter.c   | 28 ++++++++++++++
 core/Lucy/Analysis/SnowballStopFilter.cfh |  6 +++
 core/Lucy/Search/LeafQuery.c              | 32 ++++++++++++++++
 core/Lucy/Search/LeafQuery.cfh            |  6 +++
 core/Lucy/Search/PhraseQuery.c            | 29 ++++++++++++++
 core/Lucy/Search/PhraseQuery.cfh          |  6 +++
 core/Lucy/Search/PolyQuery.c              | 24 ++++++++++++
 core/Lucy/Search/PolyQuery.cfh            |  6 +++
 core/Lucy/Search/Query.c                  | 26 +++++++++++++
 core/Lucy/Search/Query.cfh                |  6 +++
 core/Lucy/Search/RangeQuery.c             | 52 ++++++++++++++++++++++++++
 core/Lucy/Search/RangeQuery.cfh           |  6 +++
 core/Lucy/Search/TermQuery.c              | 27 +++++++++++++
 core/Lucy/Search/TermQuery.cfh            |  6 +++
 core/LucyX/Search/ProximityQuery.c        | 31 +++++++++++++++
 core/LucyX/Search/ProximityQuery.cfh      |  6 +++
 20 files changed, 339 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Analysis/Analyzer.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Analysis/Analyzer.c b/core/Lucy/Analysis/Analyzer.c
index ab23fdc..9a16c16 100644
--- a/core/Lucy/Analysis/Analyzer.c
+++ b/core/Lucy/Analysis/Analyzer.c
@@ -58,4 +58,24 @@ Analyzer_split(Analyzer *self, CharBuf *text) {
     return out;
 }
 
+Obj*
+Analyzer_dump(Analyzer *self)
+{
+    Hash *dump = Hash_new(0);
+    Hash_Store_Str(dump, "_class", 6,
+                   (Obj*)CB_Clone(Obj_Get_Class_Name((Obj*)self)));
+    return (Obj*)dump;
+}
+
+Obj*
+Analyzer_load(Analyzer *self, Obj *dump)
+{
+    CHY_UNUSED_VAR(self);
+    Hash *source = (Hash*)CERTIFY(dump, HASH);
+    CharBuf *class_name
+        = (CharBuf*)CERTIFY(Hash_Fetch_Str(source, "_class", 6), CHARBUF);
+    VTable *vtable = VTable_singleton(class_name, NULL);
+    Analyzer *loaded = (Analyzer*)VTable_Make_Obj(vtable);
+    return (Obj*)loaded;
+}
 

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Analysis/Analyzer.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Analysis/Analyzer.cfh b/core/Lucy/Analysis/Analyzer.cfh
index 4071bdb..f435aa8 100644
--- a/core/Lucy/Analysis/Analyzer.cfh
+++ b/core/Lucy/Analysis/Analyzer.cfh
@@ -49,6 +49,12 @@ public abstract class Lucy::Analysis::Analyzer
      */
     public incremented VArray*
     Split(Analyzer *self, CharBuf *text);
+
+    public incremented Obj*
+    Dump(Analyzer *self);
+
+    public incremented Obj*
+    Load(Analyzer *self, Obj *dump);
 }
 
 

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Analysis/PolyAnalyzer.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Analysis/PolyAnalyzer.c b/core/Lucy/Analysis/PolyAnalyzer.c
index f755e4e..0f64d16 100644
--- a/core/Lucy/Analysis/PolyAnalyzer.c
+++ b/core/Lucy/Analysis/PolyAnalyzer.c
@@ -120,6 +120,19 @@ PolyAnalyzer_equals(PolyAnalyzer *self, Obj *other) {
     return true;
 }
 
+Obj*
+PolyAnalyzer_dump(PolyAnalyzer *self)
+{
+    PolyAnalyzerIVARS *const ivars = PolyAnalyzer_IVARS(self);
+    PolyAnalyzer_Dump_t super_dump
+        = SUPER_METHOD_PTR(POLYANALYZER, Lucy_PolyAnalyzer_Dump);
+    Hash *dump = (Hash*)CERTIFY(super_dump(self), HASH);
+    if (ivars->analyzers) {
+        Hash_Store_Str(dump, "analyzers", 9, Obj_Dump((Obj*)ivars->analyzers));
+    }
+    return (Obj*)dump;
+}
+
 PolyAnalyzer*
 PolyAnalyzer_load(PolyAnalyzer *self, Obj *dump) {
     Hash *source = (Hash*)CERTIFY(dump, HASH);

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Analysis/PolyAnalyzer.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Analysis/PolyAnalyzer.cfh b/core/Lucy/Analysis/PolyAnalyzer.cfh
index a7cdd93..1edffc0 100644
--- a/core/Lucy/Analysis/PolyAnalyzer.cfh
+++ b/core/Lucy/Analysis/PolyAnalyzer.cfh
@@ -83,6 +83,9 @@ public class Lucy::Analysis::PolyAnalyzer
     public bool
     Equals(PolyAnalyzer *self, Obj *other);
 
+    public incremented Obj*
+    Dump(PolyAnalyzer *self);
+
     public incremented PolyAnalyzer*
     Load(PolyAnalyzer *self, Obj *dump);
 

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Analysis/SnowballStopFilter.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Analysis/SnowballStopFilter.c b/core/Lucy/Analysis/SnowballStopFilter.c
index e0d1f63..576ab08 100644
--- a/core/Lucy/Analysis/SnowballStopFilter.c
+++ b/core/Lucy/Analysis/SnowballStopFilter.c
@@ -89,6 +89,34 @@ SnowStop_equals(SnowballStopFilter *self, Obj *other) {
     return true;
 }
 
+Obj*
+SnowStop_dump(SnowballStopFilter *self)
+{
+    SnowballStopFilterIVARS *ivars = SnowStop_IVARS(self);
+    SnowStop_Dump_t super_dump
+        = SUPER_METHOD_PTR(SNOWBALLSTOPFILTER, Lucy_SnowStop_Dump);
+    Hash *dump = (Hash*)CERTIFY(super_dump(self), HASH);
+    if (ivars->stoplist) {
+        Hash_Store_Str(dump, "stoplist", 8, Obj_Dump((Obj*)ivars->stoplist));
+    }
+    return (Obj*)dump;
+}
+
+Obj*
+SnowStop_load(SnowballStopFilter *self, Obj *dump)
+{
+    Hash *source = (Hash*)CERTIFY(dump, HASH);
+    SnowStop_Load_t super_load
+        = SUPER_METHOD_PTR(SNOWBALLSTOPFILTER, Lucy_SnowStop_Load);
+    SnowballStopFilter *loaded = (SnowballStopFilter*)super_load(self, dump);
+    Obj *stoplist = Hash_Fetch_Str(source, "stoplist", 8);
+    if (stoplist) {
+        SnowStop_IVARS(loaded)->stoplist
+            = (Hash*)CERTIFY(Obj_Load(stoplist, stoplist), HASH);
+    }
+    return (Obj*)loaded;
+}
+
 Hash*
 SnowStop_gen_stoplist(const CharBuf *language) {
     CharBuf *lang = CB_new(3);

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Analysis/SnowballStopFilter.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Analysis/SnowballStopFilter.cfh b/core/Lucy/Analysis/SnowballStopFilter.cfh
index 3303a96..68e172a 100644
--- a/core/Lucy/Analysis/SnowballStopFilter.cfh
+++ b/core/Lucy/Analysis/SnowballStopFilter.cfh
@@ -95,6 +95,12 @@ public class Lucy::Analysis::SnowballStopFilter cnick SnowStop
     public bool
     Equals(SnowballStopFilter *self, Obj *other);
 
+    public incremented Obj*
+    Dump(SnowballStopFilter *self);
+
+    public incremented Obj*
+    Load(SnowballStopFilter *self, Obj *dump);
+
     public void
     Destroy(SnowballStopFilter *self);
 }

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/LeafQuery.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/LeafQuery.c b/core/Lucy/Search/LeafQuery.c
index f5fb944..e248504 100644
--- a/core/Lucy/Search/LeafQuery.c
+++ b/core/Lucy/Search/LeafQuery.c
@@ -111,6 +111,38 @@ LeafQuery_deserialize(LeafQuery *self, InStream *instream) {
     return self;
 }
 
+Obj*
+LeafQuery_dump(LeafQuery *self)
+{
+    LeafQueryIVARS *ivars = LeafQuery_IVARS(self);
+    LeafQuery_Dump_t super_dump
+        = SUPER_METHOD_PTR(LEAFQUERY, Lucy_LeafQuery_Dump);
+    Hash *dump = (Hash*)CERTIFY(super_dump(self), HASH);
+    if (ivars->field) {
+        Hash_Store_Str(dump, "field", 5, Obj_Dump((Obj*)ivars->field));
+    }
+    Hash_Store_Str(dump, "text", 4, Obj_Dump((Obj*)ivars->text));
+    return (Obj*)dump;
+}
+
+Obj*
+LeafQuery_load(LeafQuery *self, Obj *dump)
+{
+    Hash *source = (Hash*)CERTIFY(dump, HASH);
+    LeafQuery_Load_t super_load
+        = SUPER_METHOD_PTR(LEAFQUERY, Lucy_LeafQuery_Load);
+    LeafQuery *loaded = (LeafQuery*)super_load(self, dump);
+    LeafQueryIVARS *loaded_ivars = LeafQuery_IVARS(loaded);
+    Obj *field = Hash_Fetch_Str(source, "field", 5);
+    if (field) {
+        loaded_ivars->field
+            = (CharBuf*)CERTIFY(Obj_Load(field, field), CHARBUF);
+    }
+    Obj *text = CERTIFY(Hash_Fetch_Str(source, "text", 4), OBJ);
+    loaded_ivars->text = (CharBuf*)CERTIFY(Obj_Load(text, text), CHARBUF);
+    return (Obj*)loaded;
+}
+
 Compiler*
 LeafQuery_make_compiler(LeafQuery *self, Searcher *searcher, float boost,
                         bool subordinate) {

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/LeafQuery.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/LeafQuery.cfh b/core/Lucy/Search/LeafQuery.cfh
index d6c7bb6..568898e 100644
--- a/core/Lucy/Search/LeafQuery.cfh
+++ b/core/Lucy/Search/LeafQuery.cfh
@@ -63,6 +63,12 @@ public class Lucy::Search::LeafQuery inherits Lucy::Search::Query
     public incremented LeafQuery*
     Deserialize(decremented LeafQuery *self, InStream *instream);
 
+    public incremented Obj*
+    Dump(LeafQuery *self);
+
+    public incremented Obj*
+    Load(LeafQuery *self, Obj *dump);
+
     /** Throws an error.
      */
     public incremented Compiler*

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/PhraseQuery.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/PhraseQuery.c b/core/Lucy/Search/PhraseQuery.c
index 2c62e2f..7bcca36 100644
--- a/core/Lucy/Search/PhraseQuery.c
+++ b/core/Lucy/Search/PhraseQuery.c
@@ -90,6 +90,35 @@ PhraseQuery_deserialize(PhraseQuery *self, InStream *instream) {
     return S_do_init(self, field, terms, boost);
 }
 
+Obj*
+PhraseQuery_dump(PhraseQuery *self)
+{
+    PhraseQueryIVARS *ivars = PhraseQuery_IVARS(self);
+    PhraseQuery_Dump_t super_dump
+        = SUPER_METHOD_PTR(PHRASEQUERY, Lucy_PhraseQuery_Dump);
+    Hash *dump = (Hash*)CERTIFY(super_dump(self), HASH);
+    Hash_Store_Str(dump, "field", 5, Obj_Dump((Obj*)ivars->field));
+    Hash_Store_Str(dump, "terms", 5, Obj_Dump((Obj*)ivars->terms));
+    return (Obj*)dump;
+}
+
+Obj*
+PhraseQuery_load(PhraseQuery *self, Obj *dump)
+{
+    Hash *source = (Hash*)CERTIFY(dump, HASH);
+    PhraseQuery_Load_t super_load
+        = SUPER_METHOD_PTR(PHRASEQUERY, Lucy_PhraseQuery_Load);
+    PhraseQuery *loaded = (PhraseQuery*)super_load(self, dump);
+    PhraseQueryIVARS *loaded_ivars = PhraseQuery_IVARS(loaded);
+    Obj *field = CERTIFY(Hash_Fetch_Str(source, "field", 5), OBJ);
+    loaded_ivars->field
+        = (CharBuf*)CERTIFY(Obj_Load(field, field), CHARBUF);
+    Obj *terms = CERTIFY(Hash_Fetch_Str(source, "terms", 5), OBJ);
+    loaded_ivars->terms
+        = (VArray*)CERTIFY(Obj_Load(terms, terms), VARRAY);
+    return (Obj*)loaded;
+}
+
 bool
 PhraseQuery_equals(PhraseQuery *self, Obj *other) {
     if ((PhraseQuery*)other == self)   { return true; }

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/PhraseQuery.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/PhraseQuery.cfh b/core/Lucy/Search/PhraseQuery.cfh
index 6991430..34e4936 100644
--- a/core/Lucy/Search/PhraseQuery.cfh
+++ b/core/Lucy/Search/PhraseQuery.cfh
@@ -64,6 +64,12 @@ public class Lucy::Search::PhraseQuery inherits Lucy::Search::Query
     public incremented PhraseQuery*
     Deserialize(decremented PhraseQuery *self, InStream *instream);
 
+    public incremented Obj*
+    Dump(PhraseQuery *self);
+
+    public incremented Obj*
+    Load(PhraseQuery *self, Obj *dump);
+
     public void
     Destroy(PhraseQuery *self);
 }

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/PolyQuery.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/PolyQuery.c b/core/Lucy/Search/PolyQuery.c
index da87dc1..74222a6 100644
--- a/core/Lucy/Search/PolyQuery.c
+++ b/core/Lucy/Search/PolyQuery.c
@@ -92,6 +92,30 @@ PolyQuery_deserialize(PolyQuery *self, InStream *instream) {
     return self;
 }
 
+Obj*
+PolyQuery_dump(PolyQuery *self)
+{
+    PolyQueryIVARS *ivars = PolyQuery_IVARS(self);
+    PolyQuery_Dump_t super_dump
+        = SUPER_METHOD_PTR(POLYQUERY, Lucy_PolyQuery_Dump);
+    Hash *dump = (Hash*)CERTIFY(super_dump(self), HASH);
+    Hash_Store_Str(dump, "children", 8, Obj_Dump((Obj*)ivars->children));
+    return (Obj*)dump;
+}
+
+Obj*
+PolyQuery_load(PolyQuery *self, Obj *dump)
+{
+    Hash *source = (Hash*)CERTIFY(dump, HASH);
+    PolyQuery_Load_t super_load
+        = SUPER_METHOD_PTR(POLYQUERY, Lucy_PolyQuery_Load);
+    PolyQuery *loaded = (PolyQuery*)super_load(self, dump);
+    Obj *children = CERTIFY(Hash_Fetch_Str(source, "children", 8), OBJ);
+    PolyQuery_IVARS(loaded)->children
+        = (VArray*)CERTIFY(Obj_Load(children, children), VARRAY);
+    return (Obj*)loaded;
+}
+
 bool
 PolyQuery_equals(PolyQuery *self, Obj *other) {
     if ((PolyQuery*)other == self)                          { return true; }

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/PolyQuery.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/PolyQuery.cfh b/core/Lucy/Search/PolyQuery.cfh
index e4fc450..9b70142 100644
--- a/core/Lucy/Search/PolyQuery.cfh
+++ b/core/Lucy/Search/PolyQuery.cfh
@@ -54,6 +54,12 @@ public abstract class Lucy::Search::PolyQuery
     public incremented PolyQuery*
     Deserialize(decremented PolyQuery *self, InStream *instream);
 
+    public incremented Obj*
+    Dump(PolyQuery *self);
+
+    public incremented Obj*
+    Load(PolyQuery *self, Obj *dump);
+
     public bool
     Equals(PolyQuery *self, Obj *other);
 

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/Query.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/Query.c b/core/Lucy/Search/Query.c
index 20243ed..50a5bc0 100644
--- a/core/Lucy/Search/Query.c
+++ b/core/Lucy/Search/Query.c
@@ -51,3 +51,29 @@ Query_deserialize(Query *self, InStream *instream) {
     return Query_init(self, boost);
 }
 
+Obj*
+Query_dump(Query *self)
+{
+    QueryIVARS *ivars = Query_IVARS(self);
+    Hash *dump = Hash_new(0);
+    Hash_Store_Str(dump, "_class", 6,
+                   (Obj*)CB_Clone(Obj_Get_Class_Name((Obj*)self)));
+    Hash_Store_Str(dump, "boost", 5,
+                   (Obj*)CB_newf("%f64", (double)ivars->boost));
+    return (Obj*)dump;
+}
+
+Obj*
+Query_load(Query *self, Obj *dump)
+{
+    CHY_UNUSED_VAR(self);
+    Hash *source = (Hash*)CERTIFY(dump, HASH);
+    CharBuf *class_name
+        = (CharBuf*)CERTIFY(Hash_Fetch_Str(source, "_class", 6), CHARBUF);
+    VTable *vtable = VTable_singleton(class_name, NULL);
+    Query *loaded = (Query*)VTable_Make_Obj(vtable);
+    Obj *boost = CERTIFY(Hash_Fetch_Str(source, "boost", 5), OBJ);
+    Query_IVARS(loaded)->boost = (float)Obj_To_F64(boost);
+    return (Obj*)loaded;
+}
+

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/Query.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/Query.cfh b/core/Lucy/Search/Query.cfh
index 0b48b15..92653bb 100644
--- a/core/Lucy/Search/Query.cfh
+++ b/core/Lucy/Search/Query.cfh
@@ -76,6 +76,12 @@ public class Lucy::Search::Query inherits Clownfish::Obj : dumpable {
 
     public incremented Query*
     Deserialize(decremented Query *self, InStream *instream);
+
+    public incremented Obj*
+    Dump(Query *self);
+
+    public incremented Obj*
+    Load(Query *self, Obj *dump);
 }
 
 

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/RangeQuery.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/RangeQuery.c b/core/Lucy/Search/RangeQuery.c
index 3f7ff15..3047e8a 100644
--- a/core/Lucy/Search/RangeQuery.c
+++ b/core/Lucy/Search/RangeQuery.c
@@ -160,6 +160,58 @@ RangeQuery_deserialize(RangeQuery *self, InStream *instream) {
     return self;
 }
 
+Obj*
+RangeQuery_dump(RangeQuery *self)
+{
+    RangeQueryIVARS *ivars = RangeQuery_IVARS(self);
+    RangeQuery_Dump_t super_dump
+        = SUPER_METHOD_PTR(RANGEQUERY, Lucy_RangeQuery_Dump);
+    Hash *dump = (Hash*)CERTIFY(super_dump(self), HASH);
+    Hash_Store_Str(dump, "field", 5, Obj_Dump((Obj*)ivars->field));
+    if (ivars->lower_term) {
+        Hash_Store_Str(dump, "lower_term", 10,
+                       Obj_Dump((Obj*)ivars->lower_term));
+    }
+    if (ivars->upper_term) {
+        Hash_Store_Str(dump, "upper_term", 10,
+                       Obj_Dump((Obj*)ivars->upper_term));
+    }
+    Hash_Store_Str(dump, "include_lower", 13,
+                   (Obj*)Bool_singleton(ivars->include_lower));
+    Hash_Store_Str(dump, "include_upper", 13,
+                   (Obj*)Bool_singleton(ivars->include_upper));
+    return (Obj*)dump;
+}
+
+Obj*
+RangeQuery_load(RangeQuery *self, Obj *dump)
+{
+    Hash *source = (Hash*)CERTIFY(dump, HASH);
+    RangeQuery_Load_t super_load
+        = SUPER_METHOD_PTR(RANGEQUERY, Lucy_RangeQuery_Load);
+    RangeQuery *loaded = (RangeQuery*)super_load(self, dump);
+    RangeQueryIVARS *loaded_ivars = RangeQuery_IVARS(loaded);
+    Obj *field = CERTIFY(Hash_Fetch_Str(source, "field", 5), OBJ);
+    loaded_ivars->field = (CharBuf*)CERTIFY(Obj_Load(field, field), CHARBUF);
+    Obj *lower_term = Hash_Fetch_Str(source, "lower_term", 10);
+    if (lower_term) {
+        loaded_ivars->lower_term
+            = (Obj*)CERTIFY(Obj_Load(lower_term, lower_term), OBJ);
+    }
+    Obj *upper_term = Hash_Fetch_Str(source, "upper_term", 10);
+    if (upper_term) {
+        loaded_ivars->upper_term
+            = (Obj*)CERTIFY(Obj_Load(upper_term, upper_term), OBJ);
+    }
+    Obj *include_lower
+        = CERTIFY(Hash_Fetch_Str(source, "include_lower", 13), OBJ);
+    loaded_ivars->include_lower = Obj_To_Bool(include_lower);
+    Obj *include_upper
+        = CERTIFY(Hash_Fetch_Str(source, "include_upper", 13), OBJ);
+    loaded_ivars->include_upper = Obj_To_Bool(include_upper);
+    return (Obj*)loaded;
+}
+
 RangeCompiler*
 RangeQuery_make_compiler(RangeQuery *self, Searcher *searcher,
                          float boost, bool subordinate) {

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/RangeQuery.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/RangeQuery.cfh b/core/Lucy/Search/RangeQuery.cfh
index 1ad4ff4..01d9a9e 100644
--- a/core/Lucy/Search/RangeQuery.cfh
+++ b/core/Lucy/Search/RangeQuery.cfh
@@ -70,6 +70,12 @@ public class Lucy::Search::RangeQuery inherits Lucy::Search::Query
     public incremented RangeQuery*
     Deserialize(decremented RangeQuery *self, InStream *instream);
 
+    public incremented Obj*
+    Dump(RangeQuery *self);
+
+    public incremented Obj*
+    Load(RangeQuery *self, Obj *dump);
+
     public void
     Destroy(RangeQuery *self);
 }

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/TermQuery.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/TermQuery.c b/core/Lucy/Search/TermQuery.c
index 924e13f..18f36f5 100644
--- a/core/Lucy/Search/TermQuery.c
+++ b/core/Lucy/Search/TermQuery.c
@@ -74,6 +74,33 @@ TermQuery_deserialize(TermQuery *self, InStream *instream) {
     return self;
 }
 
+Obj*
+TermQuery_dump(TermQuery *self)
+{
+    TermQueryIVARS *ivars = TermQuery_IVARS(self);
+    TermQuery_Dump_t super_dump
+        = SUPER_METHOD_PTR(TERMQUERY, Lucy_TermQuery_Dump);
+    Hash *dump = (Hash*)CERTIFY(super_dump(self), HASH);
+    Hash_Store_Str(dump, "field", 5, Obj_Dump((Obj*)ivars->field));
+    Hash_Store_Str(dump, "term", 4, Obj_Dump(ivars->term));
+    return (Obj*)dump;
+}
+
+Obj*
+TermQuery_load(TermQuery *self, Obj *dump)
+{
+    Hash *source = (Hash*)CERTIFY(dump, HASH);
+    TermQuery_Load_t super_load
+        = SUPER_METHOD_PTR(TERMQUERY, Lucy_TermQuery_Load);
+    TermQuery *loaded = (TermQuery*)super_load(self, dump);
+    TermQueryIVARS *loaded_ivars = TermQuery_IVARS(loaded);
+    Obj *field = CERTIFY(Hash_Fetch_Str(source, "field", 5), OBJ);
+    loaded_ivars->field = (CharBuf*)CERTIFY(Obj_Load(field, field), CHARBUF);
+    Obj *term = CERTIFY(Hash_Fetch_Str(source, "term", 4), OBJ);
+    loaded_ivars->term = (Obj*)CERTIFY(Obj_Load(term, term), OBJ);
+    return (Obj*)loaded;
+}
+
 CharBuf*
 TermQuery_get_field(TermQuery *self) {
     return TermQuery_IVARS(self)->field;

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/Lucy/Search/TermQuery.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/TermQuery.cfh b/core/Lucy/Search/TermQuery.cfh
index 70b01a6..3960497 100644
--- a/core/Lucy/Search/TermQuery.cfh
+++ b/core/Lucy/Search/TermQuery.cfh
@@ -62,6 +62,12 @@ public class Lucy::Search::TermQuery inherits Lucy::Search::Query
     public incremented TermQuery*
     Deserialize(decremented TermQuery *self, InStream *instream);
 
+    public incremented Obj*
+    Dump(TermQuery *self);
+
+    public incremented Obj*
+    Load(TermQuery *self, Obj *dump);
+
     public bool
     Equals(TermQuery *self, Obj *other);
 

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/LucyX/Search/ProximityQuery.c
----------------------------------------------------------------------
diff --git a/core/LucyX/Search/ProximityQuery.c b/core/LucyX/Search/ProximityQuery.c
index 3e8a435..37f7f70 100644
--- a/core/LucyX/Search/ProximityQuery.c
+++ b/core/LucyX/Search/ProximityQuery.c
@@ -96,6 +96,37 @@ ProximityQuery_deserialize(ProximityQuery *self, InStream *instream) {
     return S_do_init(self, field, terms, boost, within);
 }
 
+Obj*
+ProximityQuery_dump(ProximityQuery *self)
+{
+    ProximityQueryIVARS *ivars = ProximityQuery_IVARS(self);
+    ProximityQuery_Dump_t super_dump
+        = SUPER_METHOD_PTR(PROXIMITYQUERY, Lucy_ProximityQuery_Dump);
+    Hash *dump = (Hash*)CERTIFY(super_dump(self), HASH);
+    Hash_Store_Str(dump, "field", 5, Obj_Dump((Obj*)ivars->field));
+    Hash_Store_Str(dump, "terms", 5, Obj_Dump((Obj*)ivars->terms));
+    Hash_Store_Str(dump, "within", 6,
+                   (Obj*)CB_newf("%i64", (int64_t)ivars->within));
+    return (Obj*)dump;
+}
+
+Obj*
+ProximityQuery_load(ProximityQuery *self, Obj *dump)
+{
+    Hash *source = (Hash*)CERTIFY(dump, HASH);
+    ProximityQuery_Load_t super_load
+        = SUPER_METHOD_PTR(PROXIMITYQUERY, Lucy_ProximityQuery_Load);
+    ProximityQuery *loaded = (ProximityQuery*)super_load(self, dump);
+    ProximityQueryIVARS *loaded_ivars = ProximityQuery_IVARS(loaded);
+    Obj *field = CERTIFY(Hash_Fetch_Str(source, "field", 5), OBJ);
+    loaded_ivars->field = (CharBuf*)CERTIFY(Obj_Load(field, field), CHARBUF);
+    Obj *terms = CERTIFY(Hash_Fetch_Str(source, "terms", 5), OBJ);
+    loaded_ivars->terms = (VArray*)CERTIFY(Obj_Load(terms, terms), VARRAY);
+    Obj *within = CERTIFY(Hash_Fetch_Str(source, "within", 6), OBJ);
+    loaded_ivars->within = (uint32_t)Obj_To_I64(within);
+    return (Obj*)loaded;
+}
+
 bool
 ProximityQuery_equals(ProximityQuery *self, Obj *other) {
     if ((ProximityQuery*)other == self)   { return true; }

http://git-wip-us.apache.org/repos/asf/lucy/blob/163c43ed/core/LucyX/Search/ProximityQuery.cfh
----------------------------------------------------------------------
diff --git a/core/LucyX/Search/ProximityQuery.cfh b/core/LucyX/Search/ProximityQuery.cfh
index 2506961..d55eb54 100644
--- a/core/LucyX/Search/ProximityQuery.cfh
+++ b/core/LucyX/Search/ProximityQuery.cfh
@@ -70,6 +70,12 @@ public class LucyX::Search::ProximityQuery inherits Lucy::Search::Query
     public incremented ProximityQuery*
     Deserialize(decremented ProximityQuery *self, InStream *instream);
 
+    public incremented Obj*
+    Dump(ProximityQuery *self);
+
+    public incremented Obj*
+    Load(ProximityQuery *self, Obj *dump);
+
     public void
     Destroy(ProximityQuery *self);
 }