Size: a a a

2020 January 15

NT

Nikita Tsukanov in pro.net
нет, я из спана копирую указатель и размер в структуру на стеке
источник

NT

Nikita Tsukanov in pro.net
и уже на неё указатель кидаю в пинвоку
источник

IC

Ilya Chernoudov in pro.net
Nikita Tsukanov
нет, я из спана копирую указатель и размер в структуру на стеке
А почему пустой массив и null имеют разное проведение?🤔
источник

IC

Ilya Chernoudov in pro.net
Может если length 0 передавать null?
источник

NT

Nikita Tsukanov in pro.net
для либы есть разница между пустым массивом и нулевой ссылкой на массив
источник

NT

Nikita Tsukanov in pro.net
либа работает с бинарным юниксосокетным протоколом, в котором on-the-wire это разные вещи
источник

E

EgorBo in pro.net
Nikita Tsukanov
А у нас есть возможность сделать implicit - оператор конвертации null  в структуру?
ReadOnlySpan<byte> fuck = null;
источник

E

EgorBo in pro.net
создаст пустую структуру
источник

NT

Nikita Tsukanov in pro.net
а как мне понять, что это был null, а не Span.Empty<byte>?
источник

NT

Nikita Tsukanov in pro.net
по ходу придётся городить NullableReadOnlySpan<T>
источник

E

EgorBo in pro.net
так это однохуйственно
источник

E

EgorBo in pro.net
Span<byte> fuck = default;
Span<byte> fuck = null;
Span<byte> fuck = Span.Empty<byte>();
источник

NT

Nikita Tsukanov in pro.net
это однохуйственно для спана
источник

NT

Nikita Tsukanov in pro.net
но не однохуйственно для нативной либы
источник

NT

Nikita Tsukanov in pro.net
либа принимает
struct mylib_array
{
    size_t len;
    void *data;
}

void mylib_foo(mylib_array* nullableArray);
источник

E

EgorBo in pro.net
так
источник

NT

Nikita Tsukanov in pro.net
при этом есть разница в поведении при передаче нулевого указателя на mylib_array и при передаче указателя на пустой mylib_array
источник

NT

Nikita Tsukanov in pro.net
как мне это заврапать в дотнетное апи на ReadOnlySpan<T> ?
источник

E

EgorBo in pro.net
я не понимаю, ты хочешь отлавливать нулл ансейф поинтер и конвертить в пустую структуру?
источник

NT

Nikita Tsukanov in pro.net
нет, мне надо в своём
public void MyLibFoo(ReadOnlySpan<byte>  data)
источник