uuid.bmx 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. ' Copyright (c) 2015-2019 Bruce A Henderson
  2. ' All rights reserved.
  3. '
  4. ' Redistribution and use in source and binary forms, with or without
  5. ' modification, are permitted provided that the following conditions are met:
  6. ' * Redistributions of source code must retain the above copyright
  7. ' notice, this list of conditions and the following disclaimer.
  8. ' * Redistributions in binary form must reproduce the above copyright
  9. ' notice, this list of conditions and the following disclaimer in the
  10. ' documentation and/or other materials provided with the distribution.
  11. ' * Neither the name of the author nor the
  12. ' names of its contributors may be used to endorse or promote products
  13. ' derived from this software without specific prior written permission.
  14. '
  15. ' THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
  16. ' EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  17. ' WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  18. ' DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
  19. ' DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  20. ' (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  21. ' LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  22. ' ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  23. ' (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  24. ' SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  25. '
  26. SuperStrict
  27. Rem
  28. bbdoc: Generate UUIDs
  29. End Rem
  30. Module BRL.uuid
  31. ModuleInfo "Version: 1.01"
  32. ModuleInfo "License: BSD"
  33. ModuleInfo "Copyright: Wrapper - 2015-2019 Bruce A Henderson"
  34. ModuleInfo "History: 1.01"
  35. ModuleInfo "History: Update to util-linux 2.34"
  36. ModuleInfo "History: 1.00"
  37. ModuleInfo "History: Initial Release."
  38. Import Pub.libuuid
  39. Rem
  40. bbdoc: Generates a UUID in canonical form, optionally in uppercase.
  41. End Rem
  42. Function uuidGenerate:String(upperCase:Int = False)
  43. Return uuidToCanonical(uuidGenerateBytes(), upperCase)
  44. End Function
  45. Rem
  46. bbdoc: Generates a UUID Byte array.
  47. End Rem
  48. Function uuidGenerateBytes:Byte[]()
  49. Local buf:Byte[16]
  50. uuid_generate(buf)
  51. Return buf
  52. End Function
  53. Rem
  54. bbdoc: Converts a UUID Byte array into a String, optionally in uppercase.
  55. End Rem
  56. Function uuidToCanonical:String(buf:Byte[], upperCase:Int = False)
  57. Local out:Byte[100]
  58. If upperCase Then
  59. uuid_unparse_upper(buf, out)
  60. Else
  61. uuid_unparse(buf, out)
  62. End If
  63. Return String.FromBytes(out, strlen(out))
  64. End Function