File: optscript.h

package info (click to toggle)
codelite 17.0.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 136,204 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (88 lines) | stat: -rw-r--r-- 2,984 bytes parent folder | download | duplicates (6)
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
/*
*   Copyright (c) 2020, Masatake YAMATO
*   Copyright (c) 2020, Red Hat, Inc.
*
*   This source code is released for free distribution under the terms of the
*   GNU General Public License version 2 or (at your option) any later version.
*/

#ifndef OPTSCRIPT_H
#define OPTSCRIPT_H

#include "general.h"

#include "es.h"
#include "mio.h"
#include "ptrarray.h"

typedef struct sOptVM OptVM;
typedef EsObject* (* OptOperatorFn) (OptVM *, EsObject *);

struct OptHelpExtender {
	void        (* add)          (ptrArray *, void *);
	const char* (* get_help_str) (EsObject *, void *);
};

int       opt_init (void);

OptVM    *opt_vm_new          (MIO *in, MIO *out, MIO *err);
void      opt_vm_delete       (OptVM *vm);

EsObject *opt_vm_read         (OptVM *vm, MIO *in);
EsObject *opt_vm_eval         (OptVM *vm, EsObject *obj);
void      opt_vm_report_error (OptVM *vm, EsObject *eobj, MIO *err);

void     *opt_vm_set_app_data (OptVM *vm, void *app_data);
void     *opt_vm_get_app_data (OptVM *vm);

char     *opt_vm_set_prompt   (OptVM *vm, char *prompt);
void      opt_vm_print_prompt (OptVM *vm);

int       opt_vm_help         (OptVM *vm, MIO *out,
							   struct OptHelpExtender *extop, void *data);

void      opt_vm_clear       (OptVM *vm);
void      opt_vm_dstack_push (OptVM *vm, EsObject *dict);
void      opt_vm_dstack_pop  (OptVM *vm);

EsObject*  opt_vm_ostack_top  (OptVM *vm);
EsObject*  opt_vm_ostack_peek  (OptVM *vm, int index_from_top);
EsObject*  opt_vm_ostack_pop  (OptVM *vm);
void       opt_vm_ostack_push (OptVM *vm, EsObject *obj);
unsigned int opt_vm_ostack_count (OptVM *vm);

EsObject *opt_dict_new       (unsigned int size);
bool      opt_dict_known_and_get_cstr (EsObject *dict, const char* name, EsObject **val);
bool      opt_dict_foreach   (EsObject *dict, bool (* fn) (EsObject *, EsObject *, void*), void *data);
void      opt_dict_def       (EsObject *dict, EsObject *sym, EsObject *val);
bool      opt_dict_undef     (EsObject *dict, EsObject *sym);
void      opt_dict_clear     (EsObject *dict);

EsObject *opt_array_new      (void);
EsObject *opt_array_get      (const EsObject *array, unsigned int index);
void      opt_array_put      (EsObject *array, unsigned int index, EsObject *obj);
void      opt_array_add      (EsObject *array, EsObject *elt);

unsigned int opt_array_length(const EsObject *array);

EsObject *opt_operator_new   (OptOperatorFn op, const char *name, int arity, const char *help_str);

EsObject *opt_string_new_from_cstr (const char *cstr);
const char* opt_string_get_cstr (const EsObject *str);

EsObject *opt_name_new_from_cstr (const char *cstr);
const char* opt_name_get_cstr (const EsObject *name);

extern EsObject *OPT_ERR_TYPECHECK;
extern EsObject *OPT_ERR_QUIT;
extern EsObject *OPT_ERR_RANGECHECK;
extern EsObject *OPT_ERR_UNDERFLOW;

extern int OPT_TYPE_ARRAY;
extern int OPT_TYPE_DICT;
extern int OPT_TYPE_OPERATOR;
extern int OPT_TYPE_STRING;
extern int OPT_TYPE_NAME;
extern int OPT_TYPE_MARK;

#endif