summaryrefslogtreecommitdiff
path: root/include/lldb/Host/windows/editlinewin.h
blob: 2bd637848ff00683aa8fb6f5f1023451d77bc9e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
//===-- ELWrapper.h ---------------------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#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, ...);
};