Copyright
(C) 1998-2010 MKTMK
http://www.mktmk.narod.ru.
e-mail:
mktmk<at>narod.ru
This
document write in WIN1251 code (Russian).
1. Перечисление
enum step{NOSTEP,STEP};
перечисление определяет тип запуска.
При step==STEP метод “run” завершается
с кодом завершения EOLEND после
выполнения каждой строки *.bas-программы.
При step==NOSTEP метод “run” не
завершается после выполнения каждой строки *.bas-программы.
2. Перечисление
enum typeend{
DUMMYEND,ENDFILEEND,ENDOPERATORDETECT,EOLEND,BREAKPOINTEND,NOLOADEND,
BREAKBEFOREOPERATOR,BREAKAFTEROPERATOR
};
перечисление определяет код завершения метода run.
Коды завершения:
-
typeend=DUMMYEND - при нормальной работе никогда не возвращается методом
run.
Используется для внутренних переходов.
- typeend=ENDFILEEND
метод run окончился из-за исчерпания входного потока.
Это нормальное
завершение *.bas-программы при отсутствии в программе оператора END
-
typeend=ENDOPERATORDETECT метод run окончился при обнаружении оператора
END. Это
нормальное завершение *.bas-программы
- typeend=EOLEND
метод run окончился после исполнения очередной строки, т.к.
был установлен
флаг step=STEP методом setstep
-
typeend=BREAKPOINTEND метод run окончился после считывания символа '@',
который
является символом точки останова для Open Basic
-
typeend=NOLOADEND метод run окончился т.к. не был выполнен метод load_project и
входной поток
не открыт
-
typeend=BREAKBEFOREOPERATOR - метод run окончился перед выполнением
оператора OB.
Этот режим окончания оставлен для совместимости со
старым кодом и
не рекомендуется в новых разработках. В последующих версиях
этот режим
поддерживаться не будет.
-
typeend=BREAKAFTEROPERATOR - метод run окончился после выполнения
оператора OB.
Этот режим окончания оставлен для совместимости со
старым кодом и
не рекомендуется в новых разработках. В последующих версиях
этот режим
поддерживаться не будет.
3. Перечисление
enum ob_type_ident {OB_IDENTFLO,OB_IDENTINT,OB_IDENTSTR,OB_NOIDENT};
перечисление определяет тип переменной Open Basic. Перечисление не является членом класса ob_obasic.
4. Перечисление
enum typelex{
PLUS,MINUS,MUL,DIV,POWER,ASSIGN,LP,RP,STRING,SEMICOLON,COMMA,ENDPROGRAMM,EOL,
LESS,GREAT,SHARP,BREAKPOINT,
DECINTNUMBER,HEXINTNUMBER,FLOATNUMBER,
FUNC,OPERATOR,
OLDVARIABLE,OLDARRAY,NEWNAME,
BAD
};
перечисление
определяет тип лексемы.
5. Перечисление
enum ob_type_del{OB_DELETE,OB_NODELETE};
перечисление определяет тип размещения в памяти
возвращаемого пользовательской функцией значения. Используется только для
функций, возвращающих строку.
1.
ob_obasic(ob_ostreamcommon*
o=&cout,ob_istreamcommon* rd=&cin);
Конструктор интерпретатора.
Параметры:
-
o – выходной поток оператора PRINT. Должен быть
открыт в режиме ios::text
-
rd - входной поток оператора INPUT. Должен быть
открыт в режиме ios::binary
2.
Метод
static const ob_type_char* about()
Возвращает строку about. Строка может содержать символы перевода строки.
3.
Метод
void clear_project();
Очищает проект.
4.
Метод void
load_project(ob_istreamcommon* i);
Загружает *.bas-программу в интерпретатор.
5.
Метод set_current_input_stream(ob_istreamcommon* i);
Указывает поток, который должен начать исполняться первым
при вызове метода run().
6.
Метод ob_istreamcommon*
get_current_input_stream();
Возвращает текущий
исполняемый поток.
7.
Метод
typeend run();
Запускает загруженную *.bas-программу (проект).
8.
Метод
void setstep(step ts)
Устанавливает режим пошагового выполнения *.bas-программы.
9.
Метод
step getstep() const
Возвращает текущий режим пошагового выполнения.
10. Метод ob_type_ident
typevar(ob_type_char* name)
Возвращает тип переменной с именем “name”.
11. Метод ob_type_ident
typearray(ob_type_char* name)
Возвращает тип массива с именем “name”.
12. Метод void createvar(ob_type_char* name)
Создает переменную с именем “name” в таблице
переменных.
13. Метод
void
createarray(ob_type_char* name,ob_type_arraydimension kr,ob_type_arraysize* as)
Создает массив с именем “name” в таблице массивов.
14. Метод
ob_type_ident
strlenvar(ob_type_char* name,ob_type_stringsize* len,ob_type_arraysize*
as=OB_NULL)
Определяет длину строковой переменной или элемента
строкового массива.
15. Методы
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”.
16. Методы
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”.
17. Метод const ob_type_arraysize*
getarraysize(ob_type_char* name,ob_type_arraydimension* kr)
Позволяет определить количество измерений и величину
каждого измерения массива с именем “name”.
18. Методы
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.
Метод bool delfun(ob_type_char* name)
Отключает пользовательскую функцию с именем “name” от
исполняющей системе интерпретатора Open Basic.
19. Метод static const ob_type_serialnum
serial_number()
Возвращает номер экземпляра программы.
20. Метод static const ob_type_int version()
Возвращает номер версии программы умноженный на 100. Для
версии 1.90 возвращает число 190.
21. Метод void clrtablfun()
Очищает таблицу пользовательских функций интерпретатора.
22. Метод
bool
setoperatorbreak(ob_type_char* name,ob_functor_break_base* b);
Устанавливает функтор для обслуживания ввода-вывода.
Используется для сопряжения операторов ввода-вывода PRINT и INPUT с
операционной системой.
23. Метод void setout(ob_ostreamcommon*
o)
Устанавливает новый поток вывода, взамен заданного в
конструкторе. Поток должен быть открыт в режиме ios::text.
Используется для сопряжения операторов ввода-вывода PRINT и INPUT с
операционной системой.
24. Метод void setin(ob_istreamcommon*
i)
Устанавливает новый поток ввода, взамен заданного в
конструкторе. Поток должен быть открыт в режиме ios::binary.
Используется для сопряжения операторов ввода-вывода PRINT и INPUT с
операционной системой.
25. Метод ob_lex::typelex gettypenextlex()
Возвращает следующую лексему из входного потока.
Используется для сопряжения операторов ввода-вывода PRINT и INPUT с
операционной системой. После применения метода состояние потока должно быть
восстановлено методом restoreinputpointer().
26. Метод void restoreinputpointer()
Используется для восстановления состояния входного потока
после применения метода gettypenextlex().