diff options
Diffstat (limited to 'services/audiopolicy/engineconfigurable/src/Collection.h')
-rwxr-xr-x | services/audiopolicy/engineconfigurable/src/Collection.h | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/services/audiopolicy/engineconfigurable/src/Collection.h b/services/audiopolicy/engineconfigurable/src/Collection.h deleted file mode 100755 index 8f17b15..0000000 --- a/services/audiopolicy/engineconfigurable/src/Collection.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Element.h" -#include "Stream.h" -#include "Strategy.h" -#include "Usage.h" -#include "InputSource.h" -#include <utils/Errors.h> -#include <system/audio.h> -#include <utils/Log.h> -#include <map> -#include <stdint.h> -#include <string> - -namespace android -{ -namespace audio_policy -{ - -/** - * Collection of policy element as a map indexed with a their UID type. - * - * @tparam Key type of the policy element indexing the collection. - * Policy Element supported are: - * - Strategy - * - Stream - * - InputSource - * - Usage. - */ -template <typename Key> -class Collection : public std::map<Key, Element<Key> *> -{ -private: - typedef Element<Key> T; - typedef typename std::map<Key, T *>::iterator CollectionIterator; - typedef typename std::map<Key, T *>::const_iterator CollectionConstIterator; - -public: - Collection() - { - collectionSupported(); - } - - /** - * Add a policy element to the collection. Policy elements are streams, strategies, input - * sources, ... Compile time error generated if called with not supported collection. - * It also set the key as the unique identifier of the policy element. - * - * @tparam Key indexing the collection of policy element. - * @param[in] name of the policy element to find. - * @param[in] key to be used to index this new policy element. - * - * @return NO_ERROR if the policy element has been successfully added to the collection. - */ - status_t add(const std::string &name, Key key) - { - if ((*this).find(key) != (*this).end()) { - ALOGW("%s: element %s already added", __FUNCTION__, name.c_str()); - return BAD_VALUE; - } - (*this)[key] = new T(name); - ALOGD("%s: adding element %s to collection", __FUNCTION__, name.c_str()); - return (*this)[key]->setIdentifier(key); - } - - /** - * Get a policy element from the collection by its key. Policy elements are streams, strategies, - * input sources, ... Compile time error generated if called with not supported collection. - * - * @tparam Key indexing the collection of policy element. - * @param[in] key of the policy element to find. - * - * @return valid pointer on policy element if found, NULL otherwise. - */ - T *get(Key key) const - { - CollectionConstIterator it = (*this).find(key); - return (it == (*this).end()) ? NULL : it->second; - } - - /** - * Find a policy element from the collection by its name. Policy elements are streams, - * strategies, input sources, ... - * Compile time error generated if called with not supported collection. - * - * @tparam Key indexing the collection of policy element. - * @param[in] name of the policy element to find. - * @param[in] elementsMap maps of policy elements to search into. - * - * @return valid pointer on element if found, NULL otherwise. - */ - T *findByName(const std::string &name) const - { - - CollectionConstIterator it; - for (it = (*this).begin(); it != (*this).end(); ++it) { - T *element = it->second; - if (element->getName() == name) { - return element; - } - } - return NULL; - } - - /** - * Removes all the elements from the list and destroy them. - */ - void clear() - { - CollectionIterator it; - for (it = (*this).begin(); it != (*this).end(); ++it) { - delete it->second; - } - (*this).clear(); - } - -private: - /** - * provide a compile time error if no specialization is provided for a given type. - * - * @tparam T: type of the policyElement. Policy Element supported are: - * - Strategy - * - Stream - * - InputSource - * - Usage. - */ - struct collectionSupported; -}; - -template <> -struct Collection<audio_stream_type_t>::collectionSupported {}; -template <> -struct Collection<std::string>::collectionSupported {}; -template <> -struct Collection<audio_usage_t>::collectionSupported {}; -template <> -struct Collection<audio_source_t>::collectionSupported {}; -template <> -struct Collection<routing_strategy>::collectionSupported {}; - -typedef Collection<routing_strategy> StrategyCollection; -typedef Collection<audio_stream_type_t> StreamCollection; -typedef Collection<audio_usage_t> UsageCollection; -typedef Collection<audio_source_t> InputSourceCollection; - -} // namespace audio_policy -} // namespace android |