2016-02-07 02:58:35 +00:00
|
|
|
#ifndef _RE2C_CODEGEN_BITMAP_
|
|
|
|
#define _RE2C_CODEGEN_BITMAP_
|
|
|
|
|
|
|
|
#include "src/util/c99_stdint.h"
|
|
|
|
|
|
|
|
#include "src/util/forbid_copy.h"
|
|
|
|
|
|
|
|
namespace re2c
|
|
|
|
{
|
|
|
|
|
|
|
|
struct Go;
|
|
|
|
struct Span;
|
2016-02-07 03:19:05 +00:00
|
|
|
struct State;
|
|
|
|
struct OutputFile;
|
2016-02-07 02:58:35 +00:00
|
|
|
|
|
|
|
class BitMap
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
static BitMap *first;
|
|
|
|
|
|
|
|
const Go *go;
|
|
|
|
const State *on;
|
|
|
|
const BitMap *next;
|
|
|
|
uint32_t i;
|
|
|
|
uint32_t m;
|
|
|
|
|
|
|
|
public:
|
|
|
|
static const BitMap *find(const Go*, const State*);
|
|
|
|
static const BitMap *find(const State*);
|
|
|
|
static void gen(OutputFile &, uint32_t ind, uint32_t, uint32_t);
|
|
|
|
BitMap(const Go*, const State*);
|
|
|
|
~BitMap();
|
|
|
|
|
|
|
|
FORBID_COPY (BitMap);
|
|
|
|
};
|
|
|
|
|
|
|
|
bool matches(const Span * b1, uint32_t n1, const State * s1, const Span * b2, uint32_t n2, const State * s2);
|
|
|
|
|
|
|
|
#ifdef _MSC_VER
|
|
|
|
# pragma warning(disable: 4355) /* 'this' : used in base member initializer list */
|
|
|
|
#endif
|
|
|
|
|
|
|
|
} // end namespace re2c
|
|
|
|
|
|
|
|
#endif // _RE2C_CODEGEN_BITMAP_
|