design_goals.xml 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
  3. "../../../tools/boostbook/dtd/boostbook.dtd">
  4. <!-- Copyright (c) 2001-2005 CrystalClear Software, Inc.
  5. Subject to the Boost Software License, Version 1.0.
  6. (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
  7. -->
  8. <section id="date_time.design_goals">
  9. <title>Design Goals</title>
  10. <informaltable frame="all">
  11. <tgroup cols="2">
  12. <thead>
  13. <row>
  14. <entry valign="top" morerows="1">Category</entry>
  15. <entry>Description</entry>
  16. </row>
  17. <row>
  18. <entry>Functions</entry>
  19. </row>
  20. </thead>
  21. <tbody>
  22. <row>
  23. <entry valign="top" morerows="1">Interfaces</entry>
  24. <entry>Provide concrete classes for manipulation of dates and times</entry>
  25. </row>
  26. <row>
  27. <entry>
  28. <itemizedlist mark="bullet">
  29. <listitem>date, time, date_duration, time_duration, date_period, time_period, etc</listitem>
  30. <listitem>support for infinity - positive infinity, negative infinity</listitem>
  31. <listitem>iterators over time and date ranges</listitem>
  32. <listitem>allow date and time implementations to be separate as much as possible</listitem>
  33. </itemizedlist>
  34. </entry>
  35. </row>
  36. <row>
  37. <entry valign="top" morerows="1">Calculation</entry>
  38. <entry>Provide a basis for performing efficient time calculations </entry>
  39. </row>
  40. <row>
  41. <entry>
  42. <itemizedlist mark="bullet">
  43. <listitem>days between dates </listitem>
  44. <listitem>durations of times </listitem>
  45. <listitem>durations of dates and times together </listitem>
  46. </itemizedlist>
  47. </entry>
  48. </row>
  49. <row>
  50. <entry valign="top" morerows="1">Representation Flexibility</entry>
  51. <entry>Provide the maximum possible reusability and flexibility</entry>
  52. </row>
  53. <row>
  54. <entry>
  55. <itemizedlist mark="bullet">
  56. <listitem>traits based customization of internal representations for size versus resolution control</listitem>
  57. <listitem>Allowing the use of different epochs and resolution (eg: seconds versus microseconds, dates starting at the year 2000 versus dates starting in 1700)</listitem>
  58. <listitem>Options for configuring unique calendar representations (Gregorian + others)</listitem>
  59. <listitem>the use of Julian Day number and the conversion between this and the Gregorian/Julian calendar date</listitem>
  60. <listitem>Allow for flexible adjustments including leap seconds</listitem>
  61. </itemizedlist>
  62. </entry>
  63. </row>
  64. <row>
  65. <entry valign="top" morerows="1">Date Calculations</entry>
  66. <entry>Provide tools for date calculations</entry>
  67. </row>
  68. <row>
  69. <entry>
  70. <itemizedlist mark="bullet">
  71. <listitem>provide basis for calculation of complex event specs like holidays</listitem>
  72. <listitem>calendar to calendar conversions</listitem>
  73. <listitem>provide for ability to extend to new calendar systems</listitem>
  74. </itemizedlist>
  75. </entry>
  76. </row>
  77. <row>
  78. <entry valign="top" morerows="1">Time Calculations</entry>
  79. <entry>Provide concrete classes for manipulation of time</entry>
  80. </row>
  81. <row>
  82. <entry>
  83. <itemizedlist mark="bullet">
  84. <listitem>provide the ability to handle cross time-zone issues</listitem>
  85. <listitem>provide adjustments for daylight savings time (summer time)</listitem>
  86. </itemizedlist>
  87. </entry>
  88. </row>
  89. <row>
  90. <entry valign="top" morerows="1">Clock Interfaces</entry>
  91. <entry>Provide classes for retrieving time current time</entry>
  92. </row>
  93. <row>
  94. <entry>
  95. <itemizedlist mark="bullet">
  96. <listitem>access to a network / high resolution time sources </listitem>
  97. <listitem>retrieving the current date time information to populate classes </listitem>
  98. </itemizedlist>
  99. </entry>
  100. </row>
  101. <row>
  102. <entry valign="top" morerows="1">I/O Interfaces</entry>
  103. <entry>Provide input and output for time including</entry>
  104. </row>
  105. <row>
  106. <entry>
  107. <itemizedlist mark="bullet">
  108. <listitem>multi-lingual support </listitem>
  109. <listitem>provide ISO8601 compliant time facet </listitem>
  110. <listitem>use I/O facets for different local behavior </listitem>
  111. </itemizedlist>
  112. </entry>
  113. </row>
  114. </tbody>
  115. </tgroup>
  116. </informaltable>
  117. </section>