• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*-------------------------------------------------------------------------
2  * drawElements Quality Program Random Shader Generator
3  * ----------------------------------------------------
4  *
5  * Copyright 2014 The Android Open Source Project
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  *//*!
20  * \file
21  * \brief Name Allocator.
22  *//*--------------------------------------------------------------------*/
23 
24 #include "rsgNameAllocator.hpp"
25 
26 namespace rsg
27 {
28 
NameAllocator(void)29 NameAllocator::NameAllocator (void)
30 	: m_nextName(1)
31 {
32 }
33 
~NameAllocator(void)34 NameAllocator::~NameAllocator (void)
35 {
36 }
37 
nameNdxToStr(deUint32 name)38 inline std::string nameNdxToStr (deUint32 name)
39 {
40 	std::string	str			= "";
41 	deUint32	alphabetLen	= 'z' - 'a' + 1;
42 
43 	while (name > alphabetLen)
44 	{
45 		str.insert(str.begin(), (char)('a' + ((name-1)%alphabetLen)));
46 		name = ((name-1) / alphabetLen);
47 	}
48 
49 	str.insert(str.begin(), (char)('a' + (name%(alphabetLen+1)) - 1));
50 
51 	return str;
52 }
53 
allocate(void)54 std::string NameAllocator::allocate (void)
55 {
56 	DE_ASSERT(m_nextName != 0);
57 	return nameNdxToStr(m_nextName++);
58 }
59 
60 } // rsg
61