00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <config.h>
00024 #include "flint_document.h"
00025
00026 #include "debuglog.h"
00027 #include "flint_database.h"
00028 #include "flint_values.h"
00029 #include "flint_record.h"
00030
00034 FlintDocument::FlintDocument(Xapian::Internal::RefCntPtr<const Xapian::Database::Internal> database_,
00035 const FlintValueTable *value_table_,
00036 const FlintRecordTable *record_table_,
00037 Xapian::docid did_, bool lazy)
00038 : Xapian::Document::Internal(database_.get(), did_),
00039 database(database_),
00040 value_table(value_table_),
00041 record_table(record_table_)
00042 {
00043 LOGCALL_CTOR(DB, "FlintDocument", database_ | value_table_ | record_table_ | did_ | lazy);
00044
00045
00046 if (!lazy) (void)record_table->get_record(did);
00047 }
00048
00053 string
00054 FlintDocument::do_get_value(Xapian::valueno slot) const
00055 {
00056 LOGCALL(DB, string, "FlintDocument::do_get_value", slot);
00057 string retval;
00058 value_table->get_value(retval, did, slot);
00059 RETURN(retval);
00060 }
00061
00064 void
00065 FlintDocument::do_get_all_values(map<Xapian::valueno, string> & values_) const
00066 {
00067 LOGCALL_VOID(DB, "FlintDocument::do_get_all_values", values_);
00068 value_table->get_all_values(values_, did);
00069 }
00070
00073 string
00074 FlintDocument::do_get_data() const
00075 {
00076 LOGCALL(DB, string, "FlintDocument::do_get_data", NO_ARGS);
00077 RETURN(record_table->get_record(did));
00078 }