CLASS TEM(3)

NAME
boost::date_time::date_generator_formatter - Formats date_generators for output.

SYNOPSIS

// In header: <boost/date_time/date_generator_formatter.hpp>
template<typename date_type, typename CharT,
         typename OutItrT = std::ostreambuf_iterator<CharT, std::char_traits<CharT> > >
class date_generator_formatter {
public:
  // types
  typedef partial_date< date_type >        partial_date_type;
  typedef nth_kday_of_month< date_type >   nth_kday_type;
  typedef first_kday_of_month< date_type > first_kday_type;
  typedef last_kday_of_month< date_type >  last_kday_type;
  typedef first_kday_after< date_type >    kday_after_type;
  typedef first_kday_before< date_type >   kday_before_type;
  typedef CharT                            char_type;
  typedef std::basic_string< char_type >   string_type;
  typedef std::vector< string_type >       collection_type;
  enum phrase_elements { first = 0, second, third, fourth, fifth, last,
                         before, after, of, number_of_phrase_elements };
  // construct/copy/destruct
  date_generator_formatter();
  date_generator_formatter(const string_type &, const string_type &,
                           const string_type &, const string_type &,
                           const string_type &, const string_type &,
                           const string_type &, const string_type &,
                           const string_type &);
  // public member functions
  void elements(const collection_type &, phrase_elements = first);
  template<typename facet_type>
    OutItrT put_partial_date(OutItrT, std::ios_base &, CharT,
                             const partial_date_type &, const facet_type &) const;
  template<typename facet_type>
    OutItrT put_nth_kday(OutItrT, std::ios_base &, CharT,
                         const nth_kday_type &, const facet_type &) const;
  template<typename facet_type>
    OutItrT put_first_kday(OutItrT, std::ios_base &, CharT,
                           const first_kday_type &, const facet_type &) const;
  template<typename facet_type>
    OutItrT put_last_kday(OutItrT, std::ios_base &, CharT,
                          const last_kday_type &, const facet_type &) const;
  template<typename facet_type>
    OutItrT put_kday_before(OutItrT, std::ios_base &, CharT,
                            const kday_before_type &, const facet_type &) const;
  template<typename facet_type>
    OutItrT put_kday_after(OutItrT, std::ios_base &, CharT,
                           const kday_after_type &, const facet_type &) const;
  // private member functions
  OutItrT put_string(OutItrT, const string_type &) const;
  static const char_type first_string;
  static const char_type second_string;
  static const char_type third_string;
  static const char_type fourth_string;
  static const char_type fifth_string;
  static const char_type last_string;
  static const char_type before_string;
  static const char_type after_string;
  static const char_type of_string;
};

DESCRIPTION

Formatting of date_generators follows specific orders for the various types of date_generators.

    &#8226; partial_date => "dd Month"

    &#8226; nth_day_of_the_week_in_month => "nth weekday of month"

    &#8226; first_day_of_the_week_in_month => "first weekday of month"

    &#8226; last_day_of_the_week_in_month => "last weekday of month"

    &#8226; first_day_of_the_week_after => "weekday after"

    &#8226; first_day_of_the_week_before => "weekday before" While the order of the elements in these phrases cannot be changed, the elements themselves can be. Weekday and Month get their formats and names from the date_facet. The remaining elements are stored in the date_generator_formatter and can be customized upon construction or via a member function. The default elements are those shown in the examples above.

  date_generator_formatter public construct/copy/destruct

    1.

    date_generator_formatter();
    Default format elements used. .RE

        2.

        date_generator_formatter(const string_type & first_str,
                                 const string_type & second_str,
                                 const string_type & third_str,
                                 const string_type & fourth_str,
                                 const string_type & fifth_str,
                                 const string_type & last_str,
                                 const string_type & before_str,
                                 const string_type & after_str,
                                 const string_type & of_str);
        Constructor that allows for a custom set of phrase elements. .RE

  date_generator_formatter public member functions

    1.

    void elements(const collection_type & new_strings,
                  phrase_elements beg_pos = first);

    Replace the set of phrase elements with those contained in new_strings. The order of the strings in the given collection is important. They must follow:

        &#8226; first, second, third, fourth, fifth, last, before, after, of.

        It is not necessary to send in a complete set if only a few elements are to be replaced as long as the correct beg_pos is used.

        Ex: To keep the default first through fifth elements, but replace the rest with a collection of:

            &#8226; "final", "prior", "following", "in". The beg_pos of date_generator_formatter::last would be used.

            2.

            template<typename facet_type>
              OutItrT put_partial_date(OutItrT next, std::ios_base & a_ios, CharT a_fill,
                                       const partial_date_type & pd,
                                       const facet_type & facet) const;
            Put a partial_date => "dd Month". .RE

                3.

                template<typename facet_type>
                  OutItrT put_nth_kday(OutItrT next, std::ios_base & a_ios, CharT a_fill,
                                       const nth_kday_type & nkd, const facet_type & facet) const;
                Put an nth_day_of_the_week_in_month => "nth weekday of month". .RE

                    4.

                    template<typename facet_type>
                      OutItrT put_first_kday(OutItrT next, std::ios_base & a_ios, CharT a_fill,
                                             const first_kday_type & fkd,
                                             const facet_type & facet) const;
                    Put a first_day_of_the_week_in_month => "first weekday of month". .RE

                        5.

                        template<typename facet_type>
                          OutItrT put_last_kday(OutItrT next, std::ios_base & a_ios, CharT a_fill,
                                                const last_kday_type & lkd, const facet_type & facet) const;
                        Put a last_day_of_the_week_in_month => "last weekday of month". .RE

                            6.

                            template<typename facet_type>
                              OutItrT put_kday_before(OutItrT next, std::ios_base & a_ios, CharT a_fill,
                                                      const kday_before_type & fkb,
                                                      const facet_type & facet) const;
                            Put a first_day_of_the_week_before => "weekday before". .RE

                                7.

                                template<typename facet_type>
                                  OutItrT put_kday_after(OutItrT next, std::ios_base & a_ios, CharT a_fill,
                                                         const kday_after_type & fka,
                                                         const facet_type & facet) const;
                                Put a first_day_of_the_week_after => "weekday after". .RE

  date_generator_formatter private member functions

    1.

    OutItrT put_string(OutItrT next, const string_type & str) const;
    helper function to put the various member string into stream .RE