/*
 * op call program copyright (C) 2009 - 2013 H.Niwa
 */


/*
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301, USA.
 */

#ifndef __OPCALL_H__
#define __OPCALL_H__

extern int OpCall(Context* cx, Node* goalscar, List* module);

// sys module
/*
#define ARGS		1
#define DDLIBPATH	2
#define CUTALL		3
#define MKPRED		4
#define WRITENL		5
#define WRITELN		6
#define PRINT		7
#define WRITE		8
#define ISNIL		9
#define ISATOM		10
#define ISLIST		11
#define ISPRED		12
#define ISVAR		13
#define ISUNDEFVAR	14
#define ISFLOAT		15
#define ISINTEGER	16
#define ISINF		17
#define ISNAN		18
#define FINTE		19
#define ISTRUE		20
#define ISFALSE		21
#define ISUNKNOWN	22
#define MAX		23
#define MIN		24
#define MAXF		25
#define MINF		26
#define SUM		27
#define SUMF		28
#define AVG		29
#define AVGF		30
#define REGEX		31
#define SUB		32
#define GSUB		33
#define SPLIT		34
#define TOUPPER		35
#define TOLOWER		36
#define LENGTH		37
#define RANDOM		38
#define REAL		39
#define IMAGE		40
#define ARG		41
#define NORM		42
#define CONJ		43
#define POLAR		44
#define SIN		45
#define COS		46
#define TAN		47
#define ASIN		48
#define ACOS		49
#define ATAN		50
#define ATAN2		51
#define SINH		52
#define COSH		53
#define TANH		54
#define ASINH		55
#define ACOSH		56
#define ATANH		57
#define LOG		58
#define LOG10		59
#define EXP		60
#define EXP2		61
#define EXP10		62
#define POW		63
#define SQRT		64
#define ABS		65
#define DPI		66
#define DE		67
#define INT		68
#define FLOOR		69
#define CEIL		70
#define TRUNC		71
#define CAR		72
#define CDR		73
#define CAAR		74
#define CADR		75
#define CDAR		76
#define CDDR		77
#define CAAAR		78
#define CAADR		79
#define CADAR		80
#define CADDR		81
#define CDAAR		82
#define CDADR		83
#define CDDAR		84
#define CDDDR		85
#define CAAAAR		86
#define CAAADR		87
#define CAADAR		88
#define CAADDR		89
#define CADAAR		90
#define CADADR		91
#define CADDAR		92
#define CADDDR		93
#define CDAAAR		94
#define CDAADR		95
#define CDADAR		96
#define CDADDR		97
#define CDDAAR		98
#define CDDADR		99
#define CDDDAR		100
#define CDDDDR		101
#define CONS		102
#define NTH		103
#define CODE		104
#define CHAR		105
#define BYTE		106
#define ASCIICHAR	107
#define UTF8CHAR	108
#define EUCCHAR		109
#define SJISCHAR	110
#define CONCAT		111
#define CONCATCODE	112
#define LEFTSTR		113
#define RIGHTSTR	114
#define SUBSTR		115
#define INSERTSTR	116
#define BITAND		117
#define BITOR		118
#define BITXOR		119
#define BITNOT		120
#define SHIFTL		121
#define SHIFTR		122
#define EQ		123
#define NOTEQ		124
#define IS		125
#define GETC		126
#define PUTC		127
#define GETLINE		128
#define SYNTAX		129
#define TMPFILE		130
#define LINE		131
#define OPENR		132
#define OPENW		133
#define OPENWP		134
#define GETTIME		135
#define TIME		136
#define DATE		137
#define SLEEP		138
#define USLEEP		139
#define PAUSE		140
#define BASENAME	141
#define DIRNAME		142
#define SUFFIX		143
#define CLEAR		144
#define UNAME		145
#define COUNTNODE	146
#define DGC		147
*/

// curses module
#define CURS_STARTCURSES	501
#define CURS_MVPRINTW		502
#define CURS_PRINTW		503
#define CURS_REFRESH		504
#define CURS_MOVE		505
#define CURS_CBREAK		506
#define CURS_NOCBREAK		507
#define CURS_RAW		508
#define CURS_NORAW		509
#define CURS_ECHO		510
#define CURS_NOECHO		511
#define CURS_ERASE		512
#define CURS_CLEAR		513
#define CURS_GETCH		514
#define CURS_UNGETCH		515
#define CURS_GETSTR		516
#define CURS_INCH		517
#define CURS_INSTR		518
#define CURS_ISENDWIN		519
#define CURS_BEEP		520
#define CURS_FLASH		521
#define CURS_HLINE		522
#define CURS_VLINE		523
#define CURS_KEYPAD		524
#define CURS_SCROLLOK		525
#define CURS_SCRL		526
#define CURS_LINES		527
#define CURS_COLS		528
#define CURS_DELCH		529
#define CURS_MVDELCH		530
#define CURS_CLRTOBOT		531
#define CURS_CLRTOEOL		532
#define CURS_BORDER		533

// compiler module
#define COMPCHECKRESERVED	601
#define COMPGETVAR		602
#define COMPADDVAR		603
#define COMPCHECKVAR		604
#define COMPNEWFUNC		605
#define COMPENDFUNC		606

// matrix module
#define MATRIXZERO		701
#define MATRIXUNIT		702
#define MATRIXSET		703
#define MATRIXDISPLAY		704
#define MATRIXADD		705
#define MATRIXSUB		706
#define MATRIXMUL		707
#define MATRIXMULSCALAR		708
#define MATRIXDIVSCALAR		709
#define MATRIXTRA		710
#define MATRIXEQ		711
#define MATRIXNOTEQ		712
#define MATRIXDIM		713
#define MATRIXGETROW		714
#define MATRIXGETCOLUMN		715
#define MATRIXSWAPROW		716
#define MATRIXSWAPCOLUMN	717
#define MATRIXRANGEROW		718
#define MATRIXRANGECOLUMN	719
#define MATRIXRANGE		720
#define MATRIXISMATRIX		721
#define MATRIXISVECTOR		722
#define MATRIXISSQUARE		723
#define MATRIXISNULL		724
#define MATRIXISDIAGONAL	725
#define MATRIXISSYMMETRIC	726
#define MATRIXISREGULAR		727
#define MATRIXISSINGULAR	728
#define MATRIXDET		729
#define MATRIXINV		730
#define MATRIXRANDOM		731
#define MATRIXGETVAL		732
#define MATRIXSETVAL		733
#define MATRIXSOLVE		734
#define MATRIXEIGEN		735
#define MATRIXFOURIER		736
#define MATRIXINVFOURIER	737
#define MATRIXROWSORTASND	738
#define MATRIXROWSORTDESND	739
#define MATRIXCOLUMNSORTASND	740
#define MATRIXCOLUMNSORTDESND	741
#define MATRIXCOPY		742

// generator module
#define GENPERMREP		801
#define GENCOMBIREP		802
#define GENPERM			803
#define GENCOMBI		804
#define GENPERMALL		805
#define GENCOMBIALL		806

#endif

