68 #if defined COMPILE_PCRE8
71 int what,
void *where)
72 #elif defined COMPILE_PCRE16
74 pcre16_fullinfo(
const pcre16 *argument_re,
const pcre16_extra *extra_data,
75 int what,
void *where)
76 #elif defined COMPILE_PCRE32
78 pcre32_fullinfo(
const pcre32 *argument_re,
const pcre32_extra *extra_data,
79 int what,
void *where)
85 if (re == NULL || where == NULL)
return PCRE_ERROR_NULL;
87 if (extra_data != NULL && (extra_data->flags & PCRE_EXTRA_STUDY_DATA) != 0)
97 PCRE_ERROR_BADENDIANNESS:PCRE_ERROR_BADMAGIC;
101 if ((re->flags &
PCRE_MODE) == 0)
return PCRE_ERROR_BADMODE;
105 case PCRE_INFO_OPTIONS:
110 *((
size_t *)where) = re->size;
113 case PCRE_INFO_STUDYSIZE:
114 *((
size_t *)where) = (study == NULL)? 0 : study->
size;
117 case PCRE_INFO_JITSIZE:
120 (extra_data != NULL &&
121 (extra_data->flags & PCRE_EXTRA_EXECUTABLE_JIT) != 0 &&
122 extra_data->executable_jit != NULL)?
123 PRIV(jit_get_size)(extra_data->executable_jit) : 0;
125 *((
size_t *)where) = 0;
129 case PCRE_INFO_CAPTURECOUNT:
130 *((
int *)where) = re->top_bracket;
133 case PCRE_INFO_BACKREFMAX:
134 *((
int *)where) = re->top_backref;
137 case PCRE_INFO_FIRSTBYTE:
143 case PCRE_INFO_FIRSTCHARACTER:
144 *((pcre_uint32 *)where) =
148 case PCRE_INFO_FIRSTCHARACTERFLAGS:
157 case PCRE_INFO_FIRSTTABLE:
163 case PCRE_INFO_MINLENGTH:
170 *((
int *)where) = extra_data != NULL &&
171 (extra_data->flags & PCRE_EXTRA_EXECUTABLE_JIT) != 0 &&
172 extra_data->executable_jit != NULL;
175 case PCRE_INFO_LASTLITERAL:
180 case PCRE_INFO_REQUIREDCHAR:
181 *((pcre_uint32 *)where) =
185 case PCRE_INFO_REQUIREDCHARFLAGS:
190 case PCRE_INFO_NAMEENTRYSIZE:
191 *((
int *)where) = re->name_entry_size;
194 case PCRE_INFO_NAMECOUNT:
195 *((
int *)where) = re->name_count;
198 case PCRE_INFO_NAMETABLE:
202 case PCRE_INFO_DEFAULT_TABLES:
209 case PCRE_INFO_OKPARTIAL:
213 case PCRE_INFO_JCHANGED:
217 case PCRE_INFO_HASCRORLF:
221 case PCRE_INFO_MAXLOOKBEHIND:
222 *((
int *)where) = re->max_lookbehind;
225 default:
return PCRE_ERROR_BADOPTION;