Main extern class to wrap libc regular expression support

It is recommanded to use the higher level API offered by the class Regex, but it can still be used for advanced purpose or in optimized code.

To use this class and other private entities of this module, use intrude import core::re

Introduced properties

private init malloc: NativeRegex

core :: NativeRegex :: malloc

Allocate a new NativeRegex, it must then be compiled using regcomp before calling regexec
private fun re_nsub: Int

core :: NativeRegex :: re_nsub

Number of parenthetical subexpressions in this compiled regular expression
private fun regcomp(regex: CString, cflags: Int): Int

core :: NativeRegex :: regcomp

Compile the regular expression regex into a form that is suitable for subsequent regexec searches
private fun regerror(errcode: Int): CString

core :: NativeRegex :: regerror

Turn the error codes that can be returned by both regcomp and regexec into error message strings
private fun regexec(string: CString, nmatch: Int, pmatch: NativeMatchArray, eflags: Int): Int

core :: NativeRegex :: regexec

Match string against the precompiled pattern buffer of self, locating matches
private fun regexec_match_only(string: CString, eflags: Int): Int

core :: NativeRegex :: regexec_match_only

Match string against the precompiled pattern buffer of self, do not locate matches
private fun regfree

core :: NativeRegex :: regfree

Free the memory allocated to the pattern buffer by the compiling process

Redefined properties

redef type SELF: NativeRegex

core $ NativeRegex :: SELF

Type of this instance, automatically specialized in every class

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
fun address_is_null: Bool

core :: Pointer :: address_is_null

Is the address behind this Object at NULL?
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
fun free

core :: Pointer :: free

Free the memory pointed by this pointer
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
private init malloc: NativeRegex

core :: NativeRegex :: malloc

Allocate a new NativeRegex, it must then be compiled using regcomp before calling regexec
private intern fun native_class_name: CString

core :: Object :: native_class_name

The class name of the object in CString format.
private fun native_equals(o: Pointer): Bool

core :: Pointer :: native_equals

init nul: Pointer

core :: Pointer :: nul

C NULL pointer
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
private fun premultiply_alpha(width: Int, height: Int)

core :: Pointer :: premultiply_alpha

Multiply RGB values by their alpha value
private fun re_nsub: Int

core :: NativeRegex :: re_nsub

Number of parenthetical subexpressions in this compiled regular expression
private fun regcomp(regex: CString, cflags: Int): Int

core :: NativeRegex :: regcomp

Compile the regular expression regex into a form that is suitable for subsequent regexec searches
private fun regerror(errcode: Int): CString

core :: NativeRegex :: regerror

Turn the error codes that can be returned by both regcomp and regexec into error message strings
private fun regexec(string: CString, nmatch: Int, pmatch: NativeMatchArray, eflags: Int): Int

core :: NativeRegex :: regexec

Match string against the precompiled pattern buffer of self, locating matches
private fun regexec_match_only(string: CString, eflags: Int): Int

core :: NativeRegex :: regexec_match_only

Match string against the precompiled pattern buffer of self, do not locate matches
private fun regfree

core :: NativeRegex :: regfree

Free the memory allocated to the pattern buffer by the compiling process
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
package_diagram core::re::NativeRegex NativeRegex core::Pointer Pointer core::re::NativeRegex->core::Pointer core::Object Object core::Pointer->core::Object ...core::Object ... ...core::Object->core::Object

Ancestors

interface Object

core :: Object

The root of the class hierarchy.

Parents

extern class Pointer

core :: Pointer

Pointer classes are used to manipulate extern C structures.

Class definitions

core $ NativeRegex
# Main extern class to wrap libc regular expression support
#
# It is recommanded to use the higher level API offered by the class `Regex`,
# but it can still be used for advanced purpose or in optimized code.
#
# To use this class and other `private` entities of this module, use `intrude import core::re`
private extern class NativeRegex `{ regex_t* `}
	# Allocate a new `NativeRegex`, it must then be compiled using `regcomp` before calling `regexec`
	new malloc `{ return malloc(sizeof(regex_t)); `}

	# Compile the regular expression `regex` into a form that is suitable for subsequent `regexec` searches
	fun regcomp(regex: CString, cflags: Int): Int `{
		return regcomp(self, regex, cflags);
	`}

	# Match `string` against the precompiled pattern buffer of `self`, locating matches
	#
	# `nmatch` and `pmatch` are used to provide information regarding the location of any matches.
	# `eflags` may be the bitwise-or of one or both of `flag_notbol` and `flag_noteol`.
	fun regexec(string: CString, nmatch: Int, pmatch: NativeMatchArray, eflags: Int): Int `{
		return regexec(self, string, nmatch, pmatch, eflags);
	`}

	# Match `string` against the precompiled pattern buffer of `self`, do not locate matches
	#
	# `eflags` may be the bitwise-or of one or both of `flag_notbol` and `flag_noteol`.
	fun regexec_match_only(string: CString, eflags: Int): Int `{
		return regexec(self, string, 0, NULL, eflags);
	`}

	# Free the memory allocated to the pattern buffer by the compiling process
	#
	# Does not free the memory holding `self`, use `free` for this purpose.
	fun regfree `{ regfree(self); `}

	# Turn the error codes that can be returned by both `regcomp` and `regexec` into error message strings
	fun regerror(errcode: Int): CString `{
		size_t len = regerror(errcode, self, NULL, 0);
		char *message = malloc(len);
		regerror(errcode, self, message, len);

		return message;
	`}

	# Number of parenthetical subexpressions in this compiled regular expression
	fun re_nsub: Int `{ return self->re_nsub; `}
end
lib/core/re.nit:34,1--80,3