// vim: set ts=8 sts=2 sw=2 tw=99 et:
#ifndef _sourcepawn_compiler_token_stream_h_
#define _sourcepawn_compiler_token_stream_h_

typedef struct {
  int line;
  int col;
} token_pos_t;

typedef struct {
  int id;
  int value;
  char str[sLINEMAX + 1];
  size_t len;
  token_pos_t start;
  token_pos_t end;
} full_token_t;

#define MAX_TOKEN_DEPTH 4

typedef struct {
  // Total number of tokens parsed.
  int num_tokens;

  // Number of tokens that we've rewound back to.
  int depth;

  // Most recently fetched token.
  int cursor;

  // Circular token buffer.
  full_token_t tokens[MAX_TOKEN_DEPTH];
} token_buffer_t;

#endif // _sourcepawn_compiler_token_stream_h_