Copyright (C) 1998-2010 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 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};

 

перечисление определяет тип размещения в памяти возвращаемого пользовательской функцией значения. Используется только для функций, возвращающих строку.

 

2. Методы

  

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().