blob: 51b9763aa30eb5c01b500e1b6e59cd8f7310f67c [file] [log] [blame]
/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
parcel Lucy;
/** A document.
*
* A Doc object is akin to a row in a database, in that it is made up of one
* or more fields, each of which has a value.
*/
public class Lucy::Document::Doc inherits Lucy::Object::Obj
: dumpable {
void *fields;
int32_t doc_id;
inert incremented Doc*
new(void *fields = NULL, int32_t doc_id = 0);
/**
* @param fields Field-value pairs.
* @param doc_id Internal Lucy document id. Default of 0 (an
* invalid doc id).
*/
public inert Doc*
init(Doc *self, void *fields = NULL, int32_t doc_id = 0);
/** Set internal Lucy document id.
*/
public void
Set_Doc_ID(Doc *self, int32_t doc_id);
/** Retrieve internal Lucy document id.
*/
public int32_t
Get_Doc_ID(Doc *self);
/** Store a field value in the Doc.
*/
void
Store(Doc *self, const CharBuf *field, Obj *value);
/** Set the doc's field's attribute.
*/
void
Set_Fields(Doc *self, void *fields);
/** Return the Doc's backing fields hash.
*/
public nullable void*
Get_Fields(Doc *self);
/** Return the number of fields in the Doc.
*/
public uint32_t
Get_Size(Doc *self);
/** Retrieve the field's value, or NULL if the field is not present. If
* the field is a text type, assign it to <code>target</code>. Otherwise,
* return the interior object. Callers must check to verify the kind of
* object returned.
*/
nullable Obj*
Extract(Doc *self, CharBuf *field, ViewCharBuf *target);
/* Unimplemented methods.
*/
public bool_t
Equals(Doc *self, Obj *other);
public void
Serialize(Doc *self, OutStream *outstream);
public incremented Doc*
Deserialize(Doc *self, InStream *instream);
public incremented Hash*
Dump(Doc *self);
public incremented Doc*
Load(Doc *self, Obj *dump);
void*
To_Host(Doc *self);
public void
Destroy(Doc *self);
}