8.5 mglParse class

Класс разбирает и выполняет скрипты MGL. Он определен в #include <mgl2/mgl.h>.

Основная функция класса mglParse – Execute(), выполняющая построчный разбор скрипта. Также есть вспомогательные функции для поиска и создания переменных MGL (объектов, производных от mglDataA). Эти функции полезны для отображения значений массивов во внешних объектах (например, в отдельном окне) или для предоставления доступа к внутренним массивам. Функция AllowSetSize() позволяет запретить изменение размера картинки (запрещает команду setsize). Функция AllowFileIO() позволяет запретить доступ к файлам на диске.

Конструктор класса mglParse: mglParse (bool setsize=false)
Конструктор класса mglParse: mglParse (HMPR pr)
Конструктор класса mglParse: mglParse (mglParse &pr)
Функция С: HMPR mgl_create_parser ()

Создает экземпляр класса mglParse и устанавливает значение AllowSetSize.

Деструктор класса mglParse: ~mglParse ()
Функция С: void mgl_delete_parser (HMPR p)

Удаляет экземпляр класса.

Метод класса mglParse: HMPR Self ()

Возвращает указатель на используемый объект типа HMPR.

Метод класса mglParse: void Execute (mglGraph &gr, const char *text)
Метод класса mglParse: void Execute (mglGraph &gr, const wchar_t *text)
Функция С: void mgl_parse_text (HMGL gr, HMPR p, const char *text)
Функция С: void mgl_parse_textw (HMGL gr, HMPR p, const wchar_t *text)

Выполняет построчно скрипт MGL, содержащийся в text. Строки считаются разделенными символом ‘\n’. Это основная функция класса.

Метод класса mglParse: void Execute (mglGraph &gr, FILE *fp, bool print=false)
Функция С: void mgl_parse_file (HMGL gr, HMPR p, FILE *fp, int print)

Аналогично предыдущему, но скрипт читается из файла fp. Если print=true, то предупреждения и информационные сообщения печатаются в stdout.

Метод класса mglParse: int Parse (mglGraph &gr, const char *str, long pos=0)
Метод класса mglParse: int Parse (mglGraph &gr, const wchar_t *str, long pos=0)
Функция С: int mgl_parse_line (HMGL gr, HMPR p, const char *str, int pos)
Функция С: int mgl_parse_linew (HMGL gr, HMPR p, const wchar_t *str, int pos)

Выполняет строку str с выводом графики на gr. Возвращает код ошибки: 0 – нет ошибок, 1 – неправильные аргументы, 2 – неизвестная команда, 3 – строка слишком длинная, 4 – нет закрывающей скобки или ‘'’. Аргумент pos задает позицию строки в документе/файле для использования в команде for.

Метод класса mglParse: mglData Calc (const char *formula)
Метод класса mglParse: mglData Calc (const wchar_t *formula)
Функция С: HMDT mgl_parser_calc (HMPR p, const char *formula)
Функция С: HMDT mgl_parser_calcw (HMPR p, const wchar_t *formula)

Разбирает строку formula и возвращает полученный массив. В отличие от AddVar() или FindVar(), это обычный массив данных, который следует удалить после использования.

Метод класса mglParse: mglDataC CalcComplex (const char *formula)
Метод класса mglParse: mglDataC CalcComplex (const wchar_t *formula)
Функция С: HADT mgl_parser_calc_complex (HMPR p, const char *formula)
Функция С: HADT mgl_parser_calc_complexw (HMPR p, const wchar_t *formula)

Разбирает строку formula и возвращает полученный массив с комплексными значениями. В отличие от AddVar() или FindVar(), это обычный массив данных, который следует удалить после использования.

Метод класса mglParse: void AddParam (int n, const char *str)
Метод класса mglParse: void AddParam (int n, const wchar_t *str)
Функция С: void mgl_parser_add_param (HMPR p, int id, const char *val)
Функция С: void mgl_parser_add_paramw (HMPR p, int id, const wchar_t *val)

Устанавливает значение n-го параметра строкой str (n=0, 1 ... ’z’-’a’+10). Строка str не должна содержать символ ‘$’.

Метод класса mglParse: mglVar * FindVar (const char *name)
Метод класса mglParse: mglVar * FindVar (const wchar_t *name)
Функция С: HMDT mgl_parser_find_var (HMPR p, const char *name)
Функция С: HMDT mgl_parser_find_varw (HMPR p, const wchar_t *name)

Возвращает указатель на переменную с именем name или NULL если переменная отсутствует. Используйте эту функцию для добавления внешних массивов в скрипт. Не удаляйте полученный массив!

