1e5c31af7Sopenharmony_ci/*-------------------------------------------------------------------------
2e5c31af7Sopenharmony_ci * drawElements C++ Base Library
3e5c31af7Sopenharmony_ci * -----------------------------
4e5c31af7Sopenharmony_ci *
5e5c31af7Sopenharmony_ci * Copyright 2014 The Android Open Source Project
6e5c31af7Sopenharmony_ci *
7e5c31af7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
8e5c31af7Sopenharmony_ci * you may not use this file except in compliance with the License.
9e5c31af7Sopenharmony_ci * You may obtain a copy of the License at
10e5c31af7Sopenharmony_ci *
11e5c31af7Sopenharmony_ci *      http://www.apache.org/licenses/LICENSE-2.0
12e5c31af7Sopenharmony_ci *
13e5c31af7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
14e5c31af7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
15e5c31af7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16e5c31af7Sopenharmony_ci * See the License for the specific language governing permissions and
17e5c31af7Sopenharmony_ci * limitations under the License.
18e5c31af7Sopenharmony_ci *
19e5c31af7Sopenharmony_ci *//*!
20e5c31af7Sopenharmony_ci * \file
21e5c31af7Sopenharmony_ci * \brief Memory pool -backed string.
22e5c31af7Sopenharmony_ci *//*--------------------------------------------------------------------*/
23e5c31af7Sopenharmony_ci
24e5c31af7Sopenharmony_ci#include "dePoolString.hpp"
25e5c31af7Sopenharmony_ci
26e5c31af7Sopenharmony_ci#include <algorithm>
27e5c31af7Sopenharmony_ci#include <cstring>
28e5c31af7Sopenharmony_ci
29e5c31af7Sopenharmony_cinamespace de
30e5c31af7Sopenharmony_ci{
31e5c31af7Sopenharmony_ci
32e5c31af7Sopenharmony_civoid PoolString::toString (std::string& str) const
33e5c31af7Sopenharmony_ci{
34e5c31af7Sopenharmony_ci	str.resize(size());
35e5c31af7Sopenharmony_ci	std::copy(begin(), end(), str.begin());
36e5c31af7Sopenharmony_ci}
37e5c31af7Sopenharmony_ci
38e5c31af7Sopenharmony_civoid PoolString::append (const char* str)
39e5c31af7Sopenharmony_ci{
40e5c31af7Sopenharmony_ci	deUintptr	oldEnd	= size();
41e5c31af7Sopenharmony_ci	size_t		len		= strlen(str);
42e5c31af7Sopenharmony_ci
43e5c31af7Sopenharmony_ci	resize(size()+len);
44e5c31af7Sopenharmony_ci	std::copy(str, str+len, begin()+oldEnd);
45e5c31af7Sopenharmony_ci}
46e5c31af7Sopenharmony_ci
47e5c31af7Sopenharmony_civoid PoolString::append (const std::string& str)
48e5c31af7Sopenharmony_ci{
49e5c31af7Sopenharmony_ci	deUintptr oldEnd = size();
50e5c31af7Sopenharmony_ci
51e5c31af7Sopenharmony_ci	resize(size()+str.length());
52e5c31af7Sopenharmony_ci	std::copy(str.begin(), str.end(), begin()+oldEnd);
53e5c31af7Sopenharmony_ci}
54e5c31af7Sopenharmony_ci
55e5c31af7Sopenharmony_civoid PoolString::append (const PoolString& str)
56e5c31af7Sopenharmony_ci{
57e5c31af7Sopenharmony_ci	deUintptr oldEnd = size();
58e5c31af7Sopenharmony_ci
59e5c31af7Sopenharmony_ci	resize(size()+str.size());
60e5c31af7Sopenharmony_ci	std::copy(str.begin(), str.end(), begin()+oldEnd);
61e5c31af7Sopenharmony_ci}
62e5c31af7Sopenharmony_ci
63e5c31af7Sopenharmony_cistd::ostream& operator<< (std::ostream& stream, const PoolString& string)
64e5c31af7Sopenharmony_ci{
65e5c31af7Sopenharmony_ci	for (PoolString::ConstIterator i = string.begin(); i != string.end(); i++)
66e5c31af7Sopenharmony_ci		stream << *i;
67e5c31af7Sopenharmony_ci	return stream;
68e5c31af7Sopenharmony_ci}
69e5c31af7Sopenharmony_ci
70e5c31af7Sopenharmony_ci} // de
71