इस प्रोजेक्ट के बारे में
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** — `std::error_code` के लिए `Domain`, `Category`, `Code` और `Fault`; क्रॉस-DLL उपयोग के लिए `Fault::what()` एक `CString` लौटाता है।
- **Expected** — `std::expected` पर आधारित `Expected<T, E>`, जिसमें त्रुटि Base के हीप पर `Shared<E>` के रूप में रखी जाती है और `std::shared_ptr<E>` में परिवर्तनीय होती है।
- **सीरियलाइज़ेशन** — `Serializable<T>` से `BinaryData`, सदैव लिटिल-एंडियन, कोई BOM या संस्करण टैग नहीं; कस्टम प्रकार `Detail::Codec<T>` को विशेषीकृत करते हैं। वाइड स्ट्रिंग्स `uint64` लंबाई के साथ UTF-8 के रूप में यात्रा करती हैं।
- **CString / WCString** — स्वामित्व वाले NUL-टर्मिनेटेड नैरो और वाइड बफ़र जो DLL सीमाओं के पार सुरक्षित हैं, सामग्री समानता, क्रम, `swap` और `std::hash` के साथ।
- **BinaryData** — स्वामित्व वाला सतत `std::byte` अनुक्रम जिसमें `std::vector<std::byte>`-जैसा API, `HexDump` आउटपुट, और `std::span` तथा `std::vector` के साथ अंतरसंक्रियता है।
- **Size / ByteSize** — `uint64_t`-आधारित इकाई गणना और ऑक्टेट लंबाई प्रकार, IEC/SI स्थिरांक और मानव-पठनीय स्वरूपण के साथ; क्षेत्रफल गुणनफल हटा दिए गए हैं।
- **UUID** — RFC 4122 संस्करण 4 जनरेशन।
- **Bitmask** — अहस्ताक्षरित स्कोप्ड एनम पर CRTP फ़्लैग।
- **सुरक्षित पॉइंटर** — `Shared`, `Unique` और `Weak` उन ऑब्जेक्ट्स के लिए मानक स्मार्ट पॉइंटर की पूर्ति करते हैं जिन्हें Base के हीप पर मुक्त किया जाना चाहिए; `Heap` निजी है और इंस्टॉल नहीं होता।
- **Clonable** — `Shared` या `Unique` पॉइंटर लौटाने वाला बहुरूपी `Clone` / `Move`।
- **ThreadLock** — स्वामी-थ्रेड रीएंट्रेंट लॉक।
- **टाइप कॉन्सेप्ट** — `StormByte::Type::*` कॉन्सेप्ट जैसे `String`, `Container`, `Optional`, `Pair`, `Numeral` और `Array`।
- **प्लेटफ़ॉर्म / दृश्यता** — `WINDOWS` / `LINUX` / `MACOS`, `BIT32` / `BIT64`, और `CLANG` / `GCC` / `MSVC` के लिए मैक्रो।
README इस बात पर ज़ोर देता है कि सार्वजनिक Base API गणना के लिए `Size` और ऑक्टेट के लिए `ByteSize` का उपयोग करते हैं, कच्चे `std::size_t` / `std::uint64_t` के बजाय। सूट जानबूझकर विभाजित है: Buffer, Config, Crypto, Database, Logger, Multimedia, Network, String और System अलग रिपॉज़िटरी हैं जो इस पर निर्भर करती हैं। लाइसेंसिंग LGPL v3 या वाणिज्यिक है।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.