C-API

Name

C-API --  C-функции, позволяющие использовать C вместе с CLIP.

Function

double              _clip_parnd(ClipMachine * cm,int num)
int                 _clip_parni(ClipMachine * cm,int num)
long                _clip_parnl(ClipMachine * cm,int num)
void                _clip_retnd(ClipMachine * cm,double n)
void                _clip_retni(ClipMachine * cm,int n)
void                _clip_retnl(ClipMachine * cm,long n)

Description

C-API языка CLIP представляет собой набор C-функций, позволяющих использовать C вместе с CLIP. Это может понадобиться, например, для написания функций, критичных по скорости выполнения; для написания функций-оболочек для существующих функций или библиотек, и т.д. Знание C-API даст вам более полное представление о внутренней структуре CLIP.

C-функции, которые предполагается использовать с CLIP (т.е. те которые можно вызывать из CLIP-функций, в дальнейшем 'экспортируемые функции'), располагаются в отдельном исходном файле C, или нескольких файлах. В этих файлах должно быть включение заголовочного файла "clip.h", в котором находятся прототипы функций C-API и описания структур.

Имя экспортируемой функции должно иметь префикс 'clip_', а само имя функции должно быть написано заглавными буквами. Она должна возвращать значение типа 'int', а получать один единственный параметр типа 'ClipMachine *' - указательна структуру, содержащую контекст текущей Виртуальной Машины CLIP.

Экспортируемая функция должна возвращать 0 (ноль) в случае успеха, или соответствующий код ошибки (описанные в error.ch, имеющие префикс 'EG_').

Пример:
/* my.c */
#include <stdio.h>
#include "clip.h"

int clip_MYFUNCTION(ClipMachine *cm)
{
printf("Hello from MyFunction()\n");
return 0;
}
/* end of my.c */

/* test.prg */
MyFunction()
/* end of test.prg */

Compilation:

gcc -c -I${CLIPROOT}/include my.c
clip -eM test.prg my.o

Running:
#./test
Hello from MyFunction
#

Function _CLIP_PARND()

 _clip_parnd(ClipMachine * cm,int num) --> double

_clip_parnd() принимает числовое значение переданное в качестве параметра из CLIP и преобразует его в double.

Function _CLIP_PARNI()

 _clip_parni(ClipMachine * cm,int num) --> int

_clip_parni() принимает числовое значение переданное в качестве параметра из CLIP и преобразует его в int.

Function _CLIP_PARNL()

 _clip_parnl(ClipMachine * cm,int num) --> long

_clip_parnl() принимает числовое значение переданное в качестве параметра из CLIP и преобразует его в long.

Function _CLIP_RETND()

 _clip_retnd(ClipMachine * cm,double n) --> void

_clip_retnd() используется для переноса числового значения в область возвращаемых значений CLIP. Позднее, когда экспортируемая функция, написанная на C, возвратит управление в вызвавшую ее CLIP программу, перенесенное арифметическое значение будет доступным точно так же, как если бы оно было непосредственно возвращено из CLIP-функции.

Function _CLIP_RETNI()

 _clip_retni(ClipMachine * cm,int n) --> void

_clip_retni() используется для переноса числового значения в область возвращаемых значений CLIP. Позднее, когда экспортируемая функция, написанная на C, возвратит управление в вызвавшую ее CLIP программу, перенесенное арифметическое значение будет доступным точно так же, как если бы оно было непосредственно возвращено из CLIP-функции.

Function _CLIP_RETNL()

 _clip_retnl(ClipMachine * cm,long n) --> void

_clip_retnl() используется для переноса числового значения в область возвращаемых значений CLIP. Позднее, когда экспортируемая функция, написанная на C, возвратит управление в вызвавшую ее CLIP программу, перенесенное арифметическое значение будет доступным точно так же, как если бы оно было непосредственно возвращено из CLIP-функции.

Function _CLIP_STORND()

Function _CLIP_STORNI()

 _clip_storni(ClipMachine * mp, int n, int num, int ind) --> int

Function _CLIP_STORNL()

 _clip_stornl(ClipMachine * mp, long n, int num, int ind) --> int