From 73a607ec8a1cf88d4892bca8dbe3334cbe35e796 Mon Sep 17 00:00:00 2001 From: Chris Frey Date: Thu, 15 Mar 2012 11:47:06 -0400 Subject: [PATCH] lib: added Find api to TimeZones --- src/r_timezone.cc | 26 ++++++++++++++++++++++++++ src/r_timezone.h | 7 +++++++ 2 files changed, 33 insertions(+) diff --git a/src/r_timezone.cc b/src/r_timezone.cc index 48568f5b..543956c3 100644 --- a/src/r_timezone.cc +++ b/src/r_timezone.cc @@ -411,6 +411,32 @@ TimeZones::TimeZones(Barry::Mode::Desktop &desktop) sort(begin(), end(), &TimeZone::SortByZone); } +TimeZones::iterator TimeZones::Find(int index) +{ + for( iterator i = begin(), e = end(); i != e; ++i ) + if( i->Index == index ) + return i; + return end(); +} + +TimeZones::const_iterator TimeZones::Find(int index) const +{ + return const_cast(this)->Find(index); +} + +TimeZones::iterator TimeZones::FindByOffset(int utc_offset) +{ + for( iterator i = begin(), e = end(); i != e; ++i ) + if( i->UTCOffset == utc_offset ) + return i; + return end(); +} + +TimeZones::const_iterator TimeZones::FindByOffset(int utc_offset) const +{ + return const_cast(this)->FindByOffset(utc_offset); +} + void TimeZones::Dump(std::ostream &os) const { const_iterator b = begin(), e = end(); diff --git a/src/r_timezone.h b/src/r_timezone.h index 5d2cc155..782fa956 100644 --- a/src/r_timezone.h +++ b/src/r_timezone.h @@ -198,6 +198,13 @@ public: iterator end() { return m_list.end(); } const_iterator end() const { return m_list.end(); } + // utility functions - return end() if not found + iterator Find(int index); + const_iterator Find(int index) const; + + iterator FindByOffset(int utc_offset); + const_iterator FindByOffset(int utc_offset) const; + void Dump(std::ostream &os) const; }; -- 2.11.4.GIT