vendor/regex.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
#pragma once #ifdef __cplusplus extern "C" { #endif #include <stddef.h> #define RXSUCCESS 0 #define RXEINMOD -1 /* invalid modifier */ #define RXEPART -2 /* partial (sub-)expression */ #define RXEUNEXP -3 /* unexpected character */ #define RXERANGE -4 /* invalid range (min > max) */ #define RXELIMIT -5 /* too many digits */ #define RXEEMPTY -6 /* expression is effectively empty */ #define RXENOREF -7 /* the specified backreference cannot be used here */ #define RX_ALLMODS "mis" #ifndef RX_STRLENGTHFUNC #define RX_STRLENGTHFUNC( str ) strlen( str ) #endif typedef void* (*srx_MemFunc) ( void* /* userdata */, void* /* ptr */, size_t /* size */ ); #ifdef RX_NEED_DEFAULT_MEMFUNC static void* srx_DefaultMemFunc( void* userdata, void* ptr, size_t size ) { (void) userdata; if( size ) return realloc( ptr, size ); free( ptr ); return NULL; } #endif typedef char RX_Char; typedef struct _srx_Context srx_Context; srx_Context* srx_CreateExt( const RX_Char* str, size_t strsize, const RX_Char* mods, int* errnpos, srx_MemFunc memfn, void* memctx ); #define srx_Create( str, mods ) srx_CreateExt( str, RX_STRLENGTHFUNC(str), mods, NULL, srx_DefaultMemFunc, NULL ) int srx_Destroy( srx_Context* R ); void srx_DumpToStdout( srx_Context* R ); int srx_MatchExt( srx_Context* R, const RX_Char* str, size_t size, size_t offset ); #define srx_Match( R, str, off ) srx_MatchExt( R, str, RX_STRLENGTHFUNC(str), off ) int srx_GetCaptureCount( srx_Context* R ); int srx_GetCaptured( srx_Context* R, int which, size_t* pbeg, size_t* pend ); int srx_GetCapturedPtrs( srx_Context* R, int which, const RX_Char** pbeg, const RX_Char** pend ); RX_Char* srx_ReplaceExt( srx_Context* R, const RX_Char* str, size_t strsize, const RX_Char* rep, size_t repsize, size_t* outsize ); #define srx_Replace( R, str, rep ) srx_ReplaceExt( R, str, RX_STRLENGTHFUNC(str), rep, RX_STRLENGTHFUNC(rep), NULL ) void srx_FreeReplaced( srx_Context* R, RX_Char* repstr ); #ifdef __cplusplus } #endif |