Документация
Здесь описаны функции и структуры для использования языка программирования Gentee в проектах на Golang.
Типы
type Custom
Тип Custom служит для дополнительной настройки компилятора и виртуальной машины. Передается при вызове функции Customize.
Embedded []EmbedItem - массив дополнительных функций для стандартной библиотеки.
type EmbedItem
Тип EmbedItem описывает функцию, подключаемую к стандартной библиотеки. Используется в типе Custom.
Prototype string - описание функции на языке Gentee. Например, myfunc(str,int) int.
Object interface{} - соответствующая golang функция.
type Settings
Тип Settings служит для указания дополнительных параметров при запуске байт-кода в методе Run.
CmdLine []string - массив параметров командной строки.
Stdin *os.File - свой собственный стандартный ввод.
Stdout *os.File - свой собственный стандартный вывод.
Stderr *os.File - свой собственный вывод для ошибок.
Input []byte - предопределенный стандартный ввод (stdin). Может использоваться, например, в функции ReadString.
Cycle uint64 - максимальное количество итераций в цикле. По умолчанию, равно 16000000.
Depth uint32 - максимальная вложенность исполняемых блоков. Ограничивает глубину рекурсии. По умолчанию, равно 1000.
SysChan chan int - канал для отправки команд SysSuspend (1), SysResume (2), SysTerminate (3). Позволяет управлять выполнением скрипта извне.
SysSuspend - приостановить работу скрипта и всех потоков.
SysResume - возобновить работу скрипта и всех потоков.
SysTerminate - завершить работу скрипта и всех потоков.
IsPlayground bool - присвойте true, если хотите запустить скрипт в безопасном режиме песочницы.
Playground Playground - настройки режима песочницы.
Path string - путь к временной директории для записи и чтения файлов. Если не указан, то будет будет создана поддиректория во временной директории.
AllSizeLimit int64 - суммарный размер файлов. По умолчанию, 10 MB.
FilesLimit int - максимальное количество файлов. По умолчанию, 100.
SizeLimit int64 - максимальный размер файла. По умолчанию, 5 MB.
ProgressFunc gentee.ProgressFunc - функция для отображения процесса копирования, скачивания и т.д., например, в виде прогресс-бара. Функция должна иметь следующий тип:
func MyProgress(progress *gentee.Progress) bool
и возвращать true. Тип Progress описан ниже. Функция ProgressFunc вызывается при копировании, скачивании файлов, а также при вызове функций Progress.
type Progress
Тип Progress служит для отображения процесса копирования, скачивания. Переменная этого типа передается в функцию ProgressFunc и имеет следующие поля:
ID uint32 - уникальный идентификатор.
Type int32 - тип процесса.
ProgressCopy (0) - копирование.
ProgressDownload (1) - скачивание.
ProgressCompress (2) - сжатие.
ProgressDecompress (3) - распаковка.
Status int32 - статус.
ProgStatusStart (0) - начало процесса.
ProgStatusActive (1) - процесс идёт.
ProgStatusEnd (2) - процесс закончен.
Total int64 - общий размер.
Current int64 - текущий размер.
Source string - источник процесса.
Dest string - целевой объект процесса.
Ratio float64 - отношение Current/Total. Для получения процентов необходимо умножить на 100.
Custom interface{} - служит для хранения любой дополнительной информации.
Функции и методы
Customize(custom *Custom) error
Функция Customize служит для дополнительной настройки компилятора и виртуальной машины. Она должна вызываться раньше всех функций. Функция возвращает значение ошибки.
New() *Gentee
Функция New создает рабочее пространство для компиляции исходного кода.
(g *Gentee) Compile(input, path string) (*Exec, int, error)
Функция Compile компилирует скрипт переданный в input. В параметре path можно указать путь к скрипту. Функция возвращает структуру с байт-кодом, номер модуля и значение ошибки.
(g *Gentee) CompileAndRun(filename string) (interface{}, error)
Функция CompileAndRun компилирует скрипт из файле filename и выполняет его. Функция возвращает результат выполнения скрипта и значение ошибки.
(g *Gentee) CompileFile(filename string) (*Exec, int, error)
Функция CompileFile компилирует скрипт из файла filename. Функция возвращает структуру с байт-кодом, номер модуля и значение ошибки.
(exec *Exec) Run(settings Settings) (interface{}, error)
Функция Run выполняет байт-код из структуры exec. В параметре settings можно указать дополнительные настройки. Функция возвращает результат выполнения скрипта и значение ошибки.
Gentee2GoType(val interface{}, vtype... string) interface{}
Функция Gentee2GoType конвертирует переменную в стандартные типы Go. Во втором параметре можно указать тип Gentee переменной. Например, arr.bool. В этом случае, вы получите массив переменных типа bool, а не int64. Вы можете использовать эту функцию, в ваших встраиваемых функциях.
Таблица соответствия типов
Go2GenteeType(val interface{}, vtype... string) (interface{}, error)
Функция Go2GenteeType конвертирует стандартный тип Go в тип Gentee. Во втором параметре можно указать тип Gentee переменной. Например, set, если вы хотите сконвертировать []byte в *core.Set. Вы можете использовать эту функцию, в ваших встраиваемых функциях.
Таблица соответствия типов
Version() string
Функция Version возвращает номер текущей версии языка.
Last updated