time_zone_if.cc
Go to the documentation of this file.
1 // Copyright 2016 Google Inc. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // https://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include "time_zone_if.h"
16 #include "time_zone_info.h"
17 #include "time_zone_libc.h"
18 
19 namespace absl {
20 namespace time_internal {
21 namespace cctz {
22 
23 std::unique_ptr<TimeZoneIf> TimeZoneIf::Load(const std::string& name) {
24  // Support "libc:localtime" and "libc:*" to access the legacy
25  // localtime and UTC support respectively from the C library.
26  if (name.compare(0, 5, "libc:") == 0) {
27  return std::unique_ptr<TimeZoneIf>(new TimeZoneLibC(name.substr(5)));
28  }
29 
30  // Otherwise use the "zoneinfo" implementation by default.
31  std::unique_ptr<TimeZoneInfo> tz(new TimeZoneInfo);
32  if (!tz->Load(name)) tz.reset();
33  return std::unique_ptr<TimeZoneIf>(tz.release());
34 }
35 
36 // Defined out-of-line to avoid emitting a weak vtable in all TUs.
38 
39 } // namespace cctz
40 } // namespace time_internal
41 } // namespace absl
Definition: algorithm.h:29
char name[1]
Definition: mutex.cc:296
static std::unique_ptr< TimeZoneIf > Load(const std::string &name)
Definition: time_zone_if.cc:23


abseil_cpp
Author(s):
autogenerated on Wed Jun 19 2019 19:19:58