Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
fpc-src / usr / share / fpcsrc / 3.0.0 / packages / gtk2 / src / glib / gscanner.inc
Size: Mime:
// included by glib2.pas

{$IFDEF read_forward_definitions}
{$ENDIF read_forward_definitions}

//------------------------------------------------------------------------------

{$IFDEF read_interface_types}
  PGTokenType = ^TGTokenType;
  TGTokenType = gint;

  PGScanner = ^TGScanner;
  PGScannerConfig = ^TGScannerConfig;

  PGTokenValue = ^TGTokenValue;
  TGTokenValue = record
    case longint of
       0 : ( v_symbol : gpointer );
       1 : ( v_identifier : Pgchar );
       2 : ( v_binary  : gulong );
       3 : ( v_octal   : gulong );
       4 : ( v_int     : gulong );
       5 : ( v_float   : gdouble );
       6 : ( v_hex     : gulong );
       7 : ( v_string  : Pgchar );
       8 : ( v_comment : Pgchar );
       9 : ( v_char    : guchar );
       10 : ( v_error  : guint );
    end;

  TGScannerMsgFunc = procedure (scanner:PGScanner; message:Pgchar; error:gboolean);cdecl;

  TGScanner = record
    user_data         : gpointer;          { unused fields  }
    max_parse_errors  : guint;

    parse_errors      : guint;             { g_scanner_error() increments this field  }

    input_name        : Pgchar;            { name of input stream, featured by
                                             the default message handler  }

    qdata             : PGData;            { quarked data  }

    config            : PGScannerConfig;   { link into the scanner configuration  }

    token             : TGTokenType;       { fields filled in after g_scanner_get_next_token()  }
    value             : TGTokenValue;
    line              : guint;
    position          : guint;

    next_token        : TGTokenType;       { fields filled in after g_scanner_peek_next_token()  }
    next_value        : TGTokenValue;
    next_line         : guint;
    next_position     : guint;

    symbol_table      : PGHashTable;       { to be considered private  }
    input_fd          : gint;
    text              : Pgchar;
    text_end          : Pgchar;
    buffer            : Pgchar;
    scope_id          : guint;

    msg_handler       : TGScannerMsgFunc;  { handler function for _warn and _error  }
  end;

  TGScannerConfig = record
   { Character sets  }
    cset_skip_characters   : Pgchar;        { default: " \t\n"  }

    cset_identifier_first  : Pgchar;
    cset_identifier_nth    : Pgchar;
    cpair_comment_single   : Pgchar;        { default: "#\n"  }

    flag0                  : longint;    { Boolean values to be adjusted "on the fly"
                                           to configure scanning behaviour. }
    padding_dummy          : guint;
  end;
{$ENDIF read_interface_types}

//------------------------------------------------------------------------------

{$IFDEF read_interface_rest}
const
  G_TOKEN_LEFT_PAREN          = 40;  // ASCII Code of '('
  G_TOKEN_RIGHT_PAREN         = 41;  // ASCII Code of ')'
  G_TOKEN_LEFT_CURLY          = 123; // ASCII Code of '{'
  G_TOKEN_RIGHT_CURLY         = 125; // ASCII Code of '}'
  G_TOKEN_LEFT_BRACE          = 91;  // ASCII Code of '['
  G_TOKEN_RIGHT_BRACE         = 93;  // ASCII Code of ']'
  G_TOKEN_EQUAL_SIGN          = 61;  // ASCII Code of '='
  G_TOKEN_COMMA               = 44;  // ASCII Code of ','
  G_TOKEN_NONE                = 256;
  G_TOKEN_ERROR               = 257;
  G_TOKEN_CHAR                = 258;
  G_TOKEN_OCTAL               = 260;
  G_TOKEN_INT                 = 261;
  G_TOKEN_HEX                 = 262;
  G_TOKEN_FLOAT               = 263;
  G_TOKEN_STRING              = 264;
  G_TOKEN_SYMBOL              = 265;
  G_TOKEN_IDENTIFIER          = 266;
  G_TOKEN_IDENTIFIER_NULL     = 267;
  G_TOKEN_COMMENT_SINGLE      = 268;
  G_TOKEN_COMMENT_MULTI       = 269;
  G_TOKEN_LAST                = 270;

