Java Script Interpreter
Technical documentation /
Техническа документация
(blah)
Цел:
Целта на Java Script интерпретатора е да даде на разработчиците на софтуер възможност да използват скрипт език в своите продукти с което да разширят тяхната функционалност. Така се дава на потребителя възможност за по-добра работа с програмния продукт.
Какво е по-различното (предимства):
Java Script интерпретатора разполага с удобен интерфейс за разработчиците даващ възможност за дефиниране както на външни функции така и на външни променливи, които след това се използват от скрипт файлове.
Прилики и разлики с езика Java Script дефиниран от Netscape:
Java Script интерпретатора е разработен въз основа на документация на Java Script версия 1.1.
Разлики с оригиналния Java Script версия 1.1 (към версия A (beta 2)):
Особености (към версия A (beta 2)):
Описание на функциите които могат да се използват за управление на интерпретатора:
TPostfix JSI_API JSI_InterpretMem(char *szMem); |
Стартира
интерпретатора използвайки съдържанието на
буфера szMem. Буфера трябва да сочи към ANSI
стринг завършващ с 0. Резултата се съдържа в
структура от тип TPostfix, която ще бъде описана
по-късно.
|
TPostfix JSI_API JSI_InterpretFile(char *szFileName); |
Стартира
интерпретатора използвайки съдържанието на
файла szFileName. Буфера трябва да сочи към ANSI
стринг завършващ с 0. На вътрешно ниво функцията
прочита целия файл в буфер и го подава като
аргумент на JSI_InterpretMem(). Резултата се съдържа в
структура от тип TPostfix, която ще бъде описана
по-късно.
|
int JSI_API JSI_GetError(DWORD *pdwLine, DWORD *pdwColumn); |
Връща номера на
грешката или 0 ако няма такава. Параметрите са
съответно за получаване на реда и колоната на
които е възникнала грешката в скрипта. Ако pdwLine или
pdwColumn са NULL, те не се попълват. Ако
върнатата стойност е равна на JSI_UNKNOWN (0xFFFFFFFFUL),
то съответно реда или колоната не са известни.
|
void JSI_API JSI_SetErrorNum(int iErr); |
Задава номер на грешка.
За външни грешки са запазени номерата започващи
от JSIE_USERBASE (5000)
|
void JSI_API JSI_GetErrorStringEnglish(char *szString); |
Връща грешката като
стринг на английски. За целта на вътрешно ниво
тази функция използва JSI_GetError().
|
BOOL JSI_API JSI_AddExtrFunction(char *szName, pJSI_Func pFunction); |
Добавя функцията сочена
от pFunction като функция която може да се вика от
скрипта които ще се интерпретира. За име се
използва szName. Пример: /*********************************************************/ int JSI_CALLBACK test(int argc, PVar argv) { int iCounter; char *szValue; double dValue; for (iCounter = 0; iCounter < argc; iCounter++) { if (JSI_GetParam(iCounter, &szValue, &dValue, argv) == varNum) { printf("%f", dValue); } else printf("%s", szValue); } return 0; } /*********************************************************/ int main(int argc, char *argv[]) { JSI_AddExtrFunction("write", test); return 0; } /*********************************************************/ Така се добавя функция с име write, която може да бъде извикана по следния начин от скрипта: write(‘The number is ‘, 22, ‘\n’)
// като различни параметри
|
BOOL JSI_API JSI_AddExtrVar(char *szName, pJSI_VarGet pGetFunction, pJSI_VarSet pSetFunction); |
Добавя променливата с
име szName, към списъка с валидни променливи. При
четене от променливата се извиква функцията
сочена от pGetFunction. При писане в променливата
се извиква функцията сочена от pSetFunction. Ако
вместо валиден адрес на функция се подаде NULL,
това прави променливата съответно, write-only или read-only.
|
TVarType JSI_API JSI_GetParam(int iVarNum, char **szValue, double *dValue, PVar pVars); |
Връща стойността на
параметъра и неговия тип (типовете са описани в jsi.h).
Определянето на параметъра става според неговия
номер. Номерата на параметрите започват от 0.
|
void JSI_API JSI_SetResult(char *szValue, double dValue, TVarType Type); |
Задава стойността и
типа на резултата върнат от външната функция към
Java Script интерпретатора. ВАЖНО: Тази функция задължително трябва да се използва за връщане на типа и стойността на външните променливи добавени с функцията JSI_AddExtrVar(), като се използва от функцията подадена като pGetFunction, параметър. Пример: static int iProba = -2; /*********************************************************/ int JSI_CALLBACK GetMyVar(void) { JSI_SetResult(NULL, (double)iProba, varNum); // това е задължително return 0; } /*********************************************************/ int JSI_CALLBACK SetMyVar(TVarType Type, char* szValue, double dValue) { if (Type == varNum) iProba = (int)dValue; return 0; } /*********************************************************/ int main(int argc, char *argv[]) { JSI_AddExtrVar("ExternalVar", GetMyVar, SetMyVar); return 0; } /*********************************************************/ |
Допълнителна
информация: http://demosten.com/jsi Последна промяна: 19.08.2000г. |
</край_на_файла>