xref: /aosp_15_r20/external/deqp/framework/common/tcuFactoryRegistry.cpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
1 /*-------------------------------------------------------------------------
2  * drawElements Quality Program Tester Core
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 Generic registry class for factories
22  *//*--------------------------------------------------------------------*/
23 
24 #include "tcuFactoryRegistry.hpp"
25 
26 namespace tcu
27 {
28 
29 // AbstractFactory
30 
AbstractFactory(void)31 AbstractFactory::AbstractFactory(void)
32 {
33 }
34 
~AbstractFactory(void)35 AbstractFactory::~AbstractFactory(void)
36 {
37 }
38 
39 // GenericFactoryRegistry
40 
GenericFactoryRegistry(void)41 GenericFactoryRegistry::GenericFactoryRegistry(void)
42 {
43 }
44 
~GenericFactoryRegistry(void)45 GenericFactoryRegistry::~GenericFactoryRegistry(void)
46 {
47     for (std::vector<AbstractFactory *>::const_iterator i = m_factories.begin(); i != m_factories.end(); ++i)
48         delete *i;
49 }
50 
getFactoryByIndex(size_t index)51 AbstractFactory *GenericFactoryRegistry::getFactoryByIndex(size_t index)
52 {
53     DE_ASSERT(index < m_factories.size());
54     return m_factories[index];
55 }
56 
getFactoryByIndex(size_t index) const57 const AbstractFactory *GenericFactoryRegistry::getFactoryByIndex(size_t index) const
58 {
59     DE_ASSERT(index < m_factories.size());
60     return m_factories[index];
61 }
62 
getFactoryByName(const std::string & name)63 AbstractFactory *GenericFactoryRegistry::getFactoryByName(const std::string &name)
64 {
65     for (size_t index = 0; index < m_factories.size(); index++)
66     {
67         if (name == m_factories[index]->getName())
68             return m_factories[index];
69     }
70 
71     return DE_NULL;
72 }
73 
getFactoryByName(const std::string & name) const74 const AbstractFactory *GenericFactoryRegistry::getFactoryByName(const std::string &name) const
75 {
76     for (size_t index = 0; index < m_factories.size(); index++)
77     {
78         if (name == m_factories[index]->getName())
79             return m_factories[index];
80     }
81 
82     return DE_NULL;
83 }
84 
registerFactory(AbstractFactory * factory)85 void GenericFactoryRegistry::registerFactory(AbstractFactory *factory)
86 {
87     DE_ASSERT(!getFactoryByName(factory->getName()));
88     m_factories.push_back(factory);
89 }
90 
91 // FactoryBase
92 
FactoryBase(const std::string & name,const std::string & description)93 FactoryBase::FactoryBase(const std::string &name, const std::string &description)
94     : m_name(name)
95     , m_description(description)
96 {
97 }
98 
~FactoryBase(void)99 FactoryBase::~FactoryBase(void)
100 {
101 }
102 
getName(void) const103 const char *FactoryBase::getName(void) const
104 {
105     return m_name.c_str();
106 }
107 
getDescription(void) const108 const char *FactoryBase::getDescription(void) const
109 {
110     return m_description.c_str();
111 }
112 
113 } // namespace tcu
114