#include "blif_lexer.hpp"
#include "blif_lexer.gen.hpp" //For blifparse_lex_*()

extern YY_DECL; //For blifparse_lex()

namespace blifparse {

Lexer::Lexer(FILE* file, Callback& callback)
    : callback_(callback) {
    blifparse_lex_init(&state_);
    blifparse_set_in(file, state_);
}

Lexer::~Lexer() {
    blifparse_lex_destroy(state_);
}

Parser::symbol_type Lexer::next_token() {
    return blifparse_lex(state_, callback_);
}

const char* Lexer::text() const {
    return blifparse_get_text(state_);
}

int Lexer::lineno() const {
    return blifparse_get_lineno(state_);
}

}

#include "blif_lexer.hpp"

//Windows doesn't have unistd.h, so we set '%option nounistd' 
//in blif_lexer.l, but flex still includes it in the generated 
//header unless YY_NO_UNISTD_H is defined to 1
#define YY_NO_UNISTD_H 1
#include "blif_lexer.gen.hpp" //For blifparse_lex_*()

extern YY_DECL; //For blifparse_lex()

namespace blifparse {

Lexer::Lexer(FILE* file, Callback& callback)
    : callback_(callback) {
    blifparse_lex_init(&state_);
    blifparse_set_in(file, state_);
}

Lexer::~Lexer() {
    blifparse_lex_destroy(state_);
}

Parser::symbol_type Lexer::next_token() {
    return blifparse_lex(state_, callback_);
}

const char* Lexer::text() const {
    return blifparse_get_text(state_);
}

int Lexer::lineno() const {
    return blifparse_get_lineno(state_);
}

}

Remove unistd.h inclusion for Windows
Remove unistd.h inclusion for Windows
