Android-cuttlefish cvd tool
instance_nums.h
Go to the documentation of this file.
1//
2// Copyright (C) 2022 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#pragma once
17
18#include <cstdint>
19#include <optional>
20#include <string>
21#include <vector>
22
24
25namespace cuttlefish {
26
28 public:
29 InstanceNumsCalculator& FromFlags(const std::vector<std::string>&) &;
30 InstanceNumsCalculator FromFlags(const std::vector<std::string>&) &&;
31
34
37
38 InstanceNumsCalculator& NumInstances(std::int32_t) &;
39 InstanceNumsCalculator NumInstances(std::int32_t) &&;
40
41 InstanceNumsCalculator& InstanceNums(const std::string&) &;
42 InstanceNumsCalculator InstanceNums(const std::string&) &&;
43
44 // if any element is duplicated, only the first one of them is taken.
45 // E.g. InstanceNums({1, 2, 3, 2}) == InstanceNums({1, 2, 3})
46 // That is how the code was implemented in Android 14
47 InstanceNumsCalculator& InstanceNums(std::vector<std::int32_t>) &;
48 InstanceNumsCalculator InstanceNums(std::vector<std::int32_t>) &&;
49
61
62 // Calculates the base from the --instance_nums, --base_instance_num,
63 // CUTTLEFISH_INSTANCE, suffix of the user account, and the default value.
64 // Then, figures out the set if ids.
66
67 private:
68 template <typename T>
69 void TrySet(T& field, Result<T> result);
70
72 std::optional<std::int32_t> base_instance_num_;
73 std::optional<std::int32_t> num_instances_;
74 std::vector<std::int32_t> instance_nums_;
75};
76
77} // namespace cuttlefish
Definition: expected.h:86
Definition: instance_nums.h:27
std::vector< std::int32_t > instance_nums_
Definition: instance_nums.h:74
InstanceNumsCalculator & NumInstances(std::int32_t) &
Definition: instance_nums.cpp:181
Result< std::vector< std::int32_t > > CalculateFromFlags()
Definition: instance_nums.cpp:221
std::optional< std::int32_t > base_instance_num_
Definition: instance_nums.h:72
InstanceNumsCalculator & BaseInstanceNum(std::int32_t) &
Definition: instance_nums.cpp:171
std::optional< std::int32_t > num_instances_
Definition: instance_nums.h:73
Result< std::vector< std::int32_t > > Calculate()
Definition: instance_nums.cpp:249
void TrySet(T &field, Result< T > result)
Definition: instance_nums.cpp:212
InstanceNumsCalculator & FromFlags(const std::vector< std::string > &) &
Definition: instance_nums.cpp:100
Result< void > setter_result_
Definition: instance_nums.h:71
InstanceNumsCalculator & InstanceNums(const std::string &) &
Definition: instance_nums.cpp:191
InstanceNumsCalculator & FromGlobalGflags() &
Definition: instance_nums.cpp:160
Definition: alloc_utils.cpp:23