aboutsummaryrefslogtreecommitdiff
path: root/jim-regexp.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2017-09-16 13:15:09 +1000
committerSteve Bennett <steveb@workware.net.au>2017-09-16 15:38:12 +1000
commitfa68b74c218b40476d0c5bac124141c27a00c902 (patch)
tree34f52ab42590c6dae8d74e15b0ea4e5a0963ef06 /jim-regexp.c
parent59af8ac418343fb922ba602b3690707c07b8cdda (diff)
downloadjimtcl-fa68b74c218b40476d0c5bac124141c27a00c902.zip
jimtcl-fa68b74c218b40476d0c5bac124141c27a00c902.tar.gz
jimtcl-fa68b74c218b40476d0c5bac124141c27a00c902.tar.bz2
remove special regexpValue internal rep
To avoid an explosion of different internal rep structures, simply use the existing ptrIntValue for jim-regexp Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim-regexp.c')
-rw-r--r--jim-regexp.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/jim-regexp.c b/jim-regexp.c
index 8eb457d..771773a 100644
--- a/jim-regexp.c
+++ b/jim-regexp.c
@@ -58,10 +58,14 @@
static void FreeRegexpInternalRep(Jim_Interp *interp, Jim_Obj *objPtr)
{
- regfree(objPtr->internalRep.regexpValue.compre);
- Jim_Free(objPtr->internalRep.regexpValue.compre);
+ regfree(objPtr->internalRep.ptrIntValue.ptr);
+ Jim_Free(objPtr->internalRep.ptrIntValue.ptr);
}
+/* internal rep is stored in ptrIntvalue
+ * ptr = compiled regex
+ * int1 = flags
+ */
static const Jim_ObjType regexpObjType = {
"regexp",
FreeRegexpInternalRep,
@@ -78,9 +82,9 @@ static regex_t *SetRegexpFromAny(Jim_Interp *interp, Jim_Obj *objPtr, unsigned f
/* Check if the object is already an uptodate variable */
if (objPtr->typePtr == &regexpObjType &&
- objPtr->internalRep.regexpValue.compre && objPtr->internalRep.regexpValue.flags == flags) {
+ objPtr->internalRep.ptrIntValue.ptr && objPtr->internalRep.ptrIntValue.int1 == flags) {
/* nothing to do */
- return objPtr->internalRep.regexpValue.compre;
+ return objPtr->internalRep.ptrIntValue.ptr;
}
/* Not a regexp or the flags do not match */
@@ -102,8 +106,8 @@ static regex_t *SetRegexpFromAny(Jim_Interp *interp, Jim_Obj *objPtr, unsigned f
Jim_FreeIntRep(interp, objPtr);
objPtr->typePtr = &regexpObjType;
- objPtr->internalRep.regexpValue.flags = flags;
- objPtr->internalRep.regexpValue.compre = compre;
+ objPtr->internalRep.ptrIntValue.int1 = flags;
+ objPtr->internalRep.ptrIntValue.ptr = compre;
return compre;
}