aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/serializer/validating/time-zone.ixx
blob: 1c2d952d6f7d45c9f6ef805c2362289acd77f3f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// file      : xsde/cxx/serializer/validating/time-zone.ixx
// author    : Boris Kolpackov <boris@codesynthesis.com>
// copyright : Copyright (c) 2005-2011 Code Synthesis Tools CC
// license   : GNU GPL v2 + exceptions; see accompanying LICENSE file

namespace xsde
{
  namespace cxx
  {
    namespace serializer
    {
      namespace validating
      {
        namespace bits
        {
          inline bool
          valid_time_zone (const time_zone& z)
          {
            short h = z.zone_hours ();
            short m = z.zone_minutes ();

            unsigned short ah = h < 0 ? -h : h;
            unsigned short am = m < 0 ? -m : m;

            return ((h <= 0 && m <= 0) || (h >= 0 && m >= 0)) &&
              ((ah < 14 && am < 60) || (ah == 14 && am == 0));
          }
        }
      }
    }
  }
}