text: //
  //  Generated by the J2ObjC translator.  DO NOT EDIT!
  //  source: ./core/src/java/org/apache/lucene/codecs/DocValuesFormat.java
  //
  
  #include "J2ObjC_header.h"
  
  #pragma push_macro("INCLUDE_ALL_OrgApacheLuceneCodecsDocValuesFormat")
  #ifdef RESTRICT_OrgApacheLuceneCodecsDocValuesFormat
  #define INCLUDE_ALL_OrgApacheLuceneCodecsDocValuesFormat 0
  #else
  #define INCLUDE_ALL_OrgApacheLuceneCodecsDocValuesFormat 1
  #endif
  #undef RESTRICT_OrgApacheLuceneCodecsDocValuesFormat
  
  #if __has_feature(nullability)
  #pragma clang diagnostic push
  #pragma GCC diagnostic ignored "-Wnullability"
  #pragma GCC diagnostic ignored "-Wnullability-completeness"
  #endif
  
  #if !defined (OrgApacheLuceneCodecsDocValuesFormat_) && (INCLUDE_ALL_OrgApacheLuceneCodecsDocValuesFormat || defined(INCLUDE_OrgApacheLuceneCodecsDocValuesFormat))
  #define OrgApacheLuceneCodecsDocValuesFormat_
  
  #define RESTRICT_OrgApacheLuceneUtilNamedSPILoader 1
  #define INCLUDE_OrgApacheLuceneUtilNamedSPILoader_NamedSPI 1
  #include "org/apache/lucene/util/NamedSPILoader.h"
  
  @class JavaLangClassLoader;
  @class OrgApacheLuceneCodecsDocValuesConsumer;
  @class OrgApacheLuceneCodecsDocValuesProducer;
  @class OrgApacheLuceneIndexSegmentReadState;
  @class OrgApacheLuceneIndexSegmentWriteState;
  @protocol JavaUtilSet;
  
  /*!
   @brief Encodes/decodes per-document values.
   <p>
    Note, when extending this class, the name (<code>getName</code>) may
    written into the index in certain configurations. In order for the segment 
    to be read, the name must resolve to your implementation via <code>forName(String)</code>.
    This method uses Java's  
   <code>Service Provider Interface</code> (SPI) to resolve format names. 
   <p>
    If you implement your own format, make sure that it has a no-arg constructor
    so SPI can load it.
   - seealso: ServiceLoader
   */
  @interface OrgApacheLuceneCodecsDocValuesFormat : NSObject < OrgApacheLuceneUtilNamedSPILoader_NamedSPI >
  
  #pragma mark Public
  
  /*!
   @brief returns a list of all available format names
   */
  + (id<JavaUtilSet>)availableDocValuesFormats;
  
  /*!
   @brief Returns a <code>DocValuesConsumer</code> to write docvalues to the
     index.
   */
  - (OrgApacheLuceneCodecsDocValuesConsumer *)fieldsConsumerWithOrgApacheLuceneIndexSegmentWriteState:(OrgApacheLuceneIndexSegmentWriteState *)state;
  
  /*!
   @brief Returns a <code>DocValuesProducer</code> to read docvalues from the index.
   <p>
    NOTE: by the time this call returns, it must hold open any files it will 
    need to use; else, those files may be deleted. Additionally, required files 
    may be deleted during the execution of this call before there is a chance 
    to open them. Under these circumstances an IOException should be thrown by 
    the implementation. IOExceptions are expected and will automatically cause 
    a retry of the segment opening logic with the newly revised segments.
   */
  - (OrgApacheLuceneCodecsDocValuesProducer *)fieldsProducerWithOrgApacheLuceneIndexSegmentReadState:(OrgApacheLuceneIndexSegmentReadState *)state;
  
  /*!
   @brief looks up a format by name
   */
  + (OrgApacheLuceneCodecsDocValuesFormat *)forNameWithNSString:(NSString *)name;
  
  - (NSString *)getName;
  
  /*!
   @brief Reloads the DocValues format list from the given <code>ClassLoader</code>.
   Changes to the docvalues formats are visible after the method ends, all
    iterators (<code>availableDocValuesFormats()</code>,...) stay consistent.   
   <p><b>NOTE:</b> Only new docvalues formats are added, existing ones are
    never removed or replaced.  
   <p><em>This method is expensive and should only be called for discovery
    of new docvalues formats on the given classpath/classloader!</em>
   */
  + (void)reloadDocValuesFormatsWithJavaLangClassLoader:(JavaLangClassLoader *)classloader;
  
  - (NSString *)description;
  
  #pragma mark Protected
  
  /*!
   @brief Creates a new docvalues format.
   <p>
    The provided name will be written into the index segment in some configurations
    (such as when using <code>PerFieldDocValuesFormat</code>): in such configurations,
    for the segment to be read this class should be registered with Java's
    SPI mechanism (registered in META-INF/ of your jar file, etc).
   @param name must be all ascii alphanumeric, and less than 128 characters in length.
   */
  - (instancetype __nonnull)initWithNSString:(NSString *)name;
  
  // Disallowed inherited constructors, do not use.
  
  - (instancetype __nonnull)init NS_UNAVAILABLE;
  
  @end
  
  J2OBJC_EMPTY_STATIC_INIT(OrgApacheLuceneCodecsDocValuesFormat)
  
  FOUNDATION_EXPORT void OrgApacheLuceneCodecsDocValuesFormat_initWithNSString_(OrgApacheLuceneCodecsDocValuesFormat *self, NSString *name);
  
  FOUNDATION_EXPORT OrgApacheLuceneCodecsDocValuesFormat *OrgApacheLuceneCodecsDocValuesFormat_forNameWithNSString_(NSString *name);
  
  FOUNDATION_EXPORT id<JavaUtilSet> OrgApacheLuceneCodecsDocValuesFormat_availableDocValuesFormats(void);
  
  FOUNDATION_EXPORT void OrgApacheLuceneCodecsDocValuesFormat_reloadDocValuesFormatsWithJavaLangClassLoader_(JavaLangClassLoader *classloader);
  
  J2OBJC_TYPE_LITERAL_HEADER(OrgApacheLuceneCodecsDocValuesFormat)
  
  #endif
  
  
  #if __has_feature(nullability)
  #pragma clang diagnostic pop
  #endif
  #pragma pop_macro("INCLUDE_ALL_OrgApacheLuceneCodecsDocValuesFormat")
  