Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of boost. Click here for the latest Boost documentation.
PrevUpHomeNext

Class template special_values_parser

boost::date_time::special_values_parser — Class for special_value parsing.

Synopsis

// In header: <boost/date_time/special_values_parser.hpp>

template<typename date_type, typename charT> 
class special_values_parser {
public:
  // types
  typedef std::basic_string< charT >                string_type;      
  typedef std::basic_stringstream< charT >          stringstream_type;
  typedef std::istreambuf_iterator< charT >         stream_itr_type;  
  typedef date_type::duration_type                  duration_type;    
  typedef string_parse_tree< charT >                parse_tree_type;  
  typedef parse_tree_type::parse_match_result_type  match_results;    
  typedef std::vector< std::basic_string< charT > > collection_type;  
  typedef charT                                     char_type;        

  // construct/copy/destruct
  special_values_parser();
  special_values_parser(const string_type &, const string_type &, 
                        const string_type &, const string_type &, 
                        const string_type &);
  special_values_parser(typename collection_type::iterator, 
                        typename collection_type::iterator);

  // public member functions
  void sv_strings(const string_type &, const string_type &, 
                  const string_type &, const string_type &, 
                  const string_type &);
  bool match(stream_itr_type &, stream_itr_type &, match_results &) const;

  // public static functions
  static bool should_call_match(const string_type &);

  // public data members
  static const char_type nadt_string;
  static const char_type neg_inf_string;
  static const char_type pos_inf_string;
  static const char_type min_date_time_string;
  static const char_type max_date_time_string;
};

Description

TODO: add doc-comments for which elements can be changed Parses input stream for strings representing special_values. Special values parsed are:

  • not_a_date_time

  • neg_infin

  • pod_infin

  • min_date_time

  • max_date_time

special_values_parser public construct/copy/destruct

  1. special_values_parser();
    Creates a special_values_parser with the default set of "sv_strings".
  2. special_values_parser(const string_type & nadt_str, 
                          const string_type & neg_inf_str, 
                          const string_type & pos_inf_str, 
                          const string_type & min_dt_str, 
                          const string_type & max_dt_str);
    Creates a special_values_parser using a user defined set of element strings.
  3. special_values_parser(typename collection_type::iterator beg, 
                          typename collection_type::iterator end);

special_values_parser public member functions

  1. void sv_strings(const string_type & nadt_str, const string_type & neg_inf_str, 
                    const string_type & pos_inf_str, 
                    const string_type & min_dt_str, 
                    const string_type & max_dt_str);
    Replace special value strings.
  2. bool match(stream_itr_type & sitr, stream_itr_type & str_end, 
               match_results & mr) const;

    Given an input iterator, attempt to match it to a known special value

    Parameters:

    mr

    the match result: mr.current_match is set to the corresponding special_value or -1

    sitr

    the start iterator

    str_end

    the end iterator

    Returns:

    whether something matched

special_values_parser public static functions

  1. static bool should_call_match(const string_type & str);

    The parser is expensive to create, and not thread-safe so it cannot be static therefore given a string, determine if it is likely to be a special value. A negative response is a definite no, whereas a positive is only likely and match() should be called and return value checked.

    Parameters:

    str

    the string to check

    Returns:

    false if it is definitely not a special value


PrevUpHomeNext