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 | |