Copyright (C) 1998-2005 MKTMK Moscow, Russia

http://www.mktmk.narod.ru.

e-mail: mktmk<at>narod.ru

 

This document write in WIN1251 code (Russian).

 

Краткий справочник по методам и перечислениям интерпретатора Open Basic

 

1. Перечисления

 

1.    enum typeload{OVERLAY,NOOVERLAY}; перечисление определяет тип загрузки.

 

Используется в методе “load” и методе “clrtabl  в качестве аргумента.

 

При typeload==NOOVERLAY при загрузке происходит очистка всех таблиц интерпретатора, кроме таблицы пользовательских функций.

 

При typeload==OVERLAY при загрузке происходит очистка всех таблиц интерпретатора, кроме таблицы пользовательских функций, таблицы переменных и таблицы массивов.

 

 

2.    enum step{NOSTEP,STEP}; перечисление определяет тип запуска.

 

При step==STEP метод “run” завершается с кодом завершения EOLEND после выполнения каждой строки *.bas-программы.

 

При step==NOSTEP метод “run” не завершается после выполнения каждой строки *.bas-программы.

 

3.    enum typeend{DUMMYEND,ENDFILEEND,ENDOPERATORDETECT,EOLEND,BREAKPOINTEND,NOLOADEND,BREAKBEFOREOPERATOR,BREAKAFTEROPERATOR}; перечисление определяет код завершения метода “run”.

 

-          typeend=DUMMYEND - при нормальной работе никогда не возвращается методом “run”. Используется для внутренних переходов.

-          typeend=ENDFILEEND метод “run” окончился из-за исчерпания входного потока. Это нормальное завершение *.bas-программы

-          typeend=ENDOPERATORDETECT метод “run” окончился при обнаружении оператора END. Это нормальное завершение *.bas-программы

-          typeend=EOLEND метод “run” окончился после исполнения очередной строки, т.к. был установлен флаг step=STEP методом “setstep”

-          typeend=BREAKPOINTEND метод “run” окончился после считывания символа '@', который является символом точки останова для Open Basic

-          typeend=NOLOADEND метод “run” окончился т.к. не был выполнен метод “load” и входной поток не открыт

-          typeend=BREAKBEFOREOPERATOR - метод “run” окончился перед выполнением какого-то оператора OB

-          typeend=BREAKAFTEROPERATOR - метод “run” окончился после выполнения какого-то оператора OB

 

4.    enum ob_type_ident {OB_IDENTFLO,OB_IDENTINT,OB_IDENTSTR,OB_NOIDENT}; перечисление определяет тип переменной Open Basic. Перечисление не является членом класса ob_obasic.

 

2. Методы

 

 

1.    ob_obasic(istream* i=OB_NULL,ostream* o=&cout,istream* read=&cin);

 

Конструктор интерпретатора.

 

Параметры:

 

-          i    – входной поток. В нем содержится *.bas программа. Должен быть открыт в режиме ios::binary

 

-          o    – выходной поток оператора PRINT. Должен быть открыт в режиме ios::text

 

-          read - входной поток оператора INPUT. Должен быть открыт в режиме ios::binary

 

 

2.    Метод static const ob_type_char* about()

 

Возвращает строку about. Строка может содержать символы перевода строки.

 

 

3.    Метод void load(istream* i,typeload a=ob_obasic::NOOVERLAY);

 

Загружает *.bas-программу в интерпретатор.

 

 

4.    Метод typeend run();

 

Запускает загруженную *.bas-программу.

 

 

5.    Метод void setstep(step ts)

 

Устанавливает режим пошагового выполнения *.bas-программы.

 

 

6.    Метод step getstep() const

 

Возвращает текущий режим пошагового выполнения.

 

 

7.    Метод ob_type_ident typevar(ob_type_char* name)

 

Возвращает тип переменной с именем “name”.

 

 

8.    Метод ob_type_ident typearray(ob_type_char* name)

 

Возвращает тип массива с именем “name”.

 

 

9.    Метод void createvar(ob_type_char* name)

 

