Use auto type for iterators

This commit is contained in:
Stephan van Veen 2019-05-09 17:54:52 +02:00
parent 328f1048da
commit 89e4bb11ac

View File

@ -52,9 +52,7 @@ struct is_specialization<Ref<Args...>, Ref> : std::true_type {};
// Upsert into std::map // Upsert into std::map
template <class KeyType, class ElementType> template <class KeyType, class ElementType>
bool upsert(std::map<KeyType, ElementType>& aMap, KeyType const& aKey, ElementType const& aNewValue) { bool upsert(std::map<KeyType, ElementType>& aMap, KeyType const& aKey, ElementType const& aNewValue) {
typedef typename std::map<KeyType, ElementType>::iterator Iterator; auto tResult = aMap.insert(typename std::map<KeyType, ElementType>::value_type(aKey, aNewValue));
typedef typename std::pair<Iterator, bool> Result;
Result tResult = aMap.insert(typename std::map<KeyType, ElementType>::value_type(aKey, aNewValue));
if (!tResult.second) { if (!tResult.second) {
if (!(tResult.first->second == aNewValue)) { if (!(tResult.first->second == aNewValue)) {
tResult.first->second = aNewValue; tResult.first->second = aNewValue;
@ -360,7 +358,7 @@ class ArgumentParser {
typename std::enable_if<is_specialization<T, std::vector>::value == false && typename std::enable_if<is_specialization<T, std::vector>::value == false &&
is_specialization<T, std::list>::value == false, T>::type is_specialization<T, std::list>::value == false, T>::type
get(const char * aArgumentName) { get(const char * aArgumentName) {
std::map<std::string, std::shared_ptr<Argument>>::iterator tIterator = mArgumentMap.find(aArgumentName); auto tIterator = mArgumentMap.find(aArgumentName);
if (tIterator != mArgumentMap.end()) { if (tIterator != mArgumentMap.end()) {
return tIterator->second->get<T>(); return tIterator->second->get<T>();
} }
@ -371,7 +369,7 @@ class ArgumentParser {
template <typename T> template <typename T>
typename std::enable_if<is_specialization<T, std::vector>::value, T>::type typename std::enable_if<is_specialization<T, std::vector>::value, T>::type
get(const char * aArgumentName) { get(const char * aArgumentName) {
std::map<std::string, std::shared_ptr<Argument>>::iterator tIterator = mArgumentMap.find(aArgumentName); auto tIterator = mArgumentMap.find(aArgumentName);
if (tIterator != mArgumentMap.end()) { if (tIterator != mArgumentMap.end()) {
return tIterator->second->get_vector<T>(); return tIterator->second->get_vector<T>();
} }
@ -382,7 +380,7 @@ class ArgumentParser {
template <typename T> template <typename T>
typename std::enable_if<is_specialization<T, std::list>::value, T>::type typename std::enable_if<is_specialization<T, std::list>::value, T>::type
get(const char * aArgumentName) { get(const char * aArgumentName) {
std::map<std::string, std::shared_ptr<Argument>>::iterator tIterator = mArgumentMap.find(aArgumentName); auto tIterator = mArgumentMap.find(aArgumentName);
if (tIterator != mArgumentMap.end()) { if (tIterator != mArgumentMap.end()) {
return tIterator->second->get_list<T>(); return tIterator->second->get_list<T>();
} }
@ -392,7 +390,7 @@ class ArgumentParser {
// Indexing operator. Return a reference to an Argument object // Indexing operator. Return a reference to an Argument object
// Used in conjuction with Argument.operator== e.g., parser["foo"] == true // Used in conjuction with Argument.operator== e.g., parser["foo"] == true
Argument& operator[](const std::string& aArgumentName) { Argument& operator[](const std::string& aArgumentName) {
std::map<std::string, std::shared_ptr<Argument>>::iterator tIterator = mArgumentMap.find(aArgumentName); auto tIterator = mArgumentMap.find(aArgumentName);
if (tIterator != mArgumentMap.end()) { if (tIterator != mArgumentMap.end()) {
return *(tIterator->second); return *(tIterator->second);
} }
@ -474,7 +472,7 @@ class ArgumentParser {
private: private:
// If the argument was defined by the user and can be found in mArgumentMap, then it's valid // If the argument was defined by the user and can be found in mArgumentMap, then it's valid
bool is_valid_argument(const std::string& aName) { bool is_valid_argument(const std::string& aName) {
std::map<std::string, std::shared_ptr<Argument>>::iterator tIterator = mArgumentMap.find(aName); auto tIterator = mArgumentMap.find(aName);
return (tIterator != mArgumentMap.end()); return (tIterator != mArgumentMap.end());
} }
@ -495,8 +493,7 @@ class ArgumentParser {
print_help(); print_help();
exit(0); exit(0);
} }
std::map<std::string, std::shared_ptr<Argument>>::iterator tIterator = auto tIterator = mArgumentMap.find(argv[i]);
mArgumentMap.find(argv[i]);
if (tIterator != mArgumentMap.end()) { if (tIterator != mArgumentMap.end()) {
// Start parsing optional argument // Start parsing optional argument
auto tArgument = tIterator->second; auto tArgument = tIterator->second;