func (m *Matcher) exec(subjectptr *C.char, length, flags int) int { var extra *C.pcre_extra if m.re.extra != nil { extra = (*C.pcre_extra)(unsafe.Pointer(&m.re.extra[0])) } else { extra = nil } rc := C.pcre_exec((*C.pcre)(unsafe.Pointer(&m.re.ptr[0])), extra, subjectptr, C.int(length), 0, C.int(flags), (*C.int)(unsafe.Pointer(&m.ovector[0])), C.int(len(m.ovector))) return int(rc) }
func (m *Matcher) match(subjectptr *C.char, length, flags int) bool { rc := C.pcre_exec((*C.pcre)(unsafe.Pointer(&m.re.ptr[0])), nil, subjectptr, C.int(length), 0, C.int(flags), &m.ovector[0], C.int(len(m.ovector))) switch { case rc >= 0: m.matches = true return true case rc == C.PCRE_ERROR_NOMATCH: m.matches = false return false case rc == C.PCRE_ERROR_BADOPTION: panic("PCRE.Match: invalid option flag") } panic("unexepected return code from pcre_exec: " + strconv.Itoa(int(rc))) }
func (m *Matcher) exec(subjectptr *C.char, length, flags int) int { rc := C.pcre_exec((*C.pcre)(unsafe.Pointer(&m.re.ptr[0])), nil, subjectptr, C.int(length), 0, C.int(flags), &m.ovector[0], C.int(len(m.ovector))) return int(rc) }