]> icculus.org git repositories - btb/d2x.git/blob - main/editor/func.c
Move old logs to ChangeLog-old
[btb/d2x.git] / main / editor / func.c
1 /* $Id: func.c,v 1.2 2004-12-19 14:52:48 btb Exp $ */
2 /*
3 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
4 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
5 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
6 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
7 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
8 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
9 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
10 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
11 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
12 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
13 */
14
15 /*
16  *
17  * .
18  *
19  */
20
21
22 #ifdef RCS
23 static char rcsid[] = "$Id: func.c,v 1.2 2004-12-19 14:52:48 btb Exp $";
24 #endif
25
26 #include <stdlib.h>
27 #include <string.h>
28
29 #include "func.h"
30
31 #define MAX_PARAMS 10
32
33 static FUNCTION * func_table = NULL;
34 static int func_size = 0;
35 static int initialized = 0;
36 static int func_params[MAX_PARAMS];
37
38 int func_howmany()
39 {
40         return func_size;
41 }
42
43 void func_init( FUNCTION * funtable, int size )
44 {
45         if (!initialized)
46         {
47                 initialized = 1;
48                 func_table = funtable;
49                 func_size = size;
50                 atexit( func_close );
51         }
52 }
53
54
55 void func_close()
56 {
57         if (initialized)
58         {
59                 initialized = 0;
60                 func_table = NULL;
61                 func_size = 0;
62         }
63 }
64
65 int (*func_get( char * name, int * numparams ))(void)
66 {
67         int i;
68
69         for (i=0; i<func_size; i++ )
70                 if (!stricmp( name, func_table[i].name ))
71                 {
72                         *numparams = func_table[i].nparams;
73                         return func_table[i].cfunction;
74                 }
75
76         return NULL;
77 }
78
79 int func_get_index( char * name )
80 {
81         int i;
82
83         for (i=0; i<func_size; i++ )
84                 if (!stricmp( name, func_table[i].name ))
85                 {
86                         return i;
87                 }
88
89         return -1;
90 }
91
92
93 int (*func_nget( int func_number, int * numparams, char **name ))(void)
94 {
95         if (func_number < func_size )
96         {
97                 *name = func_table[func_number].name;
98                 *numparams = func_table[func_number].nparams;
99                 return func_table[func_number].cfunction;
100         }
101
102         return NULL;
103 }
104
105 void func_set_param( int n, int value )
106 {
107         func_params[n] = value;
108 }
109
110 int func_get_param( int n )
111 {
112         return func_params[n];
113 }
114
115