{ Character sets  }

const
  G_CSET_A_2_Z_UCASE  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';        // NOTE: renamed
  G_CSET_a_2_z_lcase  = 'abcdefghijklmnopqrstuvwxyz';        //  dito
  G_CSET_DIGITS = '0123456789';
{

  How to express an escape sequenced string in pascal???

     G_CSET_LATINC = #300 + #301 + #302 + #303 + #304 + #305 + #306 + #307 + #310 + #311 +
                     #312 + #313 + #314 + #315 + #316 + #317 + #320 + #321 + #322 + #323 +
                     #324 + #325 + #326 + #330 + #331 + #332 + #333 + #334 + #335 + #336;

     G_CSET_LATINS = #337#340#341#342#343#344#345#346#347#350#351#352#353#354#355#356#357#360
                     #361#362#363#364#365#366#370#371#372#373#374#375#376#377;

  This is the original version:

  #define G_CSET_LATINC "\300\301\302\303\304\305\306"\
                        "\307\310\311\312\313\314\315\316\317\320"\
                        "\321\322\323\324\325\326"\
                        "\330\331\332\333\334\335\336"
  #define G_CSET_LATINS "\337\340\341\342\343\344\345\346"\
                        "\347\350\351\352\353\354\355\356\357\360"\
                        "\361\362\363\364\365\366"\
                        "\370\371\372\373\374\375\376\377"

}

const
  bm_TGScannerConfig_case_sensitive = $1;
  bp_TGScannerConfig_case_sensitive = 0;
  bm_TGScannerConfig_skip_comment_multi = $2;
  bp_TGScannerConfig_skip_comment_multi = 1;
  bm_TGScannerConfig_skip_comment_single = $4;
  bp_TGScannerConfig_skip_comment_single = 2;
  bm_TGScannerConfig_scan_comment_multi = $8;
  bp_TGScannerConfig_scan_comment_multi = 3;
  bm_TGScannerConfig_scan_identifier = $10;
  bp_TGScannerConfig_scan_identifier = 4;
  bm_TGScannerConfig_scan_identifier_1char = $20;
  bp_TGScannerConfig_scan_identifier_1char = 5;
  bm_TGScannerConfig_scan_identifier_NULL = $40;
  bp_TGScannerConfig_scan_identifier_NULL = 6;
  bm_TGScannerConfig_scan_symbols = $80;
  bp_TGScannerConfig_scan_symbols = 7;
  bm_TGScannerConfig_scan_binary = $100;
  bp_TGScannerConfig_scan_binary = 8;
  bm_TGScannerConfig_scan_octal = $200;
  bp_TGScannerConfig_scan_octal = 9;
  bm_TGScannerConfig_scan_float = $400;
  bp_TGScannerConfig_scan_float = 10;
  bm_TGScannerConfig_scan_hex = $800;
  bp_TGScannerConfig_scan_hex = 11;
  bm_TGScannerConfig_scan_hex_dollar = $1000;
  bp_TGScannerConfig_scan_hex_dollar = 12;
  bm_TGScannerConfig_scan_string_sq = $2000;
  bp_TGScannerConfig_scan_string_sq = 13;
  bm_TGScannerConfig_scan_string_dq = $4000;
  bp_TGScannerConfig_scan_string_dq = 14;
  bm_TGScannerConfig_numbers_2_int = $8000;
  bp_TGScannerConfig_numbers_2_int = 15;
  bm_TGScannerConfig_int_2_float = $10000;
  bp_TGScannerConfig_int_2_float = 16;
  bm_TGScannerConfig_identifier_2_string = $20000;
  bp_TGScannerConfig_identifier_2_string = 17;
  bm_TGScannerConfig_char_2_token = $40000;
  bp_TGScannerConfig_char_2_token = 18;
  bm_TGScannerConfig_symbol_2_token = $80000;
  bp_TGScannerConfig_symbol_2_token = 19;
  bm_TGScannerConfig_scope_0_fallback = $100000;
  bp_TGScannerConfig_scope_0_fallback = 20;

