guid.h 1001 Bytes
Newer Older
gejun's avatar
gejun committed
1 2 3 4
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5 6
#ifndef BUTIL_GUID_H_
#define BUTIL_GUID_H_
gejun's avatar
gejun committed
7 8 9

#include <string>

10 11 12
#include "butil/base_export.h"
#include "butil/basictypes.h"
#include "butil/build_config.h"
gejun's avatar
gejun committed
13

14
namespace butil {
gejun's avatar
gejun committed
15 16 17 18 19

// Generate a 128-bit random GUID of the form: "%08X-%04X-%04X-%04X-%012llX".
// If GUID generation fails an empty string is returned.
// The POSIX implementation uses psuedo random number generation to create
// the GUID.  The Windows implementation uses system services.
20
BUTIL_EXPORT std::string GenerateGUID();
gejun's avatar
gejun committed
21 22

// Returns true if the input string conforms to the GUID format.
23
BUTIL_EXPORT bool IsValidGUID(const std::string& guid);
gejun's avatar
gejun committed
24 25 26

#if defined(OS_POSIX)
// For unit testing purposes only.  Do not use outside of tests.
27
BUTIL_EXPORT std::string RandomDataToGUIDString(const uint64_t bytes[2]);
gejun's avatar
gejun committed
28 29
#endif

30
}  // namespace butil
gejun's avatar
gejun committed
31

32
#endif  // BUTIL_GUID_H_