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

Oracle数据库

开发平台:

Unix_Linux

  1. /*  sqlweb.h - main sqlweb header file
  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 _SQLWEB_H_
  13. #define _SQLWEB_H_
  14. /*
  15. /* This includes all other needed includes for SQLweb
  16.  */
  17. #ifdef USE_LIBMALLOC
  18. #include <malloc.h>
  19. #endif
  20. #include "list.h"
  21. #include "boolean.h"
  22. #include "sqlwebdb.h"
  23. #include "scalar.h"
  24. #define MAX_METHOD 31
  25. #define MAX_CHAR_MNEMONIC 128
  26. #define MAX_CONTENT_TYPE 256
  27. #define MAX_TAG_LEVELS 500
  28. #define MAX_TOK_SIZE 255
  29. #define MAX_TOKVAL_SIZE 32768
  30. #define MAX_HTMLBUF_SIZE 65536
  31. #define MAX_BUFSIZ MAX_HTMLBUF_SIZE
  32. #define MAX_INTEGER_DIGITS 45 /* MAX number of digits for an integer */
  33. /*
  34. /* Defines...
  35.  */
  36. /*
  37. /* Symbol iTypes
  38.  */
  39. #define ENV_SYMBOL 1
  40. #define INI_SYMBOL 2
  41. #define FRM_SYMBOL 4
  42. #define SEL_SYMBOL 8
  43. #define BND_SYMBOL 16
  44. #define PIA_SYMBOL 32
  45. #define RAW_SYMBOL 64
  46. typedef struct SymTab {
  47.     int  iType /* Symbol Type ENV_SYMBOL, INI_SYMBOL, ... */
  48. ;
  49.     char *pName /* Symbol Name */
  50. ,*pValue /* Symbol Value */
  51. ;
  52.     eScalar_t esDataType; /* Datatype of Symbol */
  53.     long lSize; /* Size of Data storred */
  54. } SYMBOL;
  55. /*
  56. /* Typedefs and such...
  57.  */
  58. /*
  59. /* An HTML PAGE 
  60.  */
  61. typedef struct HTML_PAGES {
  62.     LIST *lPI; /* 1st Level PAGE_ITEMS, usually HTML */
  63.     char *pFileText; /* origional file */
  64. } PAGE;
  65. /*
  66. /* A HTML TAG 
  67.  */
  68. typedef struct HTML_TAGS {
  69.     char *pTagName
  70. ,*pTagEmptyInd
  71. ,*pTagDesc
  72. ,*pTagAfterInd
  73. ,*pTagLinkDesc
  74. ;
  75. }TAG;
  76. /*
  77. /* The Famous PAGE_ITEM
  78.  */
  79. typedef struct HTML_PAGE_ITEMS {
  80.     int iLevel ;
  81.     char  *pTagName
  82. ,*pPiContents
  83. ;
  84.     struct HTML_PAGE_ITEMS *pPIContext;
  85.     PAGE *pPage;
  86.     TAG *pTag;
  87.     LIST *lPIA /* Attribute List */
  88. ,*lPI /* PageItem  List */
  89. ;
  90.     int iLineNbr; /* Line number of tag starting of tag */
  91. } PI;
  92. /*
  93. /* Some useful macros...
  94.  */
  95. /* #define is_match(a,b) ((strcmp(a,b))==0)
  96.  */
  97. #define is_match(a,b) ISeTrue(bStrCaseMatch(a,b))
  98. /* #define is_casematch(a,b) ((strcasecmp(a,b))==0)
  99.  */
  100. #define is_casematch(a,b) ISeTrue(bStrCaseMatch(a,b))
  101. #define isEmpty(x) (x->pTag && *((x)->pTag->pTagEmptyInd)=='Y')
  102. #define HIDIND(x) (*((x)->pTag->pTagAfterInd))
  103. #define isHidden(x)    ((HIDIND(x)=='A') || (HIDIND(x)=='Y' &&  ISCOOKED))
  104. #define isNotHidden(x) ((HIDIND(x)=='N') || (HIDIND(x)=='Y' && !ISCOOKED))
  105. #define BNDSym(n,v) RETeFalse2(AddSymbol(BND_SYMBOL,n,v,eTrue,iStrLen(v)+1)
  106.   ,"AddSymbol(BND,%s) Failed." 
  107.   ,n)
  108. #define SELSym(n,v) RETeFalse2(AddSymbol(SEL_SYMBOL,n,v,eTrue,iStrLen(v)+1)
  109.   ,"AddSymbol(SEL,%s) Failed." 
  110.   ,n)
  111. #define INISym(n,v) RETeFalse2(AddSymbol(INI_SYMBOL,n,v,eTrue,iStrLen(v)+1)
  112.   ,"AddSymbol(INI,%s) Failed." 
  113.   ,n)
  114. #define FRMSym(n,v) RETeFalse2(AddSymbol(FRM_SYMBOL,n,v,eFalse,iStrLen(v)+1)
  115.   ,"AddSymbol(FRM,%s) Failed." 
  116.   ,n)
  117. #define ENVSym(n,v) RETeFalse2(AddSymbol(ENV_SYMBOL,n,v,eTrue,iStrLen(v)+1)
  118.   ,"AddSymbol(ENV,%s) Failed." 
  119.   ,n)
  120. #define RAWSym(n,v,l) RETeFalse2(AddSymbol(RAW_SYMBOL,n,v,eFalse,l) 
  121.   ,"AddSymbol(RAW,%s) Failed." 
  122.   ,n)
  123. /*
  124. /* Global Variables used by ALL modules.
  125.  */
  126. extern char
  127.      *gpFileName
  128.     ,*gpIniFile
  129.     ,*gpProgram
  130.     ;
  131. extern int
  132.      giParseLevel
  133.     ;
  134. extern eBoolean_t
  135.      gbiFlag
  136.     ,gbpFlag
  137.     ,gbfFlag
  138.     ,gbbFlag
  139.     ,gbBufferOutput
  140.     ;
  141. extern PAGE *gpPage; /* defined in swoutput.c */
  142. extern char
  143.      *gpIfExpr
  144.     ,*gpNullSelect
  145.     ;
  146. extern SQLWEB_LDA gLDA; /* defined/allocated in swdb.c */
  147. extern LIST *glCookie; /* Cookie List */
  148. #define ISCOOKED (giParseLevel==0||giParseLevel==3)
  149. /*
  150. /* External, Generally available functions
  151.  */
  152. extern eBoolean_t sqlweb();
  153. extern eBoolean_t swinput();
  154. extern eBoolean_t swlogic(LIST *lPageList);
  155. extern eBoolean_t swgpage(char *pSQL,LIST *lPageGenNbrList);
  156. extern eBoolean_t swoutput(PAGE *pPage);
  157. extern void       MsgPush(const char *pFmt,...);
  158. extern eBoolean_t MsgPop(char *pOutMsgBuf);
  159. extern eBoolean_t OutputHTML(const char *pFmt,...);
  160. extern eBoolean_t FlushHTMLBuf();
  161. extern eBoolean_t PrintHTMLHeader(char *pContentType);
  162. extern eBoolean_t FlushHTMLBuf();
  163. extern eBoolean_t PrintHTMLErrStack();
  164. /* extern eBoolean_t RemoveCharCodes(char *pIn, char *pOut);
  165.  */
  166. extern eBoolean_t RemoveCharCodes(char *pIn);
  167. extern eBoolean_t GetTAGByName(char *pTagName,TAG **gpTAG);
  168. extern eBoolean_t LoadHTML(char *pFilename
  169.    ,PAGE **pPage
  170.    );
  171. extern eBoolean_t ShowSymbolTable();
  172. extern eBoolean_t iPrintHTMLSymbol(SYMBOL *pSym);
  173. extern int        iCmpSymbolpName(SYMBOL *pSym, char *pName);
  174. extern int        iCmpSymbolNames(SYMBOL *pSym1,SYMBOL *pSym2);
  175. #ifdef USEHASHTABLE
  176. extern char *     GetSymbolName(SYMBOL *pSym);
  177. #else
  178. extern int   GetSymbolName(SYMBOL *pSym,SYMBOL *p2);
  179. #endif
  180. extern eBoolean_t BuildSymbolTable(char *pBuf);
  181. extern eBoolean_t GetSymbolValue(char *pName,char *pOutValue);
  182. extern eBoolean_t GetSymbolValueREF(char *pName,char **pOutPtr);
  183. extern eBoolean_t GetRawSymbolValueREF(char *pName,char **pOutPtr,long *lSize);
  184. extern eBoolean_t GetARRSymbolValueREF(char *pName,int iIndex,char **pOutPtr);
  185. extern eBoolean_t IsSymbolValue(char *pName,char *pValue);
  186. extern eBoolean_t AddSymbol(int iType
  187.    ,char *pName
  188.    ,char *pValue
  189.    ,eBoolean_t bReplace
  190.    ,long lSize
  191.    );
  192. extern eBoolean_t DebugHTMLSet(int iDebugLevel);
  193. extern int        DebugHTMLGet();
  194. extern eBoolean_t DebugHTML(char *pFileName
  195.    ,int iLine
  196.    ,int iDebugLevel
  197.    ,char *pFmt
  198.    ,...
  199.    );
  200. extern eBoolean_t CookPI(PI *pPI);
  201. extern eBoolean_t GetPIAValue(PI *pPI,char *pName, char *pOutValue);
  202. extern eBoolean_t GetPIAValueREF(PI *pPI,char *pName, char **pOutValue);
  203. extern eBoolean_t LoadPage(char *pPageGenNbr);
  204. extern eBoolean_t ExpandString(char *pIn, char **pOut);
  205. extern eBoolean_t ExpandContents(PI *pPI);
  206. extern eBoolean_t LoadTag(char *pTagData);
  207. extern void       LogMsg(const char *pFmt,...);
  208. extern char *     DupBuf(const char *pBuf);
  209. extern void *     DupMem(const char *pBuf, long lSize);
  210. extern void       FreeBuf(char *pBuf);
  211. extern eBoolean_t ParseIf(char *pExpr, eBoolean_t *pbResult);
  212. extern PI *       NewPI();
  213. extern eBoolean_t FreePI(PI *pPI); /* Free PI (not children) */
  214. extern eBoolean_t FreePIr(PI *pPI); /* Free PI recursively */
  215. extern eBoolean_t FreePIA(SYMBOL *pPIA);
  216. extern SYMBOL *   NewPIA();
  217. extern eBoolean_t LoadTEXT(char *pFileName,char *pFileType, PI *pPI);
  218. extern eBoolean_t DumpPage(PAGE *pPage);
  219. extern int   iStrLen(char *pString);
  220. extern int iStrCmp(char *s,char *t);
  221. extern int iStrCaseCmp(char *s, char *t);
  222. extern eBoolean_t bStrMatch(char *s,char *t);
  223. extern eBoolean_t bStrNMatch(char *s,char *t,int n);
  224. extern eBoolean_t bStrCaseMatch(char *s,char *t);
  225. extern eBoolean_t bStrNCaseMatch(char *s,char *t,int n);
  226. extern eBoolean_t GetCookieValueREF(char *pName, char **pBuf, long *lSize);
  227. #endif /* _SQLWEB_H_ */