{ Should symbol lookup work case sensitive?  }
function TGScannerConfig_case_sensitive(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_case_sensitive(var a : TGScannerConfig; __case_sensitive : guint);

{ C-like comment  }
function TGScannerConfig_skip_comment_multi(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_skip_comment_multi(var a : TGScannerConfig; __skip_comment_multi : guint);

{ single line comment  }
function TGScannerConfig_skip_comment_single(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_skip_comment_single(var a : TGScannerConfig; __skip_comment_single : guint);

{ scan multi line comments?  }
function TGScannerConfig_scan_comment_multi(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_comment_multi(var a : TGScannerConfig; __scan_comment_multi : guint);

function TGScannerConfig_scan_identifier(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_identifier(var a : TGScannerConfig; __scan_identifier : guint);

function TGScannerConfig_scan_identifier_1char(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_identifier_1char(var a : TGScannerConfig; __scan_identifier_1char : guint);

function TGScannerConfig_scan_identifier_NULL(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_identifier_NULL(var a : TGScannerConfig; __scan_identifier_NULL : guint);

function TGScannerConfig_scan_symbols(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_symbols(var a : TGScannerConfig; __scan_symbols : guint);

function TGScannerConfig_scan_binary(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_binary(var a : TGScannerConfig; __scan_binary : guint);

function TGScannerConfig_scan_octal(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_octal(var a : TGScannerConfig; __scan_octal : guint);

function TGScannerConfig_scan_float(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_float(var a : TGScannerConfig; __scan_float : guint);

{ `0x0ff0'  }
function TGScannerConfig_scan_hex(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_hex(var a : TGScannerConfig; __scan_hex : guint);

{ `$0ff0'  }
function TGScannerConfig_scan_hex_dollar(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_hex_dollar(var a : TGScannerConfig; __scan_hex_dollar : guint);

{ string: 'anything'  }
function TGScannerConfig_scan_string_sq(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_string_sq(var a : TGScannerConfig; __scan_string_sq : guint);

{ string: "\\-escapes!\n"  }
function TGScannerConfig_scan_string_dq(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scan_string_dq(var a : TGScannerConfig; __scan_string_dq : guint);

{ bin, octal, hex => int  }
function TGScannerConfig_numbers_2_int(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_numbers_2_int(var a : TGScannerConfig; __numbers_2_int : guint);

{ int => G_TOKEN_FLOAT?  }
function TGScannerConfig_int_2_float(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_int_2_float(var a : TGScannerConfig; __int_2_float : guint);

function TGScannerConfig_identifier_2_string(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_identifier_2_string(var a : TGScannerConfig; __identifier_2_string : guint);

{ return G_TOKEN_CHAR?  }
function TGScannerConfig_char_2_token(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_char_2_token(var a : TGScannerConfig; __char_2_token : guint);

function TGScannerConfig_symbol_2_token(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_symbol_2_token(var a : TGScannerConfig; __symbol_2_token : guint);

{ try scope 0 on lookups?  }
function TGScannerConfig_scope_0_fallback(var a : TGScannerConfig) : guint;
procedure TGScannerConfig_set_scope_0_fallback(var a : TGScannerConfig; __scope_0_fallback : guint);


function  g_scanner_new(config_templ:PGScannerConfig):PGScanner;cdecl;external gliblib name 'g_scanner_new';
procedure g_scanner_destroy(scanner:PGScanner);cdecl;external gliblib name 'g_scanner_destroy';
procedure g_scanner_input_file(scanner:PGScanner; input_fd:gint);cdecl;external gliblib name 'g_scanner_input_file';
procedure g_scanner_sync_file_offset(scanner:PGScanner);cdecl;external gliblib name 'g_scanner_sync_file_offset';
procedure g_scanner_input_text(scanner:PGScanner; text:Pgchar; text_len:guint);cdecl;external gliblib name 'g_scanner_input_text';
function  g_scanner_get_next_token(scanner:PGScanner):TGTokenType;cdecl;external gliblib name 'g_scanner_get_next_token';
function  g_scanner_peek_next_token(scanner:PGScanner):TGTokenType;cdecl;external gliblib name 'g_scanner_peek_next_token';
function  g_scanner_cur_token(scanner:PGScanner):TGTokenType;cdecl;external gliblib name 'g_scanner_cur_token';
function  g_scanner_cur_value(scanner:PGScanner):TGTokenValue;cdecl;external gliblib name 'g_scanner_cur_value';
function  g_scanner_cur_line(scanner:PGScanner):guint;cdecl;external gliblib name 'g_scanner_cur_line';
function  g_scanner_cur_position(scanner:PGScanner):guint;cdecl;external gliblib name 'g_scanner_cur_position';
function  g_scanner_eof(scanner:PGScanner):gboolean;cdecl;external gliblib name 'g_scanner_eof';
function  g_scanner_set_scope(scanner:PGScanner; scope_id:guint):guint;cdecl;external gliblib name 'g_scanner_set_scope';
procedure g_scanner_scope_add_symbol(scanner:PGScanner; scope_id:guint; symbol:Pgchar; value:gpointer);cdecl;external gliblib name 'g_scanner_scope_add_symbol';
procedure g_scanner_scope_remove_symbol(scanner:PGScanner; scope_id:guint; symbol:Pgchar);cdecl;external gliblib name 'g_scanner_scope_remove_symbol';
function  g_scanner_scope_lookup_symbol(scanner:PGScanner; scope_id:guint; symbol:Pgchar):gpointer;cdecl;external gliblib name 'g_scanner_scope_lookup_symbol';
procedure g_scanner_scope_foreach_symbol(scanner:PGScanner; scope_id:guint; func:TGHFunc; user_data:gpointer);cdecl;external gliblib name 'g_scanner_scope_foreach_symbol';
function g_scanner_lookup_symbol(scanner:PGScanner; symbol:Pgchar):gpointer;cdecl;external gliblib name 'g_scanner_lookup_symbol';
procedure g_scanner_unexp_token(scanner:PGScanner; expected_token:TGTokenType; identifier_spec:Pgchar; symbol_spec:Pgchar; symbol_name:Pgchar;
            _message:Pgchar; is_error:gint);cdecl;external gliblib name 'g_scanner_unexp_token';


{$IFNDEF KYLIX}
procedure g_scanner_error(scanner:PGScanner; format:Pgchar; args:array of const);cdecl;overload;external gliblib name 'g_scanner_error';
procedure g_scanner_error(scanner:PGScanner; format:Pgchar);cdecl;overload;varargs;external gliblib name 'g_scanner_error';

procedure g_scanner_warn(scanner:PGScanner; format:Pgchar; args:array of const);cdecl;overload;external gliblib name 'g_scanner_warn';
procedure g_scanner_warn(scanner:PGScanner; format:Pgchar);cdecl;overload;varargs;external gliblib name 'g_scanner_warn';
{$ELSE}
procedure g_scanner_error(scanner:PGScanner; format:Pgchar);varargs;cdecl;external gliblib name 'g_scanner_error';
procedure g_scanner_warn(scanner:PGScanner; format:Pgchar);varargs;cdecl;external gliblib name 'g_scanner_warn';
{$ENDIF}

{$ifndef G_DISABLE_DEPRECATED}
procedure g_scanner_freeze_symbol_table(scanner : PGScanner);
procedure g_scanner_thaw_symbol_table(scanner : PGScanner);
{$endif} { G_DISABLE_DEPRECATED  }

{$ENDIF read_interface_rest}
// included by glib2.pas