Module hlrun.obj
Functions
def method(func: Callable[..., R]) ‑> Callable[..., ~R]
-
Expand source code
def method(func: Callable[..., R]) -> Callable[..., R]: """ Decorator that forwards method calls to the underlying HashLink object. Preserves the original function's return type and parameter types. """ method_name = func.__name__ @wraps(func) def wrapper(self: HlObj, *args: Any) -> R: return cast(R, self.__getattr__(method_name)(self, *args)) return wrapper
Decorator that forwards method calls to the underlying HashLink object.
Preserves the original function's return type and parameter types.
def obj(type_name: str) ‑> Callable[[~T], ~T]
-
Expand source code
def obj(type_name: str) -> Callable[[T], T]: """ Decorator to register a class in the OBJ_MAP dictionary. """ def decorator(cls: T) -> T: OBJ_MAP[type_name] = cls return cls return decorator
Decorator to register a class in the OBJ_MAP dictionary.
Classes
class HlString (ptr)
-
Expand source code
@obj("String") class HlString(HlObj): """ Proxy to a Hashlink string. """ bytes: bytes """ Internal byte array. """ length: int """ The number of characters in `this` String. """ @method def toUpperCase(self) -> "HlString": """ Returns a String where all characters of `this` String are upper case. """ raise NotImplementedError() @method def toLowerCase(self) -> "HlString": """ Returns a String where all characters of `this` String are lower case. """ raise NotImplementedError() @method def charAt(self, index: int) -> "HlString": """ Returns the character at position `index` of `this` String. If `index` is negative or exceeds `this.length`, the empty String `""` is returned. """ raise NotImplementedError() @method def charCodeAt(self, index: int) -> Optional[int]: """ Returns the character code at position `index` of `this` String. If `index` is negative or exceeds `this.length`, `null` is returned. To obtain the character code of a single character, `"x".code` can be used instead to inline the character code at compile time. Note that this only works on String literals of length 1. """ raise NotImplementedError() @method def findChar(self, start: int, len: int, src: HlObj, srcLen: int) -> int: """ Undocumented private inline function that only exists in Hashlink. Probably not worth using. """ raise NotImplementedError() @method def indexOf(self, str: "HlString", startIndex: Optional[int]) -> int: """ Returns the position of the leftmost occurrence of `str` within `this` String. If `str` is the empty String `""`, then: * If `startIndex` is not specified or < 0, 0 is returned. * If `startIndex >= this.length`, `this.length` is returned. * Otherwise, `startIndex` is returned, Otherwise, if `startIndex` is not specified or < 0, it is treated as 0. If `startIndex >= this.length`, -1 is returned. Otherwise the search is performed within the substring of `this` String starting at `startIndex`. If `str` is found, the position of its first character in `this` String relative to position 0 is returned. If `str` cannot be found, -1 is returned. """ raise NotImplementedError() @method def lastIndexOf(self, str: "HlString", startIndex: Optional[int]) -> int: """ Returns the position of the rightmost occurrence of `str` within `this` String. If `startIndex` is given, the search is performed within the substring of `this` String from 0 to `startIndex + str.length`. Otherwise the search is performed within `this` String. In either case, the returned position is relative to the beginning of `this` String. If `startIndex` is negative, the result is unspecified. If `str` cannot be found, -1 is returned. """ raise NotImplementedError() @method def split(self, delimiter: "HlString") -> List[HlString]: """ Splits `this` String at each occurrence of `delimiter`. If `this` String is the empty String `""`, the result is not consistent across targets and may either be `[]` (on Js, Cpp) or `[""]`. If `delimiter` is the empty String `""`, `this` String is split into an Array of `this.length` elements, where the elements correspond to the characters of `this` String. If `delimiter` is not found within `this` String, the result is an Array with one element, which equals `this` String. If `delimiter` is null, the result is unspecified. Otherwise, `this` String is split into parts at each occurrence of `delimiter`. If `this` String starts (or ends) with `delimiter`, the result `Array` contains a leading (or trailing) empty String `""` element. Two subsequent delimiters also result in an empty String `""` element. """ raise NotImplementedError() @method def substr(self, pos: int, len: Optional[int]) -> HlString: """ Returns `len` characters of `this` String, starting at position `pos`. If `len` is omitted, all characters from position `pos` to the end of `this` String are included. If `pos` is negative, its value is calculated from the end of `this` String by `this.length + pos`. If this yields a negative value, 0 is used instead. If the calculated position + `len` exceeds `this.length`, the characters from that position to the end of `this` String are returned. If `len` is negative, the result is unspecified. """ raise NotImplementedError() @method def substring(self, startIndex: int, endIndex: Optional[int]) -> HlString: """ Returns the part of `this` String from `startIndex` to but not including `endIndex`. If `startIndex` or `endIndex` are negative, 0 is used instead. If `startIndex` exceeds `endIndex`, they are swapped. If the (possibly swapped) `endIndex` is omitted or exceeds `this.length`, `this.length` is used instead. If the (possibly swapped) `startIndex` exceeds `this.length`, the empty String `""` is returned. """ raise NotImplementedError() @method def toString(self) -> HlString: """ Returns the String itself. """ raise NotImplementedError() @method def fromCharCode(self, code: int) -> HlString: """ Returns the String corresponding to the character code `code`. If `code` is negative or has another invalid value, the result is unspecified. """ raise NotImplementedError()
Proxy to a Hashlink string.
Ancestors
Class variables
var bytes : bytes
-
Internal byte array.
var length : int
-
The number of characters in
this
String.
Methods
def charAt(self, index: int) ‑> HlString
-
Expand source code
@method def charAt(self, index: int) -> "HlString": """ Returns the character at position `index` of `this` String. If `index` is negative or exceeds `this.length`, the empty String `""` is returned. """ raise NotImplementedError()
Returns the character at position
index
ofthis
String.If
index
is negative or exceedsthis.length
, the empty String""
is returned. def charCodeAt(self, index: int) ‑> int | None
-
Expand source code
@method def charCodeAt(self, index: int) -> Optional[int]: """ Returns the character code at position `index` of `this` String. If `index` is negative or exceeds `this.length`, `null` is returned. To obtain the character code of a single character, `"x".code` can be used instead to inline the character code at compile time. Note that this only works on String literals of length 1. """ raise NotImplementedError()
Returns the character code at position
index
ofthis
String.If
index
is negative or exceedsthis.length
,null
is returned.To obtain the character code of a single character,
"x".code
can be used instead to inline the character code at compile time. Note that this only works on String literals of length 1. def findChar(self, start: int, len: int, src: HlObj, srcLen: int) ‑> int
-
Expand source code
@method def findChar(self, start: int, len: int, src: HlObj, srcLen: int) -> int: """ Undocumented private inline function that only exists in Hashlink. Probably not worth using. """ raise NotImplementedError()
Undocumented private inline function that only exists in Hashlink. Probably not worth using.
def fromCharCode(self, code: int) ‑> HlString
-
Expand source code
@method def fromCharCode(self, code: int) -> HlString: """ Returns the String corresponding to the character code `code`. If `code` is negative or has another invalid value, the result is unspecified. """ raise NotImplementedError()
Returns the String corresponding to the character code
code
.If
code
is negative or has another invalid value, the result is unspecified. def indexOf(self,
str: "'HlString'",
startIndex: Optional[int]) ‑> int-
Expand source code
@method def indexOf(self, str: "HlString", startIndex: Optional[int]) -> int: """ Returns the position of the leftmost occurrence of `str` within `this` String. If `str` is the empty String `""`, then: * If `startIndex` is not specified or < 0, 0 is returned. * If `startIndex >= this.length`, `this.length` is returned. * Otherwise, `startIndex` is returned, Otherwise, if `startIndex` is not specified or < 0, it is treated as 0. If `startIndex >= this.length`, -1 is returned. Otherwise the search is performed within the substring of `this` String starting at `startIndex`. If `str` is found, the position of its first character in `this` String relative to position 0 is returned. If `str` cannot be found, -1 is returned. """ raise NotImplementedError()
Returns the position of the leftmost occurrence of
str
withinthis
String.If
str
is the empty String""
, then: * IfstartIndex
is not specified or < 0, 0 is returned. * IfstartIndex >= this.length
,this.length
is returned. * Otherwise,startIndex
is returned,Otherwise, if
startIndex
is not specified or < 0, it is treated as 0.If
startIndex >= this.length
, -1 is returned.Otherwise the search is performed within the substring of
this
String starting atstartIndex
. Ifstr
is found, the position of its first character inthis
String relative to position 0 is returned.If
str
cannot be found, -1 is returned. def lastIndexOf(self,
str: "'HlString'",
startIndex: Optional[int]) ‑> int-
Expand source code
@method def lastIndexOf(self, str: "HlString", startIndex: Optional[int]) -> int: """ Returns the position of the rightmost occurrence of `str` within `this` String. If `startIndex` is given, the search is performed within the substring of `this` String from 0 to `startIndex + str.length`. Otherwise the search is performed within `this` String. In either case, the returned position is relative to the beginning of `this` String. If `startIndex` is negative, the result is unspecified. If `str` cannot be found, -1 is returned. """ raise NotImplementedError()
Returns the position of the rightmost occurrence of
str
withinthis
String.If
startIndex
is given, the search is performed within the substring ofthis
String from 0 tostartIndex + str.length
. Otherwise the search is performed withinthis
String. In either case, the returned position is relative to the beginning ofthis
String.If
startIndex
is negative, the result is unspecified.If
str
cannot be found, -1 is returned. def split(self,
delimiter: "'HlString'") ‑> List[HlString]-
Expand source code
@method def split(self, delimiter: "HlString") -> List[HlString]: """ Splits `this` String at each occurrence of `delimiter`. If `this` String is the empty String `""`, the result is not consistent across targets and may either be `[]` (on Js, Cpp) or `[""]`. If `delimiter` is the empty String `""`, `this` String is split into an Array of `this.length` elements, where the elements correspond to the characters of `this` String. If `delimiter` is not found within `this` String, the result is an Array with one element, which equals `this` String. If `delimiter` is null, the result is unspecified. Otherwise, `this` String is split into parts at each occurrence of `delimiter`. If `this` String starts (or ends) with `delimiter`, the result `Array` contains a leading (or trailing) empty String `""` element. Two subsequent delimiters also result in an empty String `""` element. """ raise NotImplementedError()
Splits
this
String at each occurrence ofdelimiter
.If
this
String is the empty String""
, the result is not consistent across targets and may either be[]
(on Js, Cpp) or[""]
.If
delimiter
is the empty String""
,this
String is split into an Array ofthis.length
elements, where the elements correspond to the characters ofthis
String.If
delimiter
is not found withinthis
String, the result is an Array with one element, which equalsthis
String.If
delimiter
is null, the result is unspecified.Otherwise,
this
String is split into parts at each occurrence ofdelimiter
. Ifthis
String starts (or ends) withdelimiter
, the resultArray
contains a leading (or trailing) empty String""
element. Two subsequent delimiters also result in an empty String""
element. def substr(self, pos: int, len: Optional[int]) ‑> HlString
-
Expand source code
@method def substr(self, pos: int, len: Optional[int]) -> HlString: """ Returns `len` characters of `this` String, starting at position `pos`. If `len` is omitted, all characters from position `pos` to the end of `this` String are included. If `pos` is negative, its value is calculated from the end of `this` String by `this.length + pos`. If this yields a negative value, 0 is used instead. If the calculated position + `len` exceeds `this.length`, the characters from that position to the end of `this` String are returned. If `len` is negative, the result is unspecified. """ raise NotImplementedError()
Returns
len
characters ofthis
String, starting at positionpos
.If
len
is omitted, all characters from positionpos
to the end ofthis
String are included.If
pos
is negative, its value is calculated from the end ofthis
String bythis.length + pos
. If this yields a negative value, 0 is used instead.If the calculated position +
len
exceedsthis.length
, the characters from that position to the end ofthis
String are returned.If
len
is negative, the result is unspecified. def substring(self, startIndex: int, endIndex: Optional[int]) ‑> HlString
-
Expand source code
@method def substring(self, startIndex: int, endIndex: Optional[int]) -> HlString: """ Returns the part of `this` String from `startIndex` to but not including `endIndex`. If `startIndex` or `endIndex` are negative, 0 is used instead. If `startIndex` exceeds `endIndex`, they are swapped. If the (possibly swapped) `endIndex` is omitted or exceeds `this.length`, `this.length` is used instead. If the (possibly swapped) `startIndex` exceeds `this.length`, the empty String `""` is returned. """ raise NotImplementedError()
Returns the part of
this
String fromstartIndex
to but not includingendIndex
.If
startIndex
orendIndex
are negative, 0 is used instead.If
startIndex
exceedsendIndex
, they are swapped.If the (possibly swapped)
endIndex
is omitted or exceedsthis.length
,this.length
is used instead.If the (possibly swapped)
startIndex
exceedsthis.length
, the empty String""
is returned. def toLowerCase(self) ‑> HlString
-
Expand source code
@method def toLowerCase(self) -> "HlString": """ Returns a String where all characters of `this` String are lower case. """ raise NotImplementedError()
Returns a String where all characters of
this
String are lower case. def toString(self) ‑> HlString
-
Expand source code
@method def toString(self) -> HlString: """ Returns the String itself. """ raise NotImplementedError()
Returns the String itself.
def toUpperCase(self) ‑> HlString
-
Expand source code
@method def toUpperCase(self) -> "HlString": """ Returns a String where all characters of `this` String are upper case. """ raise NotImplementedError()
Returns a String where all characters of
this
String are upper case.