/* * Compton - a compositor for X11 * * Based on `xcompmgr` - Copyright (c) 2003, Keith Packard * * Copyright (c) 2011-2013, Christopher Jeffrey * See LICENSE for more information. * */ #include "common.h" #include #include // libpcre #ifdef CONFIG_REGEX_PCRE #include // For compatiblity with opr1 = p1; p.b->opr2 = p2; p.b->op = op; return p; } /** * Get the precedence value of a condition branch operator. */ static inline int c2h_b_opp(c2_b_op_t op) { switch (op) { case C2_B_OAND: return 2; case C2_B_OOR: return 1; case C2_B_OXOR: return 1; default: break; } assert(0); return 0; } /** * Compare precedence of two condition branch operators. * * Associativity is left-to-right, forever. * * @return positive number if op1 > op2, 0 if op1 == op2 in precedence, * negative number otherwise */ static inline int c2h_b_opcmp(c2_b_op_t op1, c2_b_op_t op2) { return c2h_b_opp(op1) - c2h_b_opp(op2); } static int c2_parse_grp(session_t *ps, const char *pattern, int offset, c2_ptr_t *presult, int level); static int c2_parse_target(session_t *ps, const char *pattern, int offset, c2_ptr_t *presult); static int c2_parse_op(const char *pattern, int offset, c2_ptr_t *presult); static int c2_parse_pattern(session_t *ps, const char *pattern, int offset, c2_ptr_t *presult); static int c2_parse_legacy(session_t *ps, const char *pattern, int offset, c2_ptr_t *presult); static bool c2_l_postprocess(session_t *ps, c2_l_t *pleaf); static void c2_free(c2_ptr_t p); /** * Wrapper of c2_free(). */ static inline void c2_freep(c2_ptr_t *pp) { if (pp) { c2_free(*pp); c2_ptr_reset(pp); } } static const char * c2h_dump_str_tgt(const c2_l_t *pleaf); static const char * c2h_dump_str_type(const c2_l_t *pleaf); static void c2_dump_raw(c2_ptr_t p); /** * Wrapper of c2_dump_raw(). */ static inline void c2_dump(c2_ptr_t p) { c2_dump_raw(p); printf("\n"); fflush(stdout); } static Atom c2_get_atom_type(const c2_l_t *pleaf); static bool c2_match_once(session_t *ps, win *w, const c2_ptr_t cond);