-/*
- * Copyright (c) 2002-2004, Index Data.
+/* This file is part of the yazpp toolkit.
+ * Copyright (C) 1998-2010 Index Data and Mike Taylor
* See the file LICENSE for details.
- *
- * $Id: yaz-z-cache.cpp,v 1.15 2006-03-29 13:14:18 adam Exp $
*/
#include <yaz/log.h>
#include <yaz/proto.h>
+#include <yaz/copy_types.h>
#include <yazpp/record-cache.h>
using namespace yazpp_1;
nmem_destroy(m_mem);
}
-void RecordCache::set_max_size(int sz)
+void RecordCache::set_max_size(size_t sz)
{
m_max_size = sz;
}
odr_destroy(decode);
}
+
void RecordCache::add (ODR o, Z_NamePlusRecordList *npr, int start,
int hits)
{
comp->u.simple = esn;
}
- // Z_NamePlusRecordList *npr to be owned by m_mem..
- NMEM tmp_mem = odr_extract_mem(o);
- nmem_transfer(m_mem, tmp_mem);
- nmem_destroy(tmp_mem);
-
// Insert individual records in cache
int i;
for (i = 0; i<npr->num_records; i++)
{
RecordCache_Entry *entry = (RecordCache_Entry *)
nmem_malloc(m_mem, sizeof(*entry));
- entry->m_record = (Z_NamePlusRecord *)
- nmem_malloc(m_mem, sizeof(*entry->m_record));
- entry->m_record->databaseName = npr->records[i]->databaseName;
- entry->m_record->which = npr->records[i]->which;
- entry->m_record->u.databaseRecord = npr->records[i]->u.databaseRecord;
- entry->m_comp = comp;
+ entry->m_record = yaz_clone_z_NamePlusRecord(npr->records[i], m_mem);
+ entry->m_comp = yaz_clone_z_RecordComposition(comp, m_mem);
entry->m_offset = i + start;
entry->m_next = m_entries;
m_entries = entry;
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab