• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/jsonpath/ast.h

  1 /*
  2  * Copyright (C) 2013-2014 Jo-Philipp Wich <jo@mein.io>
  3  *
  4  * Permission to use, copy, modify, and/or distribute this software for any
  5  * purpose with or without fee is hereby granted, provided that the above
  6  * copyright notice and this permission notice appear in all copies.
  7  *
  8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 15  */
 16 
 17 #ifndef __AST_H_
 18 #define __AST_H_
 19 
 20 #include <stddef.h>
 21 
 22 struct jp_opcode {
 23         int type;
 24         struct jp_opcode *next;
 25         struct jp_opcode *down;
 26         struct jp_opcode *sibling;
 27         char *str;
 28         int num;
 29 };
 30 
 31 struct jp_state {
 32         struct jp_opcode *pool;
 33         struct jp_opcode *path;
 34         int error_pos;
 35         int error_code;
 36         int off;
 37 };
 38 
 39 static inline struct jp_opcode *
 40 append_op(struct jp_opcode *a, struct jp_opcode *b)
 41 {
 42         struct jp_opcode *tail = a;
 43 
 44         while (tail->sibling)
 45                 tail = tail->sibling;
 46 
 47         tail->sibling = b;
 48 
 49         return a;
 50 }
 51 
 52 struct jp_opcode *jp_alloc_op(struct jp_state *s, int type, int num, char *str, ...);
 53 struct jp_state *jp_parse(const char *expr);
 54 void jp_free(struct jp_state *s);
 55 
 56 void *ParseAlloc(void *(*mfunc)(size_t));
 57 void Parse(void *pParser, int type, struct jp_opcode *op, struct jp_state *s);
 58 void ParseFree(void *pParser, void (*ffunc)(void *));
 59 
 60 #endif /* __AST_H_ */
 61 

This page was automatically generated by LXR 0.3.1.  •  OpenWrt