// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __org_apache_lucene_index_FieldsReader__
#define __org_apache_lucene_index_FieldsReader__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace org
  {
    namespace apache
    {
      namespace lucene
      {
        namespace document
        {
          class Field$Index;
          class Field$TermVector;
          class Document;
          class FieldSelector;
        }
        namespace store
        {
          class Directory;
          class IndexInput;
        }
        namespace index
        {
          class FieldsReader;
          class FieldInfo;
          class FieldInfos;
        }
      }
    }
  }
}

class org::apache::lucene::index::FieldsReader : public ::java::lang::Object
{
public: // actually package-private
  FieldsReader (::org::apache::lucene::store::Directory *, ::java::lang::String *, ::org::apache::lucene::index::FieldInfos *);
  void close ();
  jint size () { return size__; }
  ::org::apache::lucene::document::Document *doc (jint, ::org::apache::lucene::document::FieldSelector *);
private:
  void skipField (jboolean, jboolean);
  void addFieldLazy (::org::apache::lucene::document::Document *, ::org::apache::lucene::index::FieldInfo *, jboolean, jboolean, jboolean);
  void addFieldForMerge (::org::apache::lucene::document::Document *, ::org::apache::lucene::index::FieldInfo *, jboolean, jboolean, jboolean);
  void addField (::org::apache::lucene::document::Document *, ::org::apache::lucene::index::FieldInfo *, jboolean, jboolean, jboolean);
  ::org::apache::lucene::document::Field$TermVector *getTermVectorType (::org::apache::lucene::index::FieldInfo *);
  ::org::apache::lucene::document::Field$Index *getIndexType (::org::apache::lucene::index::FieldInfo *, jboolean);
  jbyteArray uncompress (jbyteArray);
  ::org::apache::lucene::index::FieldInfos * __attribute__((aligned(__alignof__( ::java::lang::Object )))) fieldInfos;
  ::org::apache::lucene::store::IndexInput *fieldsStream;
  ::org::apache::lucene::store::IndexInput *indexStream;
  jint size__;
  static ::java::lang::ThreadLocal *fieldsStreamTL;

  friend class org_apache_lucene_index_FieldsReader$FieldForMerge;
  friend class org_apache_lucene_index_FieldsReader$LazyField;
  friend class org_apache_lucene_document_Field$Store;
  friend class org_apache_lucene_document_Field$Index;
  friend class org_apache_lucene_document_Field$TermVector;
public:

  static ::java::lang::Class class$;
};

#endif /* __org_apache_lucene_index_FieldsReader__ */
