#ifndef _MODULE_StringSearch_SubstringBM_
#define _MODULE_StringSearch_SubstringBM_

#include <__typemap.h>
#include <RT0.oh>
#include <Object.oh>
#include <StringSearch.oh>
#include <StringSearch/SubstringBF.oh>
#include <RT0.oh>
#include <Object.oh>
#include <Exception.oh>
#define StringSearch_SubstringBM__ignoreCase 0
#define StringSearch_SubstringBM__copyString 1
typedef struct StringSearch_SubstringBM__FactoryDesc *StringSearch_SubstringBM__Factory;
typedef struct StringSearch_SubstringBM__FactoryDesc {
  char __dummy;
} StringSearch_SubstringBM__FactoryDesc;
typedef struct StringSearch_SubstringBM__MatcherDesc *StringSearch_SubstringBM__Matcher;
typedef struct StringSearch_SubstringBM__MatcherDesc {
  Object__String8 pattern;
  OOC_UINT32 flags;
  OOC_INT32 groups;
  OOC_INT32 skip[256];
  OOC_INT32 *shift;
} StringSearch_SubstringBM__MatcherDesc;
typedef struct StringSearch_SubstringBM__MatchObjectDesc *StringSearch_SubstringBM__MatchObject;
typedef struct StringSearch_SubstringBM__MatchObjectDesc {
  OOC_INT32 pos;
  OOC_INT32 endpos;
  StringSearch__Matcher matcher;
  Object__String8 string;
  OOC_INT32 start;
  OOC_INT32 end;
} StringSearch_SubstringBM__MatchObjectDesc;
extern StringSearch_SubstringBM__Factory StringSearch_SubstringBM__factory;
extern OOC_INT32 StringSearch_SubstringBM__SearchStart(StringSearch_SubstringBM__Matcher matcher, const OOC_CHAR8 string[], OOC_LEN string_0d, OOC_INT32 pos, OOC_INT32 endpos);
extern StringSearch_SubstringBM__MatchObject StringSearch_SubstringBM__MatcherDesc_SearchChars(StringSearch_SubstringBM__Matcher matcher, const OOC_CHAR8 string[], OOC_LEN string_0d, OOC_INT32 pos, OOC_INT32 endpos);
#define _TBN_StringSearch_SubstringBM__MatcherDesc_SearchChars 7
typedef StringSearch_SubstringBM__MatchObject (*_TBP_StringSearch_SubstringBM__MatcherDesc_SearchChars)(StringSearch_SubstringBM__Matcher matcher, const OOC_CHAR8 string[], OOC_LEN string_0d, OOC_INT32 pos, OOC_INT32 endpos);
extern StringSearch_SubstringBM__MatchObject StringSearch_SubstringBM__MatcherDesc_Search(StringSearch_SubstringBM__Matcher matcher, Object__String8 string, OOC_INT32 pos, OOC_INT32 endpos);
#define _TBN_StringSearch_SubstringBM__MatcherDesc_Search 6
typedef StringSearch_SubstringBM__MatchObject (*_TBP_StringSearch_SubstringBM__MatcherDesc_Search)(StringSearch_SubstringBM__Matcher matcher, Object__String8 string, OOC_INT32 pos, OOC_INT32 endpos);
extern void StringSearch_SubstringBM__InitFactory(StringSearch_SubstringBM__Factory f);
extern StringSearch_SubstringBM__Matcher StringSearch_SubstringBM__FactoryDesc_Compile(StringSearch_SubstringBM__Factory f, Object__String8 pattern, OOC_UINT32 flags);
#define _TBN_StringSearch_SubstringBM__FactoryDesc_Compile 3
typedef StringSearch_SubstringBM__Matcher (*_TBP_StringSearch_SubstringBM__FactoryDesc_Compile)(StringSearch_SubstringBM__Factory f, Object__String8 pattern, OOC_UINT32 flags);
extern void OOC_StringSearch_SubstringBM_init(void);
extern void OOC_StringSearch_SubstringBM_init0(void);

/* run-time meta data */
extern RT0__StructDesc _td_StringSearch_SubstringBM__Factory;
extern RT0__StructDesc _td_StringSearch_SubstringBM__FactoryDesc;
extern RT0__StructDesc _td_StringSearch_SubstringBM__Matcher;
extern RT0__StructDesc _td_StringSearch_SubstringBM__MatcherDesc;
extern RT0__StructDesc _td_StringSearch_SubstringBM__1781;
extern RT0__StructDesc _td_StringSearch_SubstringBM__1830;
extern RT0__StructDesc _td_StringSearch_SubstringBM__1819;
extern RT0__StructDesc _td_StringSearch_SubstringBM__MatchObject;
extern RT0__StructDesc _td_StringSearch_SubstringBM__MatchObjectDesc;
extern RT0__StructDesc _td_StringSearch_SubstringBM__2967;
extern RT0__StructDesc _td_StringSearch_SubstringBM__2956;
extern RT0__StructDesc _td_StringSearch_SubstringBM__5017;
extern RT0__StructDesc _td_StringSearch_SubstringBM__6421;
extern RT0__StructDesc _td_StringSearch_SubstringBM__8259;
#endif /* _MODULE_StringSearch_SubstringBM_ */

/* --- */
