| 1 | #ifndef _BOOST_DATE_TIME_FIND_MATCH_HPP___ |
| 2 | #define _BOOST_DATE_TIME_FIND_MATCH_HPP___ |
| 3 | |
| 4 | /* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc. |
| 5 | * Use, modification and distribution is subject to the |
| 6 | * Boost Software License, Version 1.0. (See accompanying |
| 7 | * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) |
| 8 | * Author: Jeff Garland, Bart Garst |
| 9 | * $Date$ |
| 10 | */ |
| 11 | |
| 12 | #include <string> |
| 13 | |
| 14 | namespace boost { |
| 15 | namespace date_time { |
| 16 | |
| 17 | |
| 18 | //! Find index of a string in either of 2 arrays |
| 19 | /*! find_match searches both arrays for a match to 's'. Both arrays |
| 20 | * must contain 'size' elements. The index of the match is returned. |
| 21 | * If no match is found, 'size' is returned. |
| 22 | * Ex. "Jan" returns 0, "Dec" returns 11, "Tue" returns 2. |
| 23 | * 'size' can be sent in with: (greg_month::max)() (which 12), |
| 24 | * (greg_weekday::max)() + 1 (which is 7) or date_time::NumSpecialValues */ |
| 25 | template<class charT> |
| 26 | short find_match(const charT* const* short_names, |
| 27 | const charT* const* long_names, |
| 28 | short size, |
| 29 | const std::basic_string<charT>& s) { |
| 30 | for(short i = 0; i < size; ++i){ |
| 31 | if(short_names[i] == s || long_names[i] == s){ |
| 32 | return i; |
| 33 | } |
| 34 | } |
| 35 | return size; // not-found, return a value out of range |
| 36 | } |
| 37 | |
| 38 | |
| 39 | } } //namespace date_time |
| 40 | |
| 41 | |
| 42 | #endif |
| 43 | |