1//
2// ObjectId.cpp
3//
4// Library: MongoDB
5// Package: MongoDB
6// Module: ObjectId
7//
8// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
9// and Contributors.
10//
11// SPDX-License-Identifier: BSL-1.0
12//
13
14
15#include "Poco/MongoDB/ObjectId.h"
16#include "Poco/Format.h"
17#include <cstring>
18
19
20namespace Poco {
21namespace MongoDB {
22
23
24ObjectId::ObjectId()
25{
26 std::memset(_id, 0, sizeof(_id));
27}
28
29
30ObjectId::ObjectId(const std::string& id)
31{
32 poco_assert_dbg(id.size() == 24);
33
34 const char* p = id.c_str();
35 for (std::size_t i = 0; i < 12; ++i)
36 {
37 _id[i] = fromHex(p);
38 p += 2;
39 }
40}
41
42
43ObjectId::ObjectId(const ObjectId& copy)
44{
45 std::memcpy(_id, copy._id, sizeof(_id));
46}
47
48
49ObjectId::~ObjectId()
50{
51}
52
53
54std::string ObjectId::toString(const std::string& fmt) const
55{
56 std::string s;
57
58 for (int i = 0; i < 12; ++i)
59 {
60 s += format(fmt, (unsigned int) _id[i]);
61 }
62 return s;
63}
64
65
66} } // namespace Poco::MongoDB
67