scalar.h
上传用户:aidanglao
上传日期:2007-01-07
资源大小:69k
文件大小:4k
源码类别:

Oracle数据库

开发平台:

Unix_Linux

  1. /* scalar.h - header for scalar routines
  2. /*
  3. /* Copyright (c) 1995-1999 Applied Information Technologies, Inc.
  4. /* All Rights Reserved.
  5. /*  
  6. /* Distributed uder the GNU General Public License which was included in
  7. /* the file named "LICENSE" in the package that you recieved.
  8. /* If not, write to:
  9. /* The Free Software Foundation, Inc.,
  10. /* 675 Mass Ave, Cambridge, MA 02139, USA.
  11.  */
  12. #ifndef _SCALAR_H_
  13. #define _SCALAR_H_
  14. #include <stdio.h>
  15. #include <ctype.h>
  16. #include "boolean.h"
  17. #include "list.h"
  18. /*
  19. /* The valid TYPES for the Scalar_t
  20.  */
  21. typedef enum {
  22.  eStringType /* Character Strings */
  23. ,eIntType /* Integers */
  24. ,eDoubleType /* Real Numbers */
  25. ,eListType /* Linked-Lists */
  26. ,eBoolType /* Boolean Value (True or False) */
  27. ,eRawType /* Raw Type memory buffer with length */
  28. } eScalar_t;
  29. typedef struct {
  30.     eScalar_t esType; /* a valid eStackType */
  31.     union {
  32. char *pString;/* character string */
  33. int iInt; /* int */
  34. double dDouble;/* real number */
  35. LIST *pList; /* Linked-List of Scalar_t's */
  36. eBoolean_t bBool;/* Boolean */
  37. void *pRaw; /* Raw Memory Buffer (not null terminated) */
  38.     } uVal; /* UNION */
  39.     char *pName;
  40.     long lSize;
  41. } Scalar_t;
  42. typedef Scalar_t *(*PFPS_t)(Scalar_t *); /* Pointer to function that accepts
  43. /* a pointer to a Scalar_t and
  44. /* returns a pointer to a Scalar_t
  45.  */
  46. /*
  47. /* Function Protytypes
  48.  */
  49. extern eBoolean_t BetweenCond(Scalar_t *p, Scalar_t *plo, Scalar_t *phi);
  50. extern eBoolean_t LikeCond(Scalar_t *p1, Scalar_t *p2);
  51. extern eBoolean_t IsNullCond(Scalar_t *p);
  52. extern eBoolean_t InCond(Scalar_t *pVal, Scalar_t *pList);
  53. extern eBoolean_t CompareCond(Scalar_t *pOp,Scalar_t *pLeft,Scalar_t *pRight);
  54. extern Scalar_t *AddScalar(Scalar_t *p1, Scalar_t *p2);
  55. extern Scalar_t *CatScalar(Scalar_t *p1, Scalar_t *p2);
  56. extern Scalar_t *SubScalar(Scalar_t *p1, Scalar_t *p2);
  57. extern Scalar_t *MultScalar(Scalar_t *p1, Scalar_t *p2);
  58. extern Scalar_t *DivScalar(Scalar_t *p1, Scalar_t *p2);
  59. extern Scalar_t *ModScalar(Scalar_t *p1, Scalar_t *p2);
  60. extern Scalar_t *USubScalar(Scalar_t *p1);
  61. extern Scalar_t *CallFunction(Scalar_t *pName, Scalar_t *pList);
  62. extern Scalar_t *AddScalarToList(Scalar_t *pList,Scalar_t *p1);
  63. /*
  64. /* Built-in Functions
  65.  */
  66. extern Scalar_t * ScalarUpper(Scalar_t *pList);
  67. extern Scalar_t * ScalarLower(Scalar_t *pList);
  68. extern Scalar_t * ScalarSubstr(Scalar_t *pList);
  69. extern Scalar_t * ScalarLength(Scalar_t *pList);
  70. extern Scalar_t * ScalarToChar(Scalar_t *pList);
  71. extern Scalar_t * ScalarToNumber(Scalar_t *pList);
  72. extern Scalar_t * ScalarLPad(Scalar_t *pList);
  73. extern Scalar_t * ScalarRPad(Scalar_t *pList);
  74. extern Scalar_t * ScalarLTrim(Scalar_t *pList);
  75. extern Scalar_t * ScalarRTrim(Scalar_t *pList);
  76. extern Scalar_t * ScalarNVL(Scalar_t *pList);
  77. extern Scalar_t * ScalarHost(Scalar_t *pList);
  78. extern Scalar_t * ScalarGetSym(Scalar_t *pScalar,char *pRule);
  79. extern Scalar_t * ScalarGetSymARR(Scalar_t *pScalar,Scalar_t *pArrayOffset);
  80. extern Scalar_t * ScalarSaveFile(Scalar_t *pList);
  81. extern Scalar_t * ScalarGetCookieValue(Scalar_t *pList);
  82. extern Scalar_t * ScalarReplace(Scalar_t *pList);
  83. extern Scalar_t * ScalarAscii(Scalar_t *pList);
  84. extern Scalar_t * ScalarCHR(Scalar_t *pList);
  85. extern eBoolean_t AssignCond(Scalar_t *pScalarName, Scalar_t *pScalarValue);
  86. /*
  87. /* Called by yylex to create a scalar when found
  88.  */
  89. extern Scalar_t *MkScalar(eScalar_t esType, void *pValue, long lSize);
  90. extern Scalar_t *MkScalarToken(int iToken);
  91. extern Scalar_t *ToScalar(eBoolean_t bBool);
  92. extern eBoolean_t IsScalar(Scalar_t *pScalar);
  93. extern eBoolean_t OutputScalar(Scalar_t *pScalar);
  94. #endif /* _SCALAR_H_ */