/* ------------------------------------------- Copyright ZKA Technologies File: GUIDWizard.cxx Purpose: GUID helper code Revision History: ------------------------------------------- */ #include #include // begin of ascii 'readable' characters. (A, C, C, 1, 2) #define kAsciiBegin 47 // @brief Size of UUID. #define kUUIDSize 37 namespace Kernel::XRN::Version1 { auto make_sequence(const ArrayList& uuidSeq) -> Ref { GUIDSequence* seq = new GUIDSequence(); MUST_PASS(seq); Ref sequenceReference{seq, true}; sequenceReference->fMs1 |= uuidSeq[0]; sequenceReference->fMs2 |= uuidSeq[1]; sequenceReference->fMs3 |= uuidSeq[2]; sequenceReference->fMs3 |= uuidSeq[3]; return sequenceReference; } // @brief Tries to make a guid out of a string. // This function is not complete for now auto try_guid_to_string(Ref& seq) -> ErrorOr> { Char buf[kUUIDSize]; for (SizeT index = 0; index < 16; ++index) { buf[index] = seq->u8[index] + kAsciiBegin; } for (SizeT index = 16; index < 24; ++index) { buf[index] = seq->u16[index] + kAsciiBegin; } for (SizeT index = 24; index < 28; ++index) { buf[index] = seq->u32[index] + kAsciiBegin; } auto view = StringBuilder::Construct(buf); if (view) return ErrorOr>{view.Leak()}; return ErrorOr>{-1}; } } // namespace Kernel::XRN::Version1