]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h
MdeModulePkg/RegularExpressionDxe: Make oniguruma a submodule in edk2.
[mirror_edk2.git] / MdeModulePkg / Universal / RegularExpressionDxe / Oniguruma / regparse.h
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h
deleted file mode 100644 (file)
index 29e6434..0000000
+++ /dev/null
@@ -1,455 +0,0 @@
-#ifndef REGPARSE_H\r
-#define REGPARSE_H\r
-/**********************************************************************\r
-  regparse.h -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2019  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regint.h"\r
-\r
-#define NODE_STRING_MARGIN         16\r
-#define NODE_STRING_BUF_SIZE       24  /* sizeof(CClassNode) - sizeof(int)*4 */\r
-#define NODE_BACKREFS_SIZE          6\r
-\r
-/* node type */\r
-typedef enum {\r
-  NODE_STRING    =  0,\r
-  NODE_CCLASS    =  1,\r
-  NODE_CTYPE     =  2,\r
-  NODE_BACKREF   =  3,\r
-  NODE_QUANT     =  4,\r
-  NODE_BAG       =  5,\r
-  NODE_ANCHOR    =  6,\r
-  NODE_LIST      =  7,\r
-  NODE_ALT       =  8,\r
-  NODE_CALL      =  9,\r
-  NODE_GIMMICK   = 10\r
-} NodeType;\r
-\r
-enum BagType {\r
-  BAG_MEMORY         = 0,\r
-  BAG_OPTION         = 1,\r
-  BAG_STOP_BACKTRACK = 2,\r
-  BAG_IF_ELSE        = 3,\r
-};\r
-\r
-enum GimmickType {\r
-  GIMMICK_FAIL       = 0,\r
-  GIMMICK_SAVE       = 1,\r
-  GIMMICK_UPDATE_VAR = 2,\r
-#ifdef USE_CALLOUT\r
-  GIMMICK_CALLOUT    = 3,\r
-#endif\r
-};\r
-\r
-enum BodyEmptyType {\r
-  BODY_IS_NOT_EMPTY             = 0,\r
-  BODY_IS_EMPTY_POSSIBILITY     = 1,\r
-  BODY_IS_EMPTY_POSSIBILITY_MEM = 2,\r
-  BODY_IS_EMPTY_POSSIBILITY_REC = 3\r
-};\r
-\r
-typedef struct {\r
-  NodeType node_type;\r
-  int status;\r
-\r
-  UChar* s;\r
-  UChar* end;\r
-  unsigned int flag;\r
-  int    capacity;    /* (allocated size - 1) or 0: use buf[] */\r
-  UChar  buf[NODE_STRING_BUF_SIZE];\r
-} StrNode;\r
-\r
-typedef struct {\r
-  NodeType node_type;\r
-  int status;\r
-\r
-  unsigned int flags;\r
-  BitSet bs;\r
-  BBuf*  mbuf;   /* multi-byte info or NULL */\r
-} CClassNode;\r
-\r
-typedef struct {\r
-  NodeType node_type;\r
-  int status;\r
-  struct _Node* body;\r
-\r
-  int lower;\r
-  int upper;\r
-  int greedy;\r
-  enum BodyEmptyType emptiness;\r
-  struct _Node* head_exact;\r
-  struct _Node* next_head_exact;\r
-  int is_refered;     /* include called node. don't eliminate even if {0} */\r
-} QuantNode;\r
-\r
-typedef struct {\r
-  NodeType node_type;\r
-  int status;\r
-  struct _Node* body;\r
-\r
-  enum BagType type;\r
-  union {\r
-    struct {\r
-      int regnum;\r
-      AbsAddrType called_addr;\r
-      int entry_count;\r
-      int called_state;\r
-    } m;\r
-    struct {\r
-      OnigOptionType options;\r
-    } o;\r
-    struct {\r
-      /* body is condition */\r
-      struct _Node* Then;\r
-      struct _Node* Else;\r
-    } te;\r
-  };\r
-  /* for multiple call reference */\r
-  OnigLen min_len;   /* min length (byte) */\r
-  OnigLen max_len;   /* max length (byte) */\r
-  int char_len;      /* character length  */\r
-  int opt_count;     /* referenced count in optimize_nodes() */\r
-} BagNode;\r
-\r
-#ifdef USE_CALL\r
-\r
-typedef struct {\r
-  int           offset;\r
-  struct _Node* target;\r
-} UnsetAddr;\r
-\r
-typedef struct {\r
-  int        num;\r
-  int        alloc;\r
-  UnsetAddr* us;\r
-} UnsetAddrList;\r
-\r
-typedef struct {\r
-  NodeType node_type;\r
-  int status;\r
-  struct _Node* body; /* to BagNode : BAG_MEMORY */\r
-\r
-  int     by_number;\r
-  int     group_num;\r
-  UChar*  name;\r
-  UChar*  name_end;\r
-  int     entry_count;\r
-} CallNode;\r
-\r
-#endif\r
-\r
-typedef struct {\r
-  NodeType node_type;\r
-  int status;\r
-\r
-  int  back_num;\r
-  int  back_static[NODE_BACKREFS_SIZE];\r
-  int* back_dynamic;\r
-  int  nest_level;\r
-} BackRefNode;\r
-\r
-typedef struct {\r
-  NodeType node_type;\r
-  int status;\r
-  struct _Node* body;\r
-\r
-  int type;\r
-  int char_len;\r
-  int ascii_mode;\r
-} AnchorNode;\r
-\r
-typedef struct {\r
-  NodeType node_type;\r
-  int status;\r
-\r
-  struct _Node* car;\r
-  struct _Node* cdr;\r
-} ConsAltNode;\r
-\r
-typedef struct {\r
-  NodeType node_type;\r
-  int status;\r
-\r
-  int ctype;\r
-  int not;\r
-  OnigOptionType options;\r
-  int ascii_mode;\r
-} CtypeNode;\r
-\r
-typedef struct {\r
-  NodeType node_type;\r
-  int status;\r
-\r
-  enum GimmickType type;\r
-  int  detail_type;\r
-  int  num;\r
-  int  id;\r
-} GimmickNode;\r
-\r
-typedef struct _Node {\r
-  union {\r
-    struct {\r
-      NodeType node_type;\r
-      int status;\r
-      struct _Node* body;\r
-    } base;\r
-\r
-    StrNode       str;\r
-    CClassNode    cclass;\r
-    QuantNode     quant;\r
-    BagNode       bag;\r
-    BackRefNode   backref;\r
-    AnchorNode    anchor;\r
-    ConsAltNode   cons;\r
-    CtypeNode     ctype;\r
-#ifdef USE_CALL\r
-    CallNode      call;\r
-#endif\r
-    GimmickNode   gimmick;\r
-  } u;\r
-} Node;\r
-\r
-#define NULL_NODE  ((Node* )0)\r
-\r
-\r
-/* node type bit */\r
-#define NODE_TYPE2BIT(type)      (1<<(type))\r
-\r
-#define NODE_BIT_STRING     NODE_TYPE2BIT(NODE_STRING)\r
-#define NODE_BIT_CCLASS     NODE_TYPE2BIT(NODE_CCLASS)\r
-#define NODE_BIT_CTYPE      NODE_TYPE2BIT(NODE_CTYPE)\r
-#define NODE_BIT_BACKREF    NODE_TYPE2BIT(NODE_BACKREF)\r
-#define NODE_BIT_QUANT      NODE_TYPE2BIT(NODE_QUANT)\r
-#define NODE_BIT_BAG        NODE_TYPE2BIT(NODE_BAG)\r
-#define NODE_BIT_ANCHOR     NODE_TYPE2BIT(NODE_ANCHOR)\r
-#define NODE_BIT_LIST       NODE_TYPE2BIT(NODE_LIST)\r
-#define NODE_BIT_ALT        NODE_TYPE2BIT(NODE_ALT)\r
-#define NODE_BIT_CALL       NODE_TYPE2BIT(NODE_CALL)\r
-#define NODE_BIT_GIMMICK    NODE_TYPE2BIT(NODE_GIMMICK)\r
-\r
-#define NODE_TYPE(node)             ((node)->u.base.node_type)\r
-#define NODE_SET_TYPE(node, ntype)   (node)->u.base.node_type = (ntype)\r
-\r
-#define STR_(node)         (&((node)->u.str))\r
-#define CCLASS_(node)      (&((node)->u.cclass))\r
-#define CTYPE_(node)       (&((node)->u.ctype))\r
-#define BACKREF_(node)     (&((node)->u.backref))\r
-#define QUANT_(node)       (&((node)->u.quant))\r
-#define BAG_(node)         (&((node)->u.bag))\r
-#define ANCHOR_(node)      (&((node)->u.anchor))\r
-#define CONS_(node)        (&((node)->u.cons))\r
-#define CALL_(node)        (&((node)->u.call))\r
-#define GIMMICK_(node)     (&((node)->u.gimmick))\r
-\r
-#define NODE_CAR(node)         (CONS_(node)->car)\r
-#define NODE_CDR(node)         (CONS_(node)->cdr)\r
-\r
-#define CTYPE_ANYCHAR      -1\r
-#define NODE_IS_ANYCHAR(node) \\r
-  (NODE_TYPE(node) == NODE_CTYPE && CTYPE_(node)->ctype == CTYPE_ANYCHAR)\r
-\r
-#define CTYPE_OPTION(node, reg) \\r
-  (NODE_IS_FIXED_OPTION(node) ? CTYPE_(node)->options : reg->options)\r
-\r
-\r
-#define ANCR_ANYCHAR_INF_MASK  (ANCR_ANYCHAR_INF | ANCR_ANYCHAR_INF_ML)\r
-#define ANCR_END_BUF_MASK      (ANCR_END_BUF | ANCR_SEMI_END_BUF)\r
-\r
-#define NODE_STRING_RAW                (1<<0) /* by backslashed number */\r
-#define NODE_STRING_AMBIG              (1<<1)\r
-#define NODE_STRING_GOOD_AMBIG         (1<<2)\r
-#define NODE_STRING_DONT_GET_OPT_INFO  (1<<3)\r
-\r
-#define NODE_STRING_LEN(node)            (int )((node)->u.str.end - (node)->u.str.s)\r
-#define NODE_STRING_SET_RAW(node)        (node)->u.str.flag |= NODE_STRING_RAW\r
-#define NODE_STRING_CLEAR_RAW(node)      (node)->u.str.flag &= ~NODE_STRING_RAW\r
-#define NODE_STRING_SET_AMBIG(node)      (node)->u.str.flag |= NODE_STRING_AMBIG\r
-#define NODE_STRING_SET_GOOD_AMBIG(node) (node)->u.str.flag |= NODE_STRING_GOOD_AMBIG\r
-#define NODE_STRING_SET_DONT_GET_OPT_INFO(node) \\r
-  (node)->u.str.flag |= NODE_STRING_DONT_GET_OPT_INFO\r
-#define NODE_STRING_IS_RAW(node) \\r
-  (((node)->u.str.flag & NODE_STRING_RAW) != 0)\r
-#define NODE_STRING_IS_AMBIG(node) \\r
-  (((node)->u.str.flag & NODE_STRING_AMBIG) != 0)\r
-#define NODE_STRING_IS_GOOD_AMBIG(node) \\r
-  (((node)->u.str.flag & NODE_STRING_GOOD_AMBIG) != 0)\r
-#define NODE_STRING_IS_DONT_GET_OPT_INFO(node) \\r
-  (((node)->u.str.flag & NODE_STRING_DONT_GET_OPT_INFO) != 0)\r
-\r
-#define BACKREFS_P(br) \\r
-  (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static)\r
-\r
-/* node status bits */\r
-#define NODE_ST_MIN_FIXED             (1<<0)\r
-#define NODE_ST_MAX_FIXED             (1<<1)\r
-#define NODE_ST_CLEN_FIXED            (1<<2)\r
-#define NODE_ST_MARK1                 (1<<3)\r
-#define NODE_ST_MARK2                 (1<<4)\r
-#define NODE_ST_STRICT_REAL_REPEAT    (1<<5)\r
-#define NODE_ST_RECURSION             (1<<6)\r
-#define NODE_ST_CALLED                (1<<7)\r
-#define NODE_ST_ADDR_FIXED            (1<<8)\r
-#define NODE_ST_NAMED_GROUP           (1<<9)\r
-#define NODE_ST_IN_REAL_REPEAT        (1<<10) /* STK_REPEAT is nested in stack. */\r
-#define NODE_ST_IN_ZERO_REPEAT        (1<<11) /* (....){0} */\r
-#define NODE_ST_IN_MULTI_ENTRY        (1<<12)\r
-#define NODE_ST_NEST_LEVEL            (1<<13)\r
-#define NODE_ST_BY_NUMBER             (1<<14) /* {n,m} */\r
-#define NODE_ST_BY_NAME               (1<<15) /* backref by name */\r
-#define NODE_ST_BACKREF               (1<<16)\r
-#define NODE_ST_CHECKER               (1<<17)\r
-#define NODE_ST_FIXED_OPTION          (1<<18)\r
-#define NODE_ST_PROHIBIT_RECURSION    (1<<19)\r
-#define NODE_ST_SUPER                 (1<<20)\r
-\r
-\r
-#define NODE_STATUS(node)           (((Node* )node)->u.base.status)\r
-#define NODE_STATUS_ADD(node,f)     (NODE_STATUS(node) |= (NODE_ST_ ## f))\r
-#define NODE_STATUS_REMOVE(node,f)  (NODE_STATUS(node) &= ~(NODE_ST_ ## f))\r
-\r
-#define NODE_IS_BY_NUMBER(node)       ((NODE_STATUS(node) & NODE_ST_BY_NUMBER)      != 0)\r
-#define NODE_IS_IN_REAL_REPEAT(node)  ((NODE_STATUS(node) & NODE_ST_IN_REAL_REPEAT) != 0)\r
-#define NODE_IS_CALLED(node)          ((NODE_STATUS(node) & NODE_ST_CALLED)         != 0)\r
-#define NODE_IS_IN_MULTI_ENTRY(node)  ((NODE_STATUS(node) & NODE_ST_IN_MULTI_ENTRY) != 0)\r
-#define NODE_IS_RECURSION(node)       ((NODE_STATUS(node) & NODE_ST_RECURSION)      != 0)\r
-#define NODE_IS_IN_ZERO_REPEAT(node)  ((NODE_STATUS(node) & NODE_ST_IN_ZERO_REPEAT) != 0)\r
-#define NODE_IS_NAMED_GROUP(node)     ((NODE_STATUS(node) & NODE_ST_NAMED_GROUP)  != 0)\r
-#define NODE_IS_ADDR_FIXED(node)      ((NODE_STATUS(node) & NODE_ST_ADDR_FIXED)   != 0)\r
-#define NODE_IS_CLEN_FIXED(node)      ((NODE_STATUS(node) & NODE_ST_CLEN_FIXED)   != 0)\r
-#define NODE_IS_MIN_FIXED(node)       ((NODE_STATUS(node) & NODE_ST_MIN_FIXED)    != 0)\r
-#define NODE_IS_MAX_FIXED(node)       ((NODE_STATUS(node) & NODE_ST_MAX_FIXED)    != 0)\r
-#define NODE_IS_MARK1(node)           ((NODE_STATUS(node) & NODE_ST_MARK1)        != 0)\r
-#define NODE_IS_MARK2(node)           ((NODE_STATUS(node) & NODE_ST_MARK2)        != 0)\r
-#define NODE_IS_NEST_LEVEL(node)      ((NODE_STATUS(node) & NODE_ST_NEST_LEVEL)   != 0)\r
-#define NODE_IS_BY_NAME(node)         ((NODE_STATUS(node) & NODE_ST_BY_NAME)      != 0)\r
-#define NODE_IS_BACKREF(node)         ((NODE_STATUS(node) & NODE_ST_BACKREF)      != 0)\r
-#define NODE_IS_CHECKER(node)         ((NODE_STATUS(node) & NODE_ST_CHECKER)      != 0)\r
-#define NODE_IS_FIXED_OPTION(node)    ((NODE_STATUS(node) & NODE_ST_FIXED_OPTION) != 0)\r
-#define NODE_IS_SUPER(node)           ((NODE_STATUS(node) & NODE_ST_SUPER)        != 0)\r
-#define NODE_IS_PROHIBIT_RECURSION(node) \\r
-    ((NODE_STATUS(node) & NODE_ST_PROHIBIT_RECURSION) != 0)\r
-#define NODE_IS_STRICT_REAL_REPEAT(node) \\r
-    ((NODE_STATUS(node) & NODE_ST_STRICT_REAL_REPEAT) != 0)\r
-\r
-#define NODE_BODY(node)           ((node)->u.base.body)\r
-#define NODE_QUANT_BODY(node)     ((node)->body)\r
-#define NODE_BAG_BODY(node)       ((node)->body)\r
-#define NODE_CALL_BODY(node)      ((node)->body)\r
-#define NODE_ANCHOR_BODY(node)    ((node)->body)\r
-\r
-#define SCANENV_MEMENV_SIZE               8\r
-#define SCANENV_MEMENV(senv) \\r
- (IS_NOT_NULL((senv)->mem_env_dynamic) ? \\r
-    (senv)->mem_env_dynamic : (senv)->mem_env_static)\r
-\r
-typedef struct {\r
-  Node* node;\r
-#if 0\r
-  int in;\r
-  int recursion;\r
-#endif\r
-} MemEnv;\r
-\r
-typedef struct {\r
-  enum SaveType type;\r
-} SaveItem;\r
-\r
-typedef struct {\r
-  OnigOptionType   options;\r
-  OnigCaseFoldType case_fold_flag;\r
-  OnigEncoding     enc;\r
-  OnigSyntaxType*  syntax;\r
-  MemStatusType    capture_history;\r
-  MemStatusType    bt_mem_start;\r
-  MemStatusType    bt_mem_end;\r
-  MemStatusType    backrefed_mem;\r
-  UChar*           pattern;\r
-  UChar*           pattern_end;\r
-  UChar*           error;\r
-  UChar*           error_end;\r
-  regex_t*         reg;       /* for reg->names only */\r
-  int              num_call;\r
-#ifdef USE_CALL\r
-  UnsetAddrList*   unset_addr_list;\r
-  int              has_call_zero;\r
-#endif\r
-  int              num_mem;\r
-  int              num_named;\r
-  int              mem_alloc;\r
-  MemEnv           mem_env_static[SCANENV_MEMENV_SIZE];\r
-  MemEnv*          mem_env_dynamic;\r
-  unsigned int     parse_depth;\r
-\r
-  int keep_num;\r
-  int save_num;\r
-  int save_alloc_num;\r
-  SaveItem* saves;\r
-} ScanEnv;\r
-\r
-\r
-#define IS_SYNTAX_OP(syn, opm)    (((syn)->op  & (opm)) != 0)\r
-#define IS_SYNTAX_OP2(syn, opm)   (((syn)->op2 & (opm)) != 0)\r
-#define IS_SYNTAX_BV(syn, bvm)    (((syn)->behavior & (bvm)) != 0)\r
-\r
-typedef struct {\r
-  int new_val;\r
-} GroupNumRemap;\r
-\r
-extern int    onig_renumber_name_table P_((regex_t* reg, GroupNumRemap* map));\r
-\r
-extern int    onig_strncmp P_((const UChar* s1, const UChar* s2, int n));\r
-extern void   onig_strcpy P_((UChar* dest, const UChar* src, const UChar* end));\r
-extern void   onig_scan_env_set_error_string P_((ScanEnv* env, int ecode, UChar* arg, UChar* arg_end));\r
-extern int    onig_scan_unsigned_number P_((UChar** src, const UChar* end, OnigEncoding enc));\r
-extern void   onig_reduce_nested_quantifier P_((Node* pnode, Node* cnode));\r
-extern void   onig_node_conv_to_str_node P_((Node* node, int raw));\r
-extern int    onig_node_str_cat P_((Node* node, const UChar* s, const UChar* end));\r
-extern int    onig_node_str_set P_((Node* node, const UChar* s, const UChar* end));\r
-extern void   onig_node_free P_((Node* node));\r
-extern Node*  onig_node_new_bag P_((enum BagType type));\r
-extern Node*  onig_node_new_anchor P_((int type, int ascii_mode));\r
-extern Node*  onig_node_new_str P_((const UChar* s, const UChar* end));\r
-extern Node*  onig_node_new_list P_((Node* left, Node* right));\r
-extern Node*  onig_node_list_add P_((Node* list, Node* x));\r
-extern Node*  onig_node_new_alt P_((Node* left, Node* right));\r
-extern void   onig_node_str_clear P_((Node* node));\r
-extern int    onig_names_free P_((regex_t* reg));\r
-extern int    onig_parse_tree P_((Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ScanEnv* env));\r
-extern int    onig_free_shared_cclass_table P_((void));\r
-extern int    onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClassNode* cc));\r
-extern OnigLen onig_get_tiny_min_len(Node* node, unsigned int inhibit_node_types, int* invalid_node);\r
-\r
-#ifdef USE_CALLOUT\r
-extern int onig_global_callout_names_free(void);\r
-#endif\r
-\r
-#ifdef ONIG_DEBUG\r
-extern int onig_print_names(FILE*, regex_t*);\r
-#endif\r
-\r
-#endif /* REGPARSE_H */\r