提交 89ecc939 authored 作者: Michael Jerris's avatar Michael Jerris

dos2unix

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6242 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 797d7c57
/* A conio implementation for Mingw/Dev-C++. /* A conio implementation for Mingw/Dev-C++.
* *
* Written by: * Written by:
* Hongli Lai <hongli@telekabel.nl> * Hongli Lai <hongli@telekabel.nl>
* tkorrovi <tkorrovi@altavista.net> on 2002/02/26. * tkorrovi <tkorrovi@altavista.net> on 2002/02/26.
* Andrew Westcott <ajwestco@users.sourceforge.net> * Andrew Westcott <ajwestco@users.sourceforge.net>
* *
* Offered for use in the public domain without any warranty. * Offered for use in the public domain without any warranty.
*/ */
#ifndef _CONIO_H_ #ifndef _CONIO_H_
#define _CONIO_H_ #define _CONIO_H_
#include <stdio.h> #include <stdio.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#define BLINK 0 #define BLINK 0
typedef enum typedef enum
{ {
BLACK, BLACK,
BLUE, BLUE,
GREEN, GREEN,
CYAN, CYAN,
RED, RED,
MAGENTA, MAGENTA,
BROWN, BROWN,
LIGHTGRAY, LIGHTGRAY,
DARKGRAY, DARKGRAY,
LIGHTBLUE, LIGHTBLUE,
LIGHTGREEN, LIGHTGREEN,
LIGHTCYAN, LIGHTCYAN,
LIGHTRED, LIGHTRED,
LIGHTMAGENTA, LIGHTMAGENTA,
YELLOW, YELLOW,
WHITE WHITE
} COLORS; } COLORS;
#define cgets _cgets #define cgets _cgets
#define cprintf _cprintf #define cprintf _cprintf
#define cputs _cputs #define cputs _cputs
#define cscanf _cscanf #define cscanf _cscanf
#define ScreenClear clrscr #define ScreenClear clrscr
/* blinkvideo */ /* blinkvideo */
void clreol (void); void clreol (void);
void clrscr (void); void clrscr (void);
int _conio_gettext (int left, int top, int right, int bottom, int _conio_gettext (int left, int top, int right, int bottom,
char *str); char *str);
/* _conio_kbhit */ /* _conio_kbhit */
void delline (void); void delline (void);
/* gettextinfo */ /* gettextinfo */
void gotoxy(int x, int y); void gotoxy(int x, int y);
/* /*
highvideo highvideo
insline insline
intensevideo intensevideo
lowvideo lowvideo
movetext movetext
normvideo normvideo
*/ */
void gotoxy(int x, int y); void gotoxy(int x, int y);
void puttext (int left, int top, int right, int bottom, char *str); void puttext (int left, int top, int right, int bottom, char *str);
// Screen Variables // Screen Variables
/* ScreenCols /* ScreenCols
ScreenGetChar ScreenGetChar
ScreenGetCursor ScreenGetCursor
ScreenMode ScreenMode
ScreenPutChar ScreenPutChar
ScreenPutString ScreenPutString
ScreenRetrieve ScreenRetrieve
ScreenRows ScreenRows
ScreenSetCursor ScreenSetCursor
ScreenUpdate ScreenUpdate
ScreenUpdateLine ScreenUpdateLine
ScreenVisualBell ScreenVisualBell
_set_screen_lines */ _set_screen_lines */
void _setcursortype (int type); void _setcursortype (int type);
void textattr (int _attr); void textattr (int _attr);
void textbackground (int color); void textbackground (int color);
void textcolor (int color); void textcolor (int color);
/* textmode */ /* textmode */
int wherex (void); int wherex (void);
int wherey (void); int wherey (void);
/* window */ /* window */
/* The code below was part of Mingw's conio.h */ /* The code below was part of Mingw's conio.h */
/* /*
* conio.h * conio.h
* *
* Low level console I/O functions. Pretty please try to use the ANSI * Low level console I/O functions. Pretty please try to use the ANSI
* standard ones if you are writing new code. * standard ones if you are writing new code.
* *
* This file is part of the Mingw32 package. * This file is part of the Mingw32 package.
* *
* Contributors: * Contributors:
* Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp> * Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
* *
* THIS SOFTWARE IS NOT COPYRIGHTED * THIS SOFTWARE IS NOT COPYRIGHTED
* *
* This source code is offered for use in the public domain. You may * This source code is offered for use in the public domain. You may
* use, modify or distribute it freely. * use, modify or distribute it freely.
* *
* This code is distributed in the hope that it will be useful but * This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of * DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* *
* $Revision: 1.4 $ * $Revision: 1.4 $
* $Author: hongli $ * $Author: hongli $
* $Date: 2002/04/26 19:31:25 $ * $Date: 2002/04/26 19:31:25 $
* *
*/ */
char* _cgets (char*); char* _cgets (char*);
int _cprintf (const char*, ...); int _cprintf (const char*, ...);
int _cputs (const char*); int _cputs (const char*);
int _cscanf (char*, ...); int _cscanf (char*, ...);
int _getch (void); int _getch (void);
int _getche (void); int _getche (void);
int _kbhit (void); int _kbhit (void);
int _putch (int); int _putch (int);
int _ungetch (int); int _ungetch (int);
int getch (void); int getch (void);
int getche (void); int getche (void);
int kbhit (void); int kbhit (void);
int putch (int); int putch (int);
int ungetch (int); int ungetch (int);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* _CONIO_H_ */ #endif /* _CONIO_H_ */
/* /*
File: exprconf.h File: exprconf.h
Auth: Brian Allen Vanderburg II Auth: Brian Allen Vanderburg II
Date: Thursday, October 20, 2005 Date: Thursday, October 20, 2005
Desc: Configuration for ExprEval Desc: Configuration for ExprEval
This file is part of ExprEval. This file is part of ExprEval.
*/ */
#ifndef __BAVII_EXPRCONF_H #ifndef __BAVII_EXPRCONF_H
#define __BAVII_EXPRCONF_H #define __BAVII_EXPRCONF_H
/* /*
Error checking level Error checking level
0: Don't check any errors (don't use errno). Divide by 0 0: Don't check any errors (don't use errno). Divide by 0
is avoided and the part that divides by 0 is 0. For example is avoided and the part that divides by 0 is 0. For example
'4+1/0' is 4. '4+1/0' is 4.
1: Check math errors. 1: Check math errors.
*/ */
#define EXPR_ERROR_LEVEL_NONE 0 #define EXPR_ERROR_LEVEL_NONE 0
#define EXPR_ERROR_LEVEL_CHECK 1 #define EXPR_ERROR_LEVEL_CHECK 1
#ifndef EXPR_ERROR_LEVEL #ifndef EXPR_ERROR_LEVEL
#define EXPR_ERROR_LEVEL EXPR_ERROR_LEVEL_CHECK #define EXPR_ERROR_LEVEL EXPR_ERROR_LEVEL_CHECK
#endif #endif
#endif /* __BAVII_EXPRCONF_H */ #endif /* __BAVII_EXPRCONF_H */
/* /*
File: expreval.h File: expreval.h
Auth: Brian Allen Vanderburg II Auth: Brian Allen Vanderburg II
Date: Thursday, April 24, 2003 Date: Thursday, April 24, 2003
Desc: Main include file for ExprEval library Desc: Main include file for ExprEval library
This file is part of ExprEval. This file is part of ExprEval.
*/ */
/* Include once */ /* Include once */
#ifndef __BAVII_EXPREVAL_H #ifndef __BAVII_EXPREVAL_H
#define __BAVII_EXPREVAL_H #define __BAVII_EXPREVAL_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/* Define type of data to use */ /* Define type of data to use */
typedef double EXPRTYPE; typedef double EXPRTYPE;
/* Defines for various things */ /* Defines for various things */
/* Max id size */ /* Max id size */
#define EXPR_MAXIDENTSIZE 255 #define EXPR_MAXIDENTSIZE 255
/* Error values */ /* Error values */
enum enum
{ {
EXPR_ERROR_UNKNOWN = -1, /* Unknown error */ EXPR_ERROR_UNKNOWN = -1, /* Unknown error */
EXPR_ERROR_NOERROR = 0, /* No Error */ EXPR_ERROR_NOERROR = 0, /* No Error */
EXPR_ERROR_MEMORY, /* Memory allocation failed */ EXPR_ERROR_MEMORY, /* Memory allocation failed */
EXPR_ERROR_NULLPOINTER, /* Null pointer passed to function */ EXPR_ERROR_NULLPOINTER, /* Null pointer passed to function */
EXPR_ERROR_NOTFOUND, /* Item not found in a list */ EXPR_ERROR_NOTFOUND, /* Item not found in a list */
EXPR_ERROR_UNMATCHEDCOMMENT, /* Unmatched comment tags */ EXPR_ERROR_UNMATCHEDCOMMENT, /* Unmatched comment tags */
EXPR_ERROR_INVALIDCHAR, /* Invalid characters in expression */ EXPR_ERROR_INVALIDCHAR, /* Invalid characters in expression */
EXPR_ERROR_ALREADYEXISTS, /* An item already called create */ EXPR_ERROR_ALREADYEXISTS, /* An item already called create */
EXPR_ERROR_ALREADYPARSEDBAD, /* Expression parsed already, but unsuccessfully. call free or clear */ EXPR_ERROR_ALREADYPARSEDBAD, /* Expression parsed already, but unsuccessfully. call free or clear */
EXPR_ERROR_ALREADYPARSEDGOOD, /* Expression parsed already, successfully, call free or clear */ EXPR_ERROR_ALREADYPARSEDGOOD, /* Expression parsed already, successfully, call free or clear */
EXPR_ERROR_EMPTYEXPR, /* Empty expression string passed to parse */ EXPR_ERROR_EMPTYEXPR, /* Empty expression string passed to parse */
EXPR_ERROR_UNMATCHEDPAREN, /* Unmatched parenthesis */ EXPR_ERROR_UNMATCHEDPAREN, /* Unmatched parenthesis */
EXPR_ERROR_SYNTAX, /* Syntax error in expression */ EXPR_ERROR_SYNTAX, /* Syntax error in expression */
EXPR_ERROR_MISSINGSEMICOLON, /* Missing semicolon at end of expression */ EXPR_ERROR_MISSINGSEMICOLON, /* Missing semicolon at end of expression */
EXPR_ERROR_BADIDENTIFIER, /* Identifier was to big or not formed right */ EXPR_ERROR_BADIDENTIFIER, /* Identifier was to big or not formed right */
EXPR_ERROR_NOSUCHFUNCTION, /* Function does not exist in function list */ EXPR_ERROR_NOSUCHFUNCTION, /* Function does not exist in function list */
EXPR_ERROR_BADNUMBERARGUMENTS, /* Bad number of arguments in a function call */ EXPR_ERROR_BADNUMBERARGUMENTS, /* Bad number of arguments in a function call */
EXPR_ERROR_BADEXPR, /* This is a bad expression to evaluate. It has not been parsed or has unsuccessfully */ EXPR_ERROR_BADEXPR, /* This is a bad expression to evaluate. It has not been parsed or has unsuccessfully */
EXPR_ERROR_UNABLETOASSIGN, /* Unable to do an assignment, maybe no variable list */ EXPR_ERROR_UNABLETOASSIGN, /* Unable to do an assignment, maybe no variable list */
EXPR_ERROR_DIVBYZERO, /* Attempted a division by zero */ EXPR_ERROR_DIVBYZERO, /* Attempted a division by zero */
EXPR_ERROR_NOVARLIST, /* No variable list found but one is needed */ EXPR_ERROR_NOVARLIST, /* No variable list found but one is needed */
EXPR_ERROR_BREAK, /* Expression was broken by break function */ EXPR_ERROR_BREAK, /* Expression was broken by break function */
EXPR_ERROR_CONSTANTASSIGN, /* Assignment to a constant */ EXPR_ERROR_CONSTANTASSIGN, /* Assignment to a constant */
EXPR_ERROR_REFCONSTANT, /* Constant used as a reference parameter */ EXPR_ERROR_REFCONSTANT, /* Constant used as a reference parameter */
EXPR_ERROR_OUTOFRANGE, /* A bad value was passed to a function */ EXPR_ERROR_OUTOFRANGE, /* A bad value was passed to a function */
EXPR_ERROR_USER /* Custom errors should be larger than this */ EXPR_ERROR_USER /* Custom errors should be larger than this */
}; };
/* Macros */ /* Macros */
/* Forward declarations */ /* Forward declarations */
typedef struct _exprNode exprNode; typedef struct _exprNode exprNode;
typedef struct _exprFuncList exprFuncList; typedef struct _exprFuncList exprFuncList;
typedef struct _exprValList exprValList; typedef struct _exprValList exprValList;
typedef struct _exprObj exprObj; typedef struct _exprObj exprObj;
/* Function types */ /* Function types */
typedef int (*exprFuncType)(exprObj *obj, exprNode *nodes, int nodecount, EXPRTYPE **refs, int refcount, EXPRTYPE *val); typedef int (*exprFuncType)(exprObj *obj, exprNode *nodes, int nodecount, EXPRTYPE **refs, int refcount, EXPRTYPE *val);
typedef int (*exprBreakFuncType)(exprObj *obj); typedef int (*exprBreakFuncType)(exprObj *obj);
/* Functions */ /* Functions */
/* Version information function */ /* Version information function */
void exprGetVersion(int *major, int *minor); void exprGetVersion(int *major, int *minor);
/* Functions for function lists */ /* Functions for function lists */
int exprFuncListCreate(exprFuncList **flist); int exprFuncListCreate(exprFuncList **flist);
int exprFuncListAdd(exprFuncList *flist, char *name, exprFuncType ptr, int min, int max, int refmin, int refmax); int exprFuncListAdd(exprFuncList *flist, char *name, exprFuncType ptr, int min, int max, int refmin, int refmax);
int exprFuncListFree(exprFuncList *flist); int exprFuncListFree(exprFuncList *flist);
int exprFuncListClear(exprFuncList *flist); int exprFuncListClear(exprFuncList *flist);
int exprFuncListInit(exprFuncList *flist); int exprFuncListInit(exprFuncList *flist);
/* Functions for value lists */ /* Functions for value lists */
int exprValListCreate(exprValList **vlist); int exprValListCreate(exprValList **vlist);
int exprValListAdd(exprValList *vlist, char *name, EXPRTYPE val); int exprValListAdd(exprValList *vlist, char *name, EXPRTYPE val);
int exprValListSet(exprValList *vlist, char *name, EXPRTYPE val); int exprValListSet(exprValList *vlist, char *name, EXPRTYPE val);
int exprValListGet(exprValList *vlist, char *name, EXPRTYPE *val); int exprValListGet(exprValList *vlist, char *name, EXPRTYPE *val);
int exprValListAddAddress(exprValList *vlist, char *name, EXPRTYPE *addr); int exprValListAddAddress(exprValList *vlist, char *name, EXPRTYPE *addr);
int exprValListGetAddress(exprValList *vlist, char *name, EXPRTYPE **addr); int exprValListGetAddress(exprValList *vlist, char *name, EXPRTYPE **addr);
void *exprValListGetNext(exprValList *vlist, char **name, EXPRTYPE *value, EXPRTYPE** addr, void *cookie); void *exprValListGetNext(exprValList *vlist, char **name, EXPRTYPE *value, EXPRTYPE** addr, void *cookie);
int exprValListFree(exprValList *vlist); int exprValListFree(exprValList *vlist);
int exprValListClear(exprValList *vlist); int exprValListClear(exprValList *vlist);
int exprValListInit(exprValList *vlist); int exprValListInit(exprValList *vlist);
/* Functions for expression objects */ /* Functions for expression objects */
int exprCreate(exprObj **obj, exprFuncList *flist, exprValList *vlist, exprValList *clist, int exprCreate(exprObj **obj, exprFuncList *flist, exprValList *vlist, exprValList *clist,
exprBreakFuncType breaker, void *userdata); exprBreakFuncType breaker, void *userdata);
int exprFree(exprObj *obj); int exprFree(exprObj *obj);
int exprClear(exprObj *obj); int exprClear(exprObj *obj);
int exprParse(exprObj *obj, char *expr); int exprParse(exprObj *obj, char *expr);
int exprEval(exprObj *obj, EXPRTYPE *val); int exprEval(exprObj *obj, EXPRTYPE *val);
int exprEvalNode(exprObj *obj, exprNode *nodes, int curnode, EXPRTYPE *val); int exprEvalNode(exprObj *obj, exprNode *nodes, int curnode, EXPRTYPE *val);
exprFuncList *exprGetFuncList(exprObj *obj); exprFuncList *exprGetFuncList(exprObj *obj);
exprValList *exprGetVarList(exprObj *obj); exprValList *exprGetVarList(exprObj *obj);
exprValList *exprGetConstList(exprObj *obj); exprValList *exprGetConstList(exprObj *obj);
exprBreakFuncType exprGetBreakFunc(exprObj *obj); exprBreakFuncType exprGetBreakFunc(exprObj *obj);
int exprGetBreakResult(exprObj *obj); int exprGetBreakResult(exprObj *obj);
void* exprGetUserData(exprObj *obj); void* exprGetUserData(exprObj *obj);
void exprSetUserData(exprObj *obj, void *userdata); void exprSetUserData(exprObj *obj, void *userdata);
void exprSetBreakCount(exprObj *obj, int count); void exprSetBreakCount(exprObj *obj, int count);
void exprGetErrorPosition(exprObj *obj, int *start, int *end); void exprGetErrorPosition(exprObj *obj, int *start, int *end);
/* Other useful routines */ /* Other useful routines */
int exprValidIdent(char *name); int exprValidIdent(char *name);
/* Name mangling */ /* Name mangling */
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* __BAVII_EXPREVAL_H */ #endif /* __BAVII_EXPREVAL_H */
/* /*
File: exprincl.h File: exprincl.h
Auth: Brian Allen Vanderburg II Auth: Brian Allen Vanderburg II
Date: Thursday, April 24, 2003 Date: Thursday, April 24, 2003
Desc: Includes, macros, etc needed by this library Desc: Includes, macros, etc needed by this library
This file is part of ExprEval. This file is part of ExprEval.
*/ */
#ifndef __BAVII_EXPRINCL_H #ifndef __BAVII_EXPRINCL_H
#define __BAVII_EXPRINCL_H #define __BAVII_EXPRINCL_H
/* Includes and macros and whatnot for building the library */ /* Includes and macros and whatnot for building the library */
#ifdef _MSC_VER #ifdef _MSC_VER
#if (_MSC_VER >= 1400) // VC8+ #if (_MSC_VER >= 1400) // VC8+
#ifndef _CRT_SECURE_NO_DEPRECATE #ifndef _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_DEPRECATE #define _CRT_SECURE_NO_DEPRECATE
#endif #endif
#ifndef _CRT_NONSTDC_NO_DEPRECATE #ifndef _CRT_NONSTDC_NO_DEPRECATE
#define _CRT_NONSTDC_NO_DEPRECATE #define _CRT_NONSTDC_NO_DEPRECATE
#endif #endif
#endif // VC8+ #endif // VC8+
#endif #endif
/* Memory routines. memory.h for VC++, mem.h for BC++ */ /* Memory routines. memory.h for VC++, mem.h for BC++ */
#ifdef __TURBOC__ #ifdef __TURBOC__
#include <mem.h> #include <mem.h>
#else #else
#include <memory.h> #include <memory.h>
#endif #endif
/* Memory allocation */ /* Memory allocation */
#include <malloc.h> #include <malloc.h>
/* String routines */ /* String routines */
#include <string.h> #include <string.h>
/* Character manipulation routines */ /* Character manipulation routines */
#include <ctype.h> #include <ctype.h>
/* Standard routines */ /* Standard routines */
#include <stdlib.h> #include <stdlib.h>
/* Math routines */ /* Math routines */
#include <math.h> #include <math.h>
/* Time */ /* Time */
#include <time.h> #include <time.h>
/* Math constants. VC++ does not seem to have these */ /* Math constants. VC++ does not seem to have these */
#ifndef M_E #ifndef M_E
#define M_E 2.7182818284590452354 #define M_E 2.7182818284590452354
#endif #endif
#ifndef M_LOG2E #ifndef M_LOG2E
#define M_LOG2E 1.4426950408889634074 #define M_LOG2E 1.4426950408889634074
#endif #endif
#ifndef M_LOG10E #ifndef M_LOG10E
#define M_LOG10E 0.43429448190325182765 #define M_LOG10E 0.43429448190325182765
#endif #endif
#ifndef M_LN2 #ifndef M_LN2
#define M_LN2 0.69314718055994530942 #define M_LN2 0.69314718055994530942
#endif #endif
#ifndef M_LN10 #ifndef M_LN10
#define M_LN10 2.30258509299404568402 #define M_LN10 2.30258509299404568402
#endif #endif
#ifndef M_PI #ifndef M_PI
#define M_PI 3.14159265358979323846 #define M_PI 3.14159265358979323846
#endif #endif
#ifndef M_PI_2 #ifndef M_PI_2
#define M_PI_2 1.57079632679489661923 #define M_PI_2 1.57079632679489661923
#endif #endif
#ifndef M_PI_4 #ifndef M_PI_4
#define M_PI_4 0.78539816339744830962 #define M_PI_4 0.78539816339744830962
#endif #endif
#ifndef M_1_PI #ifndef M_1_PI
#define M_1_PI 0.31830988618379067154 #define M_1_PI 0.31830988618379067154
#endif #endif
#ifndef M_2_PI #ifndef M_2_PI
#define M_2_PI 0.63661977236758134308 #define M_2_PI 0.63661977236758134308
#endif #endif
#ifndef M_1_SQRTPI #ifndef M_1_SQRTPI
#define M_1_SQRTPI 0.56418958354776 #define M_1_SQRTPI 0.56418958354776
#endif #endif
#ifndef M_2_SQRTPI #ifndef M_2_SQRTPI
#define M_2_SQRTPI 1.12837916709551257390 #define M_2_SQRTPI 1.12837916709551257390
#endif #endif
#ifndef M_SQRT2 #ifndef M_SQRT2
#define M_SQRT2 1.41421356237309504880 #define M_SQRT2 1.41421356237309504880
#endif #endif
#ifndef M_1_SQRT2 #ifndef M_1_SQRT2
#define M_1_SQRT2 0.70710678118654752440 #define M_1_SQRT2 0.70710678118654752440
#endif #endif
#endif /* __BAVII_EXPRINCL_H */ #endif /* __BAVII_EXPRINCL_H */
/* /*
File: exprinit.c File: exprinit.c
Auth: Brian Allen Vanderburg II Auth: Brian Allen Vanderburg II
Date: Thursday, May 1, 2003 Date: Thursday, May 1, 2003
Desc: Extra functions and routines for ExprEval Desc: Extra functions and routines for ExprEval
This file is part of ExprEval. This file is part of ExprEval.
*/ */
/* Include files */ /* Include files */
#include "exprincl.h" #include "exprincl.h"
#include "exprpriv.h" #include "exprpriv.h"
/* Macro for adding a function node type */ /* Macro for adding a function node type */
#define EXPR_ADDFUNC_TYPE(name, type, argmin, argmax, refmin, refmax) \ #define EXPR_ADDFUNC_TYPE(name, type, argmin, argmax, refmin, refmax) \
err = exprFuncListAddType(flist, name, type, argmin, argmax, refmin, refmax); \ err = exprFuncListAddType(flist, name, type, argmin, argmax, refmin, refmax); \
if(err != EXPR_ERROR_NOERROR) \ if(err != EXPR_ERROR_NOERROR) \
return err; return err;
/* Macro for adding a constant */ /* Macro for adding a constant */
#define EXPR_ADDCONST(name, val) \ #define EXPR_ADDCONST(name, val) \
err = exprValListAdd(vlist, name, val); \ err = exprValListAdd(vlist, name, val); \
if(err != EXPR_ERROR_NOERROR) \ if(err != EXPR_ERROR_NOERROR) \
return err; return err;
/* Call this function to initialize these functions into a function list */ /* Call this function to initialize these functions into a function list */
int exprFuncListInit(exprFuncList *flist) int exprFuncListInit(exprFuncList *flist)
{ {
int err; int err;
if(flist == NULL) if(flist == NULL)
return EXPR_ERROR_NULLPOINTER; return EXPR_ERROR_NULLPOINTER;
EXPR_ADDFUNC_TYPE("abs", EXPR_NODEFUNC_ABS, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("abs", EXPR_NODEFUNC_ABS, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("mod", EXPR_NODEFUNC_MOD, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("mod", EXPR_NODEFUNC_MOD, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("ipart", EXPR_NODEFUNC_IPART, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("ipart", EXPR_NODEFUNC_IPART, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("fpart", EXPR_NODEFUNC_FPART, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("fpart", EXPR_NODEFUNC_FPART, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("min", EXPR_NODEFUNC_MIN, 1, -1, 0, 0); EXPR_ADDFUNC_TYPE("min", EXPR_NODEFUNC_MIN, 1, -1, 0, 0);
EXPR_ADDFUNC_TYPE("max", EXPR_NODEFUNC_MAX, 1, -1, 0, 0); EXPR_ADDFUNC_TYPE("max", EXPR_NODEFUNC_MAX, 1, -1, 0, 0);
EXPR_ADDFUNC_TYPE("pow", EXPR_NODEFUNC_POW, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("pow", EXPR_NODEFUNC_POW, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("sqrt", EXPR_NODEFUNC_SQRT, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("sqrt", EXPR_NODEFUNC_SQRT, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("sin", EXPR_NODEFUNC_SIN, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("sin", EXPR_NODEFUNC_SIN, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("sinh", EXPR_NODEFUNC_SINH, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("sinh", EXPR_NODEFUNC_SINH, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("asin", EXPR_NODEFUNC_ASIN, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("asin", EXPR_NODEFUNC_ASIN, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("cos", EXPR_NODEFUNC_COS, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("cos", EXPR_NODEFUNC_COS, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("cosh", EXPR_NODEFUNC_COSH, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("cosh", EXPR_NODEFUNC_COSH, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("acos", EXPR_NODEFUNC_ACOS, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("acos", EXPR_NODEFUNC_ACOS, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("tan", EXPR_NODEFUNC_TAN, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("tan", EXPR_NODEFUNC_TAN, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("tanh", EXPR_NODEFUNC_TANH, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("tanh", EXPR_NODEFUNC_TANH, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("atan", EXPR_NODEFUNC_ATAN, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("atan", EXPR_NODEFUNC_ATAN, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("atan2", EXPR_NODEFUNC_ATAN2, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("atan2", EXPR_NODEFUNC_ATAN2, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("log", EXPR_NODEFUNC_LOG, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("log", EXPR_NODEFUNC_LOG, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("pow10", EXPR_NODEFUNC_POW10, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("pow10", EXPR_NODEFUNC_POW10, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("ln", EXPR_NODEFUNC_LN, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("ln", EXPR_NODEFUNC_LN, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("exp", EXPR_NODEFUNC_EXP, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("exp", EXPR_NODEFUNC_EXP, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("logn", EXPR_NODEFUNC_LOGN, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("logn", EXPR_NODEFUNC_LOGN, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("ceil", EXPR_NODEFUNC_CEIL, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("ceil", EXPR_NODEFUNC_CEIL, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("floor", EXPR_NODEFUNC_FLOOR, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("floor", EXPR_NODEFUNC_FLOOR, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("rand", EXPR_NODEFUNC_RAND, 0, 0, 1, 1); EXPR_ADDFUNC_TYPE("rand", EXPR_NODEFUNC_RAND, 0, 0, 1, 1);
EXPR_ADDFUNC_TYPE("random", EXPR_NODEFUNC_RANDOM, 2, 2, 1, 1); EXPR_ADDFUNC_TYPE("random", EXPR_NODEFUNC_RANDOM, 2, 2, 1, 1);
EXPR_ADDFUNC_TYPE("randomize", EXPR_NODEFUNC_RANDOMIZE, 0, 0, 1, 1); EXPR_ADDFUNC_TYPE("randomize", EXPR_NODEFUNC_RANDOMIZE, 0, 0, 1, 1);
EXPR_ADDFUNC_TYPE("deg", EXPR_NODEFUNC_DEG, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("deg", EXPR_NODEFUNC_DEG, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("rad", EXPR_NODEFUNC_RAD, 1, 1, 0, 0); EXPR_ADDFUNC_TYPE("rad", EXPR_NODEFUNC_RAD, 1, 1, 0, 0);
EXPR_ADDFUNC_TYPE("recttopolr", EXPR_NODEFUNC_RECTTOPOLR, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("recttopolr", EXPR_NODEFUNC_RECTTOPOLR, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("recttopola", EXPR_NODEFUNC_RECTTOPOLA, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("recttopola", EXPR_NODEFUNC_RECTTOPOLA, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("poltorectx", EXPR_NODEFUNC_POLTORECTX, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("poltorectx", EXPR_NODEFUNC_POLTORECTX, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("poltorecty", EXPR_NODEFUNC_POLTORECTY, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("poltorecty", EXPR_NODEFUNC_POLTORECTY, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("if", EXPR_NODEFUNC_IF, 3, 3, 0, 0); EXPR_ADDFUNC_TYPE("if", EXPR_NODEFUNC_IF, 3, 3, 0, 0);
EXPR_ADDFUNC_TYPE("select", EXPR_NODEFUNC_SELECT, 3, 4, 0, 0); EXPR_ADDFUNC_TYPE("select", EXPR_NODEFUNC_SELECT, 3, 4, 0, 0);
EXPR_ADDFUNC_TYPE("equal", EXPR_NODEFUNC_EQUAL, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("equal", EXPR_NODEFUNC_EQUAL, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("above", EXPR_NODEFUNC_ABOVE, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("above", EXPR_NODEFUNC_ABOVE, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("below", EXPR_NODEFUNC_BELOW, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("below", EXPR_NODEFUNC_BELOW, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("avg", EXPR_NODEFUNC_AVG, 1, -1, 0, 0); EXPR_ADDFUNC_TYPE("avg", EXPR_NODEFUNC_AVG, 1, -1, 0, 0);
EXPR_ADDFUNC_TYPE("clip", EXPR_NODEFUNC_CLIP, 3, 3, 0, 0); EXPR_ADDFUNC_TYPE("clip", EXPR_NODEFUNC_CLIP, 3, 3, 0, 0);
EXPR_ADDFUNC_TYPE("clamp", EXPR_NODEFUNC_CLAMP, 3, 3, 0, 0); EXPR_ADDFUNC_TYPE("clamp", EXPR_NODEFUNC_CLAMP, 3, 3, 0, 0);
EXPR_ADDFUNC_TYPE("pntchange", EXPR_NODEFUNC_PNTCHANGE, 5, 5, 0, 0); EXPR_ADDFUNC_TYPE("pntchange", EXPR_NODEFUNC_PNTCHANGE, 5, 5, 0, 0);
EXPR_ADDFUNC_TYPE("poly", EXPR_NODEFUNC_POLY, 2, -1, 0, 0); EXPR_ADDFUNC_TYPE("poly", EXPR_NODEFUNC_POLY, 2, -1, 0, 0);
EXPR_ADDFUNC_TYPE("and", EXPR_NODEFUNC_AND, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("and", EXPR_NODEFUNC_AND, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("or", EXPR_NODEFUNC_OR, 2, 2, 0, 0); EXPR_ADDFUNC_TYPE("or", EXPR_NODEFUNC_OR, 2, 2, 0, 0);
EXPR_ADDFUNC_TYPE("not", EXPR_NODEFUNC_NOT, 1 ,1, 0, 0); EXPR_ADDFUNC_TYPE("not", EXPR_NODEFUNC_NOT, 1 ,1, 0, 0);
EXPR_ADDFUNC_TYPE("for", EXPR_NODEFUNC_FOR, 4, -1, 0, 0); EXPR_ADDFUNC_TYPE("for", EXPR_NODEFUNC_FOR, 4, -1, 0, 0);
EXPR_ADDFUNC_TYPE("many", EXPR_NODEFUNC_MANY, 1, -1, 0, 0); EXPR_ADDFUNC_TYPE("many", EXPR_NODEFUNC_MANY, 1, -1, 0, 0);
return EXPR_ERROR_NOERROR; return EXPR_ERROR_NOERROR;
} }
/* Call this function to initialize some constants into a value list */ /* Call this function to initialize some constants into a value list */
int exprValListInit(exprValList *vlist) int exprValListInit(exprValList *vlist)
{ {
int err; int err;
if(vlist == NULL) if(vlist == NULL)
return EXPR_ERROR_NULLPOINTER; return EXPR_ERROR_NULLPOINTER;
EXPR_ADDCONST("M_E", M_E); EXPR_ADDCONST("M_E", M_E);
EXPR_ADDCONST("M_LOG2E", M_LOG2E); EXPR_ADDCONST("M_LOG2E", M_LOG2E);
EXPR_ADDCONST("M_LOG10E", M_LOG10E); EXPR_ADDCONST("M_LOG10E", M_LOG10E);
EXPR_ADDCONST("M_LN2", M_LN2); EXPR_ADDCONST("M_LN2", M_LN2);
EXPR_ADDCONST("M_LN10", M_LN10); EXPR_ADDCONST("M_LN10", M_LN10);
EXPR_ADDCONST("M_PI", M_PI); EXPR_ADDCONST("M_PI", M_PI);
EXPR_ADDCONST("M_PI_2", M_PI_2); EXPR_ADDCONST("M_PI_2", M_PI_2);
EXPR_ADDCONST("M_PI_4", M_PI_4); EXPR_ADDCONST("M_PI_4", M_PI_4);
EXPR_ADDCONST("M_1_PI", M_1_PI); EXPR_ADDCONST("M_1_PI", M_1_PI);
EXPR_ADDCONST("M_2_PI", M_2_PI); EXPR_ADDCONST("M_2_PI", M_2_PI);
EXPR_ADDCONST("M_1_SQRTPI", M_1_SQRTPI); EXPR_ADDCONST("M_1_SQRTPI", M_1_SQRTPI);
EXPR_ADDCONST("M_2_SQRTPI", M_2_SQRTPI); EXPR_ADDCONST("M_2_SQRTPI", M_2_SQRTPI);
EXPR_ADDCONST("M_SQRT2", M_SQRT2); EXPR_ADDCONST("M_SQRT2", M_SQRT2);
EXPR_ADDCONST("M_1_SQRT2", M_1_SQRT2); EXPR_ADDCONST("M_1_SQRT2", M_1_SQRT2);
return EXPR_ERROR_NOERROR; return EXPR_ERROR_NOERROR;
} }
/* /*
File: exprmem.c File: exprmem.c
Auth: Brian Allen Vanderburg II Auth: Brian Allen Vanderburg II
Date: Wednesday, April 30, 2003 Date: Wednesday, April 30, 2003
Desc: Memory functions for ExprEval Desc: Memory functions for ExprEval
This file is part of ExprEval. This file is part of ExprEval.
*/ */
/* Includes */ /* Includes */
#include "exprincl.h" #include "exprincl.h"
#include "exprmem.h" #include "exprmem.h"
/* Allocate memory and zero it */ /* Allocate memory and zero it */
void* exprAllocMem(size_t size) void* exprAllocMem(size_t size)
{ {
void *data = malloc(size); void *data = malloc(size);
if(data) if(data)
{ {
memset(data, 0, size); memset(data, 0, size);
} }
return data; return data;
} }
/* Free memory */ /* Free memory */
void exprFreeMem(void *data) void exprFreeMem(void *data)
{ {
if(data) if(data)
free(data); free(data);
} }
/* Allocate a list of nodes */ /* Allocate a list of nodes */
exprNode *exprAllocNodes(size_t count) exprNode *exprAllocNodes(size_t count)
{ {
return exprAllocMem(count * sizeof(exprNode)); return exprAllocMem(count * sizeof(exprNode));
} }
/* /*
File: exprmem.h File: exprmem.h
Auth: Brian Allen Vanderburg II Auth: Brian Allen Vanderburg II
Date: Wednesday, April 30, 2003 Date: Wednesday, April 30, 2003
Desc: Memory functions for ExprEval Desc: Memory functions for ExprEval
This file is part of ExprEval. This file is part of ExprEval.
*/ */
#ifndef __BAVII_EXPRMEM_H #ifndef __BAVII_EXPRMEM_H
#define __BAVII_EXPRMEM_H #define __BAVII_EXPRMEM_H
/* Needed for exprNode */ /* Needed for exprNode */
#include "exprpriv.h" #include "exprpriv.h"
void* exprAllocMem(size_t size); void* exprAllocMem(size_t size);
void exprFreeMem(void *data); void exprFreeMem(void *data);
exprNode *exprAllocNodes(size_t count); exprNode *exprAllocNodes(size_t count);
#endif /* __BAVII_EXPRMEM_H */ #endif /* __BAVII_EXPRMEM_H */
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论