Lib
package cs
Доступно в cs
Библиотека C# для платформы. Предоставляет некоторые платформенно-специфичные функции для целевой платформы C#, такие как преобразование из типов Haxe в родные типы и обратно.
Статические методы
staticinlineaddressOf<T>(variable:T):Pointer<T>
Возвращает указатель на адрес текущего локального значения. Эквивалентно оператору "&" в C#. Использование:
var x:Int = 0;
cs.Lib.unsafe({
var addr = cs.Lib.addressOf(x);
x[0] = 42;
});
trace(x); //42
Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии. Предупреждение: этот метод будет работать только в том случае, если локальная переменная передаётся в качестве аргумента.
staticapplyCultureChanges():Void
Изменяет текущие настройки культуры, чтобы обеспечить согласованное межплатформенное поведение. В настоящее время единственное изменение связано с разделителем десятичных знаков, который всегда устанавливается в «.»
staticinlinearray<T>(native:NativeArray<T>):Array<T>
Возвращает массив Haxe из родного массива. Если erase_generics не определён, содержимое родного массива не копируется, поэтому все изменения, внесённые в массив Haxe, будут влиять на аргумент родного массива, за исключением случаев изменения размера массива.
staticinlinearrayAlloc<T>(size:Int):Array<T>
Выделяет новый массив Haxe с заданным размером.
staticinlineas<T>(obj:Dynamic, cl:Class<T>):T
Обеспечивает поддержку оператора «as» в C#. Если объект не является объектом указанного типа «T», он вернёт null вместо исключения.
Эта функция не работает с типами значений (такими как Int, Float, Bool...).
staticinlinechecked<V>(block:V):Void
Создаёт блок «checked», который выбрасывает исключение при переполнении.
Использование:
cs.Lib.checked({
var x = 1000;
while(true)
{
x *= x;
}
});
Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.
staticinlinefixed<V>(block:V):Void
Помечает параметры как фиксированные объекты внутри определённого блока. Первые объявления переменных, использующие cs.Lib.pointerOfArray(), будут фиксированными определениями. Использование:
cs.Lib.fixed({
var obj1 = cs.Lib.pointerOfArray(someArray);
var obj2 = cs.Lib.pointerOfArray(someArray2);
var obj3 = cs.Lib.pointerOfArray(someArray3);
//from now on, obj1, obj2 and obj3 are fixed
//we cannot change obj1, obj2 or obj3 variables like this:
//obj1++;
});
Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.
staticinlinefromNativeType(t:Type):Class<Dynamic>
Возвращает эквивалент типа System.Type в виде Class<>.
В настоящее время Haxe's Class<> эквивалентен System.Type, но это деталь реализации. Это может измениться в будущем, поэтому используйте эту функцию всякий раз, когда вам нужно выполнить такое преобразование.
staticinlinegetNativeType(obj:Dynamic):Type
Получает родной тип System.Type из переданного объекта. Выбросит исключение в случае передачи null.
staticinlinelock<O, V>(obj:O, block:V):Void
Гарантирует, что одна нить не войдёт в критическую секцию кода, пока другая нить находится в этой секции. Если другая нить попытается войти в заблокированный код, она будет ждать, заблокирована, пока объект не будет освобождён.
Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.
staticinlinenativeArray<T>(arr:Array<T>, equalLengthRequired:Bool):NativeArray<T>
Возвращает родной массив из переданного массива. Этот родной массив небезопасен для записи, так как он может или не может быть связан с фактической реализацией массива.
Если equalLengthRequired имеет значение true, результат может быть копией массива с правильным размером.
staticinlinenativeType(obj:Dynamic):Type
Возвращает родной тип System.Type из переданного объекта. Выбросит исключение в случае передачи null. [устарело] - используйте getNativeType вместо этого
staticinlinepointerOfArray<T>(array:NativeArray<T>):Pointer<T>
Преобразует управляемый родной массив в указатель. Должен быть внутри оператора fixed. Использование:
var x:cs.NativeArray<Int> = new cs.NativeArray(1);
cs.Lib.unsafe({
cs.Lib.fixed({
var addr = cs.Lib.pointerOfArray(x);
trace(cs.Lib.valueOf(addr)); //0
addr[0] = 42;
trace(cs.Lib.valueOf(addr)); //42
});
});
trace(x[0]); //42
Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.
staticinlinerethrow(e:Dynamic):Void
Перебросить исключение. Это полезно при ручном фильтровании исключения, чтобы сохранить предыдущий стек исключений.
staticrevertDefaultCulture():Void
Возвращает настройки культуры к значениям по умолчанию.
staticinlinesizeof(struct:Class<Dynamic>):Int
Возвращает размер в байтах заданной структуры. Работает только со структурами и базовыми типами.
staticinlinetoNativeEnum(cl:Enum<Dynamic>):Type
Возвращает эквивалент типа Haxe Enum<> в виде System.Type.
staticinlinetoNativeType(cl:Class<Dynamic>):Type
Возвращает эквивалент типа Haxe Class<> в виде System.Type.
В настоящее время Haxe's Class<> эквивалентен System.Type, но это деталь реализации. Это может измениться в будущем, поэтому используйте эту функцию всякий раз, когда вам нужно выполнить такое преобразование.
staticinlineunsafe<V>(block:V):Void
Помечает содержащийся блок как небезопасный, то есть он может содержать небезопасный код. Использование:
cs.Lib.unsafe({
//unsafe code is allowed inside here
});
Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.
staticinlinevalueOf<T>(pointer:Pointer<T>):T
Получает значение по указанному адресу. Использование:
var x:Int = 0;
cs.Lib.unsafe({
var addr = cs.Lib.addressOf(x);
trace(cs.Lib.valueOf(addr)); //0
addr[0] = 42;
trace(cs.Lib.valueOf(addr)); //42
});
trace(x); //42
Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.
© 2005–2020 Haxe Foundation
Licensed under a MIT license.
https://api.haxe.org/cs/Lib.html