Создает переменную с именем “name” в таблице переменных.

 

10.Метод

 

void createarray(ob_type_char* name,ob_type_arraydimension kr,ob_type_arraysize* as)

 

Создает массив с именем “name” в таблице массивов.

 

 

11.Метод

 

ob_type_ident strlenvar(ob_type_char* name,ob_type_stringsize* len,ob_type_arraysize* as=OB_NULL)

 

Определяет длину строковой переменной или элемента строкового массива.

 

12.Методы

 

bool

writevar(ob_type_char* name,ob_type_flo val,ob_type_arraysize* as=OB_NULL)

 

bool

writevar(ob_type_char* name,ob_type_int val,ob_type_arraysize* as=OB_NULL)

 

bool

writevar(ob_type_char* name,ob_type_char* val,ob_type_arraysize* as=OB_NULL)

 

 

Присваивают переменным или элементам массивов с именем “name” значение “val”.

 

13.Методы

 

bool

readvar(ob_type_char* name,ob_type_flo* val,ob_type_arraysize* as=OB_NULL)

 

bool

readvar(ob_type_char* name,ob_type_int* val,ob_type_arraysize* as=OB_NULL)

 

bool

readvar(ob_type_char* name,ob_type_char* val,ob_type_arraysize* as=OB_NULL)

 

 

Читают значения из переменных или элементам массивов с именем “name” и присваивают эти значения “val”.

 

14.Метод const ob_type_arraysize* getarraysize(ob_type_char* name,ob_type_arraydimension* kr)

 

Позволяет определить количество измерений и величину каждого измерения массива с именем “name”.

 

 

15.Методы

 

bool setfun(ob_type_char* name,ob_type_flofun f)

 

bool setfun(ob_type_char* name,ob_type_intfun f)

 

bool setfun(ob_type_char* name,ob_type_charfun f,ob_type_del dt)

 

Подключают пользовательскую функцию с именем “name” к исполняющей системе интерпретатора Open Basic.

 

 

16.Метод bool delfun(ob_type_char* name)

 

Отключает пользовательскую функцию с именем “name” от исполняющей системе интерпретатора Open Basic.

 

 

17.Метод static const ob_type_serialnum serial_number()

 

Возвращает номер экземпляра программы.

 

18.Метод static const ob_type_int version()

 

Возвращает номер версии программы умноженный на 100. Для версии 1.50 возвращает число 150.

 

19.Метод void clrtabl(typeload a=NOOVERLAY)

 

Очищает все таблицы интерпретатора, кроме таблицы пользовательских функций.

 

20.Метод void clrtablfun()

 

Очищает таблицу пользовательских функций интерпретатора.

 

 

21.Метод

 

bool setoperatorbreak(char* name,ob_operator::flbreak b,ob_operator::flbreak a);

 

Устанавливает режим окончания метода “run” до или после выполнения оператора с именем “name”. Используется для сопряжения операторов ввода-вывода PRINT и INPUT с операционной системой.

 

 

22.Метод ob_type_char* getcurrentoperatorname()

 

Возвращает имя последнего выполненного оператора.

 

23.Метод void setout(ostream* o)

 

Устанавливает новый поток вывода, взамен заданного в конструкторе. Поток должен быть открыт в режиме ios::text. Используется для сопряжения операторов ввода-вывода PRINT и INPUT с операционной системой.

 

 

24.Метод void setin(istream* i)

 

Устанавливает новый поток ввода, взамен заданного в конструкторе. Поток должен быть открыт в режиме ios::binary. Используется для сопряжения операторов ввода-вывода PRINT и INPUT с операционной системой.

 

25.Метод ob_lex::typelex gettypenextlex()

 

Возвращает следующую лексему из входного потока. Используется для сопряжения операторов ввода-вывода PRINT и INPUT с операционной системой. После применения метода состояние потока должно быть восстановлено методом restoreinputpointer().

 

26.Метод void restoreinputpointer()

 

Используется для восстановления состояния входного потока после применения метода gettypenextlex().