//===-- editlinewin.h -------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #pragma once #include // EditLine editor function return codes. // For user-defined function interface #define CC_NORM 0 #define CC_NEWLINE 1 #define CC_EOF 2 #define CC_ARGHACK 3 #define CC_REFRESH 4 #define CC_CURSOR 5 #define CC_ERROR 6 #define CC_FATAL 7 #define CC_REDISPLAY 8 #define CC_REFRESH_BEEP 9 // el_set/el_get parameters #define EL_PROMPT 0 // , el_pfunc_t #define EL_TERMINAL 1 // , const char * #define EL_EDITOR 2 // , const char * #define EL_SIGNAL 3 // , int); #define EL_BIND 4 // , const char *, ..., NULL #define EL_TELLTC 5 // , const char *, ..., NULL #define EL_SETTC 6 // , const char *, ..., NULL #define EL_ECHOTC 7 // , const char *, ..., NULL #define EL_SETTY 8 // , const char *, ..., NULL #define EL_ADDFN 9 // , const char *, const char *, el_func_t #define EL_HIST 10 // , hist_fun_t, const char * #define EL_EDITMODE 11 // , int #define EL_RPROMPT 12 // , el_pfunc_t #define EL_GETCFN 13 // , el_rfunc_t #define EL_CLIENTDATA 14 // , void * #define EL_UNBUFFERED 15 // , int #define EL_PREP_TERM 16 // , int #define EL_GETTC 17 // , const char *, ..., NULL #define EL_GETFP 18 // , int, FILE ** #define EL_SETFP 19 // , int, FILE * #define EL_REFRESH 20 // , void #define EL_PROMPT_ESC 21 // , prompt_func, Char); set/get #define EL_BUILTIN_GETCFN (NULL) // history defines #define H_FUNC 0 // , UTSL #define H_SETSIZE 1 // , const int #define H_GETSIZE 2 // , void #define H_FIRST 3 // , void #define H_LAST 4 // , void #define H_PREV 5 // , void #define H_NEXT 6 // , void #define H_CURR 8 // , const int #define H_SET 7 // , int #define H_ADD 9 // , const char * #define H_ENTER 10 // , const char * #define H_APPEND 11 // , const char * #define H_END 12 // , void #define H_NEXT_STR 13 // , const char * #define H_PREV_STR 14 // , const char * #define H_NEXT_EVENT 15 // , const int #define H_PREV_EVENT 16 // , const int #define H_LOAD 17 // , const char * #define H_SAVE 18 // , const char * #define H_CLEAR 19 // , void #define H_SETUNIQUE 20 // , int #define H_GETUNIQUE 21 // , void #define H_DEL 22 // , int struct EditLine {}; struct LineInfo { const char *buffer; const char *cursor; const char *lastchar; }; struct History {}; struct HistEvent { int num; const char *str; }; extern "C" { // edit line API EditLine *el_init(const char *, FILE *, FILE *, FILE *); const char *el_gets(EditLine *, int *); int el_set(EditLine *, int, ...); void el_end(EditLine *); void el_reset(EditLine *); int el_getc(EditLine *, char *); void el_push(EditLine *, const char *); void el_beep(EditLine *); int el_parse(EditLine *, int, const char **); int el_get(EditLine *, int, ...); int el_source(EditLine *, const char *); void el_resize(EditLine *); const LineInfo *el_line(EditLine *); int el_insertstr(EditLine *, const char *); void el_deletestr(EditLine *, int); // history API History *history_init(void); void history_end(History *); int history(History *, HistEvent *, int, ...); };