عن المشروع
StormByte Base هي وحدة الأساس C++26 التي ترتبط بها كل مكتبة أخرى في مجموعة StormByte. توجد الرؤوس العامة تحت `StormByte/` وجذر مساحة الاسم هو `StormByte`. تتطلب مترجم C++26 وCMake 3.28 أو أحدث، وتُبنى على Linux وWindows وmacOS.
المرافق الأساسية الموثقة في README:
- **الاستثناءات** — `StormByte::Exception` يبني رسائل هرمية مثل `StormByte.Crypto.Crypter: …`؛ `what()` يُرجع `CString`. كل نوع مسمى يُعرّف مُدمِّره في ملف `.cxx` الخاص بالوحدة بحيث يتطابق `catch` عبر حدود DLL.
- **Error** — `Domain` و`Category` و`Code` و`Fault` لـ `std::error_code`؛ `Fault::what()` يُرجع `CString` للاستخدام عبر DLL.
- **Expected** — `Expected<T, E>` مبني على `std::expected`، مع الاحتفاظ بالخطأ كـ `Shared<E>` على كومة Base وقابل للتحويل إلى `std::shared_ptr<E>`.
- **التسلسل** — `Serializable<T>` إلى `BinaryData`، دائمًا صغير-endian، بدون BOM أو علامة إصدار؛ الأنواع المخصصة تُخصص `Detail::Codec<T>`. السلاسل الواسعة تُنقل بصيغة UTF-8 مع طول `uint64`.
- **CString / WCString** — مخازن ضيقة وواسعة مملوكة ومنتهية بـ NUL آمنة عبر حدود DLL، مع مساواة المحتوى والترتيب و`swap` و`std::hash`.
- **BinaryData** — تسلسل `std::byte` متصل مملوك مع واجهة برمجة شبيهة بـ `std::vector<std::byte>`، وإخراج `HexDump`، وقابلية التشغيل مع `std::span` و`std::vector`.
- **Size / ByteSize** — أنواع عدد الوحدات وطول الأوكتيت المدعومة بـ `uint64_t` مع ثوابت IEC/SI وتنسيق قابل للقراءة البشرية؛ منتجات المساحة محذوفة.
- **UUID** — توليد الإصدار 4 من RFC 4122.
- **Bitmask** — أعلام CRTP فوق تعداد نطاقي غير موقع.
- **المؤشرات الآمنة** — `Shared` و`Unique` و`Weak` تُكمل المؤشرات الذكية القياسية للكائنات التي يجب تحريرها على كومة Base؛ `Heap` خاص وغير مثبت.
- **Clonable** — `Clone` / `Move` متعدد الأشكال يُرجع مؤشرات `Shared` أو `Unique`.
- **ThreadLock** — قفل قابل لإعادة الدخول لمؤشر الترابط المالك.
- **مفاهيم الأنواع** — مفاهيم `StormByte::Type::*` مثل `String` و`Container` و`Optional` و`Pair` و`Numeral` و`Array`.
- **المنصة / الرؤية** — وحدات ماكرو لـ `WINDOWS` / `LINUX` / `MACOS` و`BIT32` / `BIT64` و`CLANG` / `GCC` / `MSVC`.
يؤكد README أن واجهات برمجة تطبيقات Base العامة تستخدم `Size` للعد و`ByteSize` للأوكتيت بدلاً من `std::size_t` / `std::uint64_t` الخام. المجموعة مقسمة عمدًا: Buffer وConfig وCrypto وDatabase وLogger وMultimedia وNetwork وString وSystem هي مستودعات منفصلة تعتمد على هذا. الترخيص هو LGPL v3 أو تجاري.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.