#ifndef LANGSCAN_CSHARP_H #define LANGSCAN_CSHARP_H #define LANGSCAN_CSHARP_TOKEN_LIST \ LANGSCAN_CSHARP_TOKEN(preproc) \ LANGSCAN_CSHARP_TOKEN(classdef) \ LANGSCAN_CSHARP_TOKEN(classref) \ LANGSCAN_CSHARP_TOKEN(delegate) \ LANGSCAN_CSHARP_TOKEN(character) \ LANGSCAN_CSHARP_TOKEN(integer) \ LANGSCAN_CSHARP_TOKEN(floating) \ LANGSCAN_CSHARP_TOKEN(punct) \ LANGSCAN_CSHARP_TOKEN(comment) \ LANGSCAN_CSHARP_TOKEN(ident) \ LANGSCAN_CSHARP_TOKEN(string) \ LANGSCAN_CSHARP_TOKEN(space) typedef enum { langscan_csharp_eof = 0, #define LANGSCAN_CSHARP_TOKEN(name) langscan_csharp_##name, LANGSCAN_CSHARP_TOKEN_LIST #undef LANGSCAN_CSHARP_TOKEN } langscan_csharp_token_t; typedef struct { int beg_lineno; int beg_columnno; int beg_byteno; int end_lineno; int end_columnno; int end_byteno; int eof; char *text; int leng; size_t (*user_read)(void **user_data_p, char *buf, size_t maxlen); void *user_data; } langscan_csharp_lex_extra_t; typedef struct langscan_csharp_tokenizer_tag { langscan_csharp_lex_extra_t *extra; void *scanner; } langscan_csharp_tokenizer_t; typedef size_t (*user_read_t)(void **user_data_p, char *buf, size_t maxlen); langscan_csharp_tokenizer_t *langscan_csharp_make_tokenizer(user_read_t user_read, void *user_data); langscan_csharp_token_t langscan_csharp_get_token(langscan_csharp_tokenizer_t *tokenizer); void langscan_csharp_free_tokenizer(langscan_csharp_tokenizer_t *tokenizer); user_read_t langscan_csharp_tokenizer_get_user_read(langscan_csharp_tokenizer_t *tokenizer); void *langscan_csharp_tokenizer_get_user_data(langscan_csharp_tokenizer_t *tokenizer); const char *langscan_csharp_token_name(langscan_csharp_token_t token); #define langscan_csharp_curtoken_beg_lineno(tokenizer) ((tokenizer)->extra->beg_lineno) #define langscan_csharp_curtoken_beg_columnno(tokenizer) ((tokenizer)->extra->beg_columnno) #define langscan_csharp_curtoken_beg_byteno(tokenizer) ((tokenizer)->extra->beg_byteno) #define langscan_csharp_curtoken_end_lineno(tokenizer) ((tokenizer)->extra->end_lineno) #define langscan_csharp_curtoken_end_columnno(tokenizer) ((tokenizer)->extra->end_columnno) #define langscan_csharp_curtoken_end_byteno(tokenizer) ((tokenizer)->extra->end_byteno) #define langscan_csharp_curtoken_text(tokenizer) ((tokenizer)->extra->text) #define langscan_csharp_curtoken_leng(tokenizer) ((tokenizer)->extra->leng) void langscan_csharp_extract_functions(langscan_csharp_tokenizer_t *); #endif