StructPadding

Представляю свою библиотеку для обнуления байт выравнивания (padding) в unmanaged структурах. Обнуление байт паддинга (padding) обеспечивает детерминированное состояние памяти, что критически важно для двоичного сравнения или вычисления хэша. И не менее важно при бинарной сериализации.

https://habr.com/ru/articles/968650/

#padding #struct #nuget

StructPadding

Представляю свою библиотеку для обнуления байт выравнивания (padding) в unmanaged структурах. Зачем это нужно? Обнуление байт паддинга (padding) обеспечивает детерминированное состояние памяти,...

Хабр
🍝 nudel

File Format Gallery for Kaitai Struct

Kaitai Struct is a formal language for binary format specification that can be compiled into parser code

Teaching structs to ghidra for fun and flags

#ctf #cybersecurity #ghidra #struct #pwncollege

readonly struct в C#

Привет, Хабр! Вы, вероятно, уже сталкивались с struct в C# и задумались: а зачем нужен readonly struct и когда он реально спасает, а когда, наоборот, начинает всё тормозить? Сегодня это и рассмотрим.

https://habr.com/ru/companies/otus/articles/905924/

#c# #struct #readonly_struct

readonly struct в C#

Привет, Хабр! Вы, вероятно, уже сталкивались с struct в C# и задумались: а зачем нужен readonly struct , когда он действительно спасает, а когда, наоборот, начинает всё тормозить? Сегодня рассмотрим...

Хабр
Implementing a Struct of Arrays

Recently, I watched Andrew Kelley’s talk on Practical Data Oriented Design. It goes into some of the architectural changes he’s been making to the Zig compiler, with pretty significant performance benefit. Would definitely recommend checking out the talk, even if you’re like me and have never written any Zig.

Barry’s C++ Blog

Порядок инициализации полей, статики и всего остального в C#

Всем привет! Многие сталкиваются с трудностями на собеседовании на вопросе по типу "Расскажите о порядке иницализации в C#". Либо банально когда видят квиз, стараются вспомнить, а что там должно инициализироваться? Сегодня многие вспомнят, а кто-то узнает о порядке инициализации. Затронем не только классы, а также структуры, а точнее - ключевое слово default для них. Сделаем следующие классы и посмотрим, что будет при создании объекта B:

https://habr.com/ru/articles/886692/

#c# #net #net_core #struct #инициализация #поля

Порядок инициализации полей, статики и всего остального в C#

Всем привет! Многие сталкиваются с трудностями на собеседовании на вопросе по типу "Расскажите о порядке иницализации в C#". Либо банально когда видят квиз, стараются вспомнить, а что там должно...

Хабр

Кастомная сериализация структур в UE

Допустим, вы создали свою USTRUCT в C++ и хотите её сериализовать. Обычно, достаточно просто пометить нужные поля как SaveGame . Но вот проблема, для этого эти поля сами должны поддерживать сериализацию. К сожалению одна из наших переменных не поддерживает сериализацию. В моем случае, это структура FNonSerializableStruct . Из-за этого сериализуется только вторая структура, хоть мы и пометили SaveGame обе.

https://habr.com/ru/articles/865170/

#usrtuct #struct #serialize #serializable #структура #сериализация #unreal_engine #ue #структуры #анрил

Кастомная сериализация структур в UE

Введение Допустим, вы создали свою USTRUCT в C++ и хотите её сериализовать. USTRUCT(BlueprintType) struct FComplexStruct { GENERATED_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite)...

Хабр

In Swift I want to write a struct as a binary file, my struct looks like this:

struct Bitmap {
var bfh: BitmapFileHeader
var bih: BitmapInfoHeader
var imageData: Data
}

the BitmapFileHeader and BitmapInfoHeader contain only UInt32 and UInt16 variables.

Now it should be quite easy to write it with this:
let data = withUnsafeBytes(of: myStruct) { Data($0) }

but the imageData won't be written because it's from type Data.

Ok, so I have to write it like this:

withUnsafeBytes(of: myBMP.bfh) { data.append(contentsOf: $0) }
withUnsafeBytes(of: myBMP.bih) { data.append(contentsOf: $0) }
data.append(myBMP.imageData)

But that inserts padding so that every variable uses 4 bytes instead of what I defined.

So I have to write each variable like this:

withUnsafeBytes(of: myBMP.bfh.type) { data.append(contentsOf: $0) }
withUnsafeBytes(of: myBMP.bfh.size) { data.append(contentsOf: $0) }
and so on...

Seriously? Is there really no easy generic way to just write the Data as is?

#swift #struct

У C++20 зʼявились концепти й обмеження для функцій, класів/структур та інших шаблонів. Для функцій та методів вимоги можна вказувати після оголошення шаблону або після функції.

template<typename T> requires ... T f() {} template<typename T> T f() requires ... {}

Якщо не шаблонний метод у шаблоні класу потребує додаткових вимог їх можна вказати після оголошення методу.

template<typename T> class S { T f() requires integer<T> {} };

У такому випадку клас може згенеруватись з будь-яким типом, але це метод буде присутній тільки якщо шаблонний тип відповідає вимогам.

Але іноді може знадобитись використати поточний клас у вимогах. Наприклад при CRTP.

template<typename D> class Base requires std::derived_from<D, Base> {...};

На жаль зараз такого немає.

#cpp #cxx #cpp20 #concepts #constrains #requires #class #template #struct #CRTP #proposal #програмування #шаблони #вимоги #обмеження #пропозиція

Social.Net.Ua