blob: 7575f67ca112948bbcae7e79362c433fdd7528bc [file] [log] [blame]
//===-- 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 <stdio.h>
// 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, ...);
};