1e5c31af7Sopenharmony_ci/*-------------------------------------------------------------------------
2e5c31af7Sopenharmony_ci * drawElements Quality Program Tester Core
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 Generic interface for library containing functions.
22e5c31af7Sopenharmony_ci *//*--------------------------------------------------------------------*/
23e5c31af7Sopenharmony_ci
24e5c31af7Sopenharmony_ci#include "tcuFunctionLibrary.hpp"
25e5c31af7Sopenharmony_ci
26e5c31af7Sopenharmony_cinamespace tcu
27e5c31af7Sopenharmony_ci{
28e5c31af7Sopenharmony_ci
29e5c31af7Sopenharmony_ci// FunctionLibrary
30e5c31af7Sopenharmony_ci
31e5c31af7Sopenharmony_ciFunctionLibrary::FunctionLibrary (void)
32e5c31af7Sopenharmony_ci{
33e5c31af7Sopenharmony_ci}
34e5c31af7Sopenharmony_ci
35e5c31af7Sopenharmony_ciFunctionLibrary::~FunctionLibrary (void)
36e5c31af7Sopenharmony_ci{
37e5c31af7Sopenharmony_ci}
38e5c31af7Sopenharmony_ci
39e5c31af7Sopenharmony_ci// StaticFunctionLibrary
40e5c31af7Sopenharmony_ci
41e5c31af7Sopenharmony_ciStaticFunctionLibrary::StaticFunctionLibrary (const Entry* entries, int numEntries)
42e5c31af7Sopenharmony_ci{
43e5c31af7Sopenharmony_ci	for (int entryNdx = 0; entryNdx < numEntries; entryNdx++)
44e5c31af7Sopenharmony_ci		m_functions.insert(std::make_pair(std::string(entries[entryNdx].name), entries[entryNdx].ptr));
45e5c31af7Sopenharmony_ci}
46e5c31af7Sopenharmony_ci
47e5c31af7Sopenharmony_ciStaticFunctionLibrary::~StaticFunctionLibrary (void)
48e5c31af7Sopenharmony_ci{
49e5c31af7Sopenharmony_ci}
50e5c31af7Sopenharmony_ci
51e5c31af7Sopenharmony_cideFunctionPtr StaticFunctionLibrary::getFunction (const char* funcName) const
52e5c31af7Sopenharmony_ci{
53e5c31af7Sopenharmony_ci	std::map<std::string, deFunctionPtr>::const_iterator iter = m_functions.find(funcName);
54e5c31af7Sopenharmony_ci
55e5c31af7Sopenharmony_ci	if (iter == m_functions.end())
56e5c31af7Sopenharmony_ci		return DE_NULL;
57e5c31af7Sopenharmony_ci	else
58e5c31af7Sopenharmony_ci		return iter->second;
59e5c31af7Sopenharmony_ci}
60e5c31af7Sopenharmony_ci
61e5c31af7Sopenharmony_ci// DynamicFunctionLibrary
62e5c31af7Sopenharmony_ci
63e5c31af7Sopenharmony_ciDynamicFunctionLibrary::DynamicFunctionLibrary (const char* fileName)
64e5c31af7Sopenharmony_ci	: m_dynamicLibrary(fileName)
65e5c31af7Sopenharmony_ci{
66e5c31af7Sopenharmony_ci}
67e5c31af7Sopenharmony_ci
68e5c31af7Sopenharmony_ciDynamicFunctionLibrary::~DynamicFunctionLibrary (void)
69e5c31af7Sopenharmony_ci{
70e5c31af7Sopenharmony_ci}
71e5c31af7Sopenharmony_ci
72e5c31af7Sopenharmony_cideFunctionPtr DynamicFunctionLibrary::getFunction (const char* funcName) const
73e5c31af7Sopenharmony_ci{
74e5c31af7Sopenharmony_ci	return m_dynamicLibrary.getFunction(funcName);
75e5c31af7Sopenharmony_ci}
76e5c31af7Sopenharmony_ci
77e5c31af7Sopenharmony_ci// CompositeFunctionLibrary
78e5c31af7Sopenharmony_ci
79e5c31af7Sopenharmony_ciCompositeFunctionLibrary::CompositeFunctionLibrary (const FunctionLibrary* libraries, int numLibraries)
80e5c31af7Sopenharmony_ci	: m_libraries		(libraries)
81e5c31af7Sopenharmony_ci	, m_numLibraries	(numLibraries)
82e5c31af7Sopenharmony_ci{
83e5c31af7Sopenharmony_ci}
84e5c31af7Sopenharmony_ci
85e5c31af7Sopenharmony_ciCompositeFunctionLibrary::~CompositeFunctionLibrary (void)
86e5c31af7Sopenharmony_ci{
87e5c31af7Sopenharmony_ci}
88e5c31af7Sopenharmony_ci
89e5c31af7Sopenharmony_cideFunctionPtr CompositeFunctionLibrary::getFunction (const char* name) const
90e5c31af7Sopenharmony_ci{
91e5c31af7Sopenharmony_ci	for (int ndx = 0; ndx < m_numLibraries; ndx++)
92e5c31af7Sopenharmony_ci	{
93e5c31af7Sopenharmony_ci		const deFunctionPtr ptr = m_libraries[ndx].getFunction(name);
94e5c31af7Sopenharmony_ci		if (ptr)
95e5c31af7Sopenharmony_ci			return ptr;
96e5c31af7Sopenharmony_ci	}
97e5c31af7Sopenharmony_ci	return DE_NULL;
98e5c31af7Sopenharmony_ci}
99e5c31af7Sopenharmony_ci
100e5c31af7Sopenharmony_ci} // tcu
101