Google OR-Tools
v9.11
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
protoutil.h
Go to the documentation of this file.
1
// Copyright 2010-2024 Google LLC
2
// Licensed under the Apache License, Version 2.0 (the "License");
3
// you may not use this file except in compliance with the License.
4
// You may obtain a copy of the License at
5
//
6
// http://www.apache.org/licenses/LICENSE-2.0
7
//
8
// Unless required by applicable law or agreed to in writing, software
9
// distributed under the License is distributed on an "AS IS" BASIS,
10
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
// See the License for the specific language governing permissions and
12
// limitations under the License.
13
14
#ifndef OR_TOOLS_BASE_PROTOUTIL_H_
15
#define OR_TOOLS_BASE_PROTOUTIL_H_
16
17
#include <cstdint>
18
19
#include "absl/status/status.h"
20
#include "absl/status/statusor.h"
21
#include "absl/time/clock.h"
22
#include "absl/time/time.h"
23
#include "google/protobuf/duration.pb.h"
24
25
namespace
util_time
{
26
27
inline ::absl::StatusOr<google::protobuf::Duration>
EncodeGoogleApiProto
(
28
absl::Duration d) {
29
google::protobuf::Duration
proto
;
30
const
int64_t d_in_nano = ToInt64Nanoseconds(d);
31
proto
.set_seconds(
static_cast<
int64_t
>
(d_in_nano / 1000000000));
32
proto
.set_nanos(
static_cast<
int
>
(d_in_nano % 1000000000));
33
return
proto
;
34
}
35
36
inline ::absl::Status
EncodeGoogleApiProto
(absl::Duration d,
37
google::protobuf::Duration*
proto
) {
38
*
proto
=
EncodeGoogleApiProto
(d).value();
39
return
absl::OkStatus();
40
}
41
42
inline ::absl::StatusOr<absl::Duration>
DecodeGoogleApiProto
(
43
const
google::protobuf::Duration&
proto
) {
44
return
absl::Seconds(
proto
.seconds() + 1e-9 *
proto
.nanos());
45
}
46
47
}
// namespace util_time
48
49
#endif
// OR_TOOLS_BASE_PROTOUTIL_H_
proto
CpModelProto proto
The output proto.
Definition
cp_model_fz_solver.cc:128
util_time
Definition
protoutil.h:25
util_time::DecodeGoogleApiProto
inline ::absl::StatusOr< absl::Duration > DecodeGoogleApiProto(const google::protobuf::Duration &proto)
Definition
protoutil.h:42
util_time::EncodeGoogleApiProto
inline ::absl::StatusOr< google::protobuf::Duration > EncodeGoogleApiProto(absl::Duration d)
Definition
protoutil.h:27
ortools
base
protoutil.h
Generated by
1.12.0