1 /* 2 * Copyright (c) 2015-2016, Intel Corporation 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are met: 6 * 7 * * Redistributions of source code must retain the above copyright notice, 8 * this list of conditions and the following disclaimer. 9 * * Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * * Neither the name of Intel Corporation nor the names of its contributors 13 * may be used to endorse or promote products derived from this software 14 * without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #ifndef LIMEX_H 30 #define LIMEX_H 31 32 #ifdef __cplusplus 33 #include <string> 34 extern "C" 35 { 36 #endif 37 38 #include "nfa_api.h" 39 40 #if defined(DUMP_SUPPORT) && defined(__cplusplus) 41 #define GENERATE_NFA_DUMP_DECL(gf_name) \ 42 } /* extern "C" */ \ 43 namespace ue2 { \ 44 void gf_name##_dump(const struct NFA *nfa, const std::string &base); \ 45 } /* namespace ue2 */ \ 46 extern "C" { 47 48 #else 49 #define GENERATE_NFA_DUMP_DECL(gf_name) 50 #endif 51 52 #define GENERATE_NFA_DECL(gf_name) \ 53 char gf_name##_testEOD(const struct NFA *nfa, const char *state, \ 54 const char *streamState, u64a offset, \ 55 NfaCallback callback, void *context); \ 56 char gf_name##_Q(const struct NFA *n, struct mq *q, s64a end); \ 57 char gf_name##_Q2(const struct NFA *n, struct mq *q, s64a end); \ 58 char gf_name##_QR(const struct NFA *n, struct mq *q, ReportID report); \ 59 char gf_name##_reportCurrent(const struct NFA *n, struct mq *q); \ 60 char gf_name##_inAccept(const struct NFA *n, ReportID report, \ 61 struct mq *q); \ 62 char gf_name##_inAnyAccept(const struct NFA *n, struct mq *q); \ 63 char gf_name##_queueInitState(const struct NFA *n, struct mq *q); \ 64 char gf_name##_initCompressedState(const struct NFA *n, u64a offset, \ 65 void *state, u8 key); \ 66 char gf_name##_B_Reverse(const struct NFA *n, u64a offset, const u8 *buf, \ 67 size_t buflen, const u8 *hbuf, size_t hlen, \ 68 NfaCallback cb, void *context); \ 69 char gf_name##_queueCompressState(const struct NFA *nfa, \ 70 const struct mq *q, s64a loc); \ 71 char gf_name##_expandState(const struct NFA *nfa, void *dest, \ 72 const void *src, u64a offset, u8 key); \ 73 enum nfa_zombie_status gf_name##_zombie_status(const struct NFA *nfa, \ 74 struct mq *q, s64a loc); \ 75 GENERATE_NFA_DUMP_DECL(gf_name) 76 77 GENERATE_NFA_DECL(nfaExecLimEx32) 78 GENERATE_NFA_DECL(nfaExecLimEx64) 79 GENERATE_NFA_DECL(nfaExecLimEx128) 80 GENERATE_NFA_DECL(nfaExecLimEx256) 81 GENERATE_NFA_DECL(nfaExecLimEx384) 82 GENERATE_NFA_DECL(nfaExecLimEx512) 83 84 #undef GENERATE_NFA_DECL 85 #undef GENERATE_NFA_DUMP_DECL 86 87 #ifdef __cplusplus 88 } 89 #endif 90 91 #endif 92