/*************************************************************************/
/* Copyright (c) 2004 */
/* Daniel Sleator, David Temperley, and John Lafferty */
/* Copyright (c) 2014 Linas Vepstas */
/* All rights reserved */
/* */
/* Use of the link grammar parsing system is subject to the terms of the */
/* license set forth in the LICENSE file included with this software. */
/* This license allows free redistribution and use in source and binary */
/* forms, with or without modification, subject to certain conditions. */
/* */
/*************************************************************************/
#ifndef _COMMAND_LINE_
#define _COMMAND_LINE_
#include <link-grammar/link-includes.h>
#define D_USER_FILES 4 /* Debug level for files, see error.h. */
#define COMMENT_CHAR '%' /* input lines beginning with this are ignored */
#define WHITESPACE " \t\v\r\n" /* ASCII-only is sufficient here */
#define FIELD_WIDTH(str, width) (int)((width)+strlen(str)-utf8_strwidth(str))
#define INITIAL_SCREEN_WIDTH 16381
#if !defined(MIN)
#define MIN(X,Y) (((X) < (Y)) ? (X) : (Y))
#endif
#if !defined(MAX)
#define MAX(X,Y) (((X) > (Y)) ? (X) : (Y))
#endif
typedef struct
{
float max_cost;
int linkage_limit;
int max_null_count;
int short_length;
int spell_guess;
int timeout;
} panic_options;
typedef struct {
Parse_Options popts;
panic_options panic;
unsigned int screen_width; /* width of screen for displaying linkages */
bool batch_mode; /* if true, process sentences non-interactively */
bool allow_null; /* true if we allow null links in parsing */
bool echo_on; /* true if we should echo the input sentence */
bool panic_mode; /* if true, parse in "panic mode" after all else fails */
bool display_on; /* if true, output graphical linkage diagram */
bool display_walls; /* if true, show the wall words in the linkage diagram */
bool display_postscript;/* if true, output postscript linkage */
bool display_ps_header; /* if true, output postscript headers */
ConstituentDisplayStyle display_constituents; /* style for displaying constituent structure */
bool display_bad; /* if true, bad linkages are displayed */
bool display_disjuncts; /* if true, print disjuncts that were used */
bool display_links; /* if true, a list o' links is printed out */
int display_wordgraph; /* if nonzero, the word-graph is displayed */
} Command_Options;
void put_local_vars_in_opts(Command_Options *);
void put_opts_in_local_vars(Command_Options *);
void setup_panic_parse_options(Command_Options *, int);
typedef enum
{
Int,
Bool,
Float,
String,
Cmd,
} ParamType;
typedef struct
{
const char *string;
ParamType param_type;
const char *description;
void *ptr;
} Switch;
void save_default_opts(Command_Options*);
int issue_special_command(const char*, Command_Options*, Dictionary);
Command_Options* command_options_create(void);
void command_options_delete(Command_Options*);
void display_1line_help(const Switch *, bool);
void print_url_info(void);
#define UNDOC "\1" /* undocumented command */
#endif /* _COMMAND_LINE_ */