#ifndef DATE_TIME_SIMPLE_FORMAT_HPP___

#define DATE_TIME_SIMPLE_FORMAT_HPP___



/* Copyright (c) 2002,2003 CrystalClear Software, Inc.

 * Use, modification and distribution is subject to the 

 * Boost Software License, Version 1.0. (See accompanying

 * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)

 * Author: Jeff Garland, Bart Garst

 * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $

 */



#include "boost/date_time/parse_format_base.hpp"



namespace boost {

namespace date_time {



//! Class to provide simple basic formatting rules

template<class charT>

class simple_format {

public:



  //! String used printed is date is invalid

  static const charT* not_a_date()

  {

    return "not-a-date-time";

  }

  //! String used to for positive infinity value

  static const charT* pos_infinity()

  {  

    return "+infinity";

  }

  //! String used to for positive infinity value

  static const charT* neg_infinity()

  {

    return "-infinity";

  }

  //! Describe month format

  static month_format_spec month_format()

  {

    return month_as_short_string;

  }

  static ymd_order_spec date_order()

  {

    return ymd_order_iso; //YYYY-MM-DD

  }

  //! This format uses '-' to separate date elements

  static bool has_date_sep_chars()

  {

    return true;

  }

  //! Char to sep?

  static charT year_sep_char()

  {

    return '-';

  }

  //! char between year-month

  static charT month_sep_char()

  {

    return '-';

  }

  //! Char to separate month-day

  static charT day_sep_char()

  {

    return '-';

  }

  //! char between date-hours

  static charT hour_sep_char()

  {

    return ' ';

  }

  //! char between hour and minute

  static charT minute_sep_char()

  {

    return ':';

  }

  //! char for second

  static charT second_sep_char()

  {

    return ':';

  }



};



#ifndef BOOST_NO_STD_WSTRING



//! Specialization of formmating rules for wchar_t

template<>

class simple_format<wchar_t> {

public:



  //! String used printed is date is invalid

  static const wchar_t* not_a_date()

  {

    return L"not-a-date-time";

  }

  //! String used to for positive infinity value

  static const wchar_t* pos_infinity()

  {   

    return L"+infinity";

  }

  //! String used to for positive infinity value

  static const wchar_t* neg_infinity()

  {

    return L"-infinity";

  }

  //! Describe month format

  static month_format_spec month_format()

  {

    return month_as_short_string;

  }

  static ymd_order_spec date_order()

  {

    return ymd_order_iso; //YYYY-MM-DD

  }

  //! This format uses '-' to separate date elements

  static bool has_date_sep_chars()

  {

    return true;

  }

  //! Char to sep?

  static wchar_t year_sep_char()

  {

    return '-';

  }

  //! char between year-month

  static wchar_t month_sep_char()

  {

    return '-';

  }

  //! Char to separate month-day

  static wchar_t day_sep_char()

  {

    return '-';

  }

  //! char between date-hours

  static wchar_t hour_sep_char()

  {

    return ' ';

  }

  //! char between hour and minute

  static wchar_t minute_sep_char()

  {

    return ':';

  }

  //! char for second

  static wchar_t second_sep_char()

  {

    return ':';

  }



};



#endif // BOOST_NO_STD_WSTRING

} } //namespace date_time









#endif