Метод класса mglParse: mglVar * AddVar (const char *name)
Метод класса mglParse: mglVar * AddVar (const wchar_t *name)
Функция С: HMDT mgl_parser_add_var (HMPR p, const char *name)
Функция С: HMDT mgl_parser_add_varw (HMPR p, const wchar_t *name)

Возвращает указатель на переменную с именем name. Если переменная отсутствует, то она будет создана. Используйте эту функцию для добавления внешних массивов в скрипт. Не удаляйте полученный массив!

Метод класса mglParse: void OpenHDF (const char *fname)
Функция С: void mgl_parser_openhdf (HMPR pr, const char *fname)

Читает все массивы данных из HDF5 файла fname и создает переменные MGL с соответствующими именами. Если имя данных начинается с ‘!’, то будут созданы комплексные массивы.

Метод класса mglParse (C++): void DeleteVar (const char *name)
Метод класса mglParse (C++): void DeleteVar (const wchar_t *name)
Функция С: void mgl_parser_del_var (HMPR p, const char *name)
Функция С: void mgl_parser_del_varw (HMPR p, const wchar_t *name)

Удаляет переменную по имени name.

Метод класса mglParse (C++): void DeleteAll ()
Функция С: void mgl_parser_del_all (HMPR p)

Удаляет все переменные и сбрасывает список команд к списку по умолчанию в данном классе.

Метод класса mglParse: void RestoreOnce ()
Функция С: void mgl_parser_restore_once (HMPR p)

Восстанавливает состояние флага Once.

Метод класса mglParse: void AllowSetSize (bool a)
Функция С: void mgl_parser_allow_setsize (HMPR p, int a)

Разрешает/запрещает команду setsize.

Метод класса mglParse: void AllowFileIO (bool a)
Функция С: void mgl_parser_allow_file_io (HMPR p, int a)

Разрешает/запрещает команды чтения файлов.

Метод класса mglParse: void AllowDllCall (bool a)
Функция С: void mgl_parser_allow_dll_call (HMPR p, int a)

Разрешает/запрещает команду load.

Метод класса mglParse: void Stop ()
Функция С: void mgl_parser_stop (HMPR p)

Посылает сигнал завершения выполнения для следующей команды.

Метод класса mglParse: void SetVariant (int var=0)
Функция С: void mgl_parser_variant (HMPR p, int var=0)

Задает вариант аргумента(ов), разделенных символом ‘?’, для всех последующих комманд.

Метод класса mglParse: void StartID (int id=0)
Функция С: void mgl_parser_start_id (HMPR p, int id)

Задает начальный id (обычно это номер строки) первой строки при последующем выполнении скрипта.

Метод класса mglParse: long GetCmdNum ()
Функция С: long mgl_parser_cmd_num (HMPR p)

Возвращает число зарегистрированных команд MGL.

Метод класса mglParse: const char * GetCmdName (long id)
Функция С: const char * mgl_parser_cmd_name (HMPR p, long id)

Возвращает имя команды MGL с заданным номером id.

Метод класса mglParse: int CmdType (const char *name)
Функция С: int mgl_parser_cmd_type (HMPR p, const char *name)

Возвращает тип команды MGL с именем name. Типы команд: 0 – не команда, 1 - графики по данным, 2 - прочие графики, 3 - настройка, 4 - обработка данных, 5 - создание данных, 6 - трансформация, 7 - ход выполнения, 8 - 1d графики, 9 - 2d графики, 10 - 3d графики, 11 - двойные графики, 12 - векторные поля, 13 - оси координат, 14 - примитивы, 15 - настройка осей, 16 - текст/легенда, 17 - изменение данных.

Метод класса mglParse: const char * CmdFormat (const char *name)
Функция С: const char * mgl_parser_cmd_frmt (HMPR p, const char *name)

Возвращает формат аргументов команды MGL с именем name.

Метод класса mglParse: const char * CmdDesc (const char *name)
Функция С: const char * mgl_parser_cmd_desc (HMPR p, const char *name)

Возвращает описание команды MGL с именем name.

Метод класса mglParse: void RK_Step (const char *eqs, const char *vars, mreal dt=1)
Метод класса mglParse: void RK_Step (const wchar_t *eqs, const wchar_t *vars, mreal dt=1)
Функция С: void mgl_rk_step (HMPR p, const char *eqs, const char *vars, mreal dt)
Функция С: void mgl_rk_step_w (HMPR p, const wchar_t *eqs, const wchar_t *vars, mreal dt)

Make one step for ordinary differential equation(s) {var1’ = eq1, ... } with time-step dt. Here strings eqs and vars contain the equations and variable names separated by symbol ‘;’. The variable(s) ‘var1’, ... are the ones, defined in MGL script previously. The Runge-Kutta 4-th order method is used.