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 <stdint.h>
19
20#include <optional>
21#include <string>
22#include <vector>
23
25
26namespace cuttlefish {
27
29 public:
30 InstanceNumsCalculator& FromFlags(const std::vector<std::string>&) &;
31 InstanceNumsCalculator FromFlags(const std::vector<std::string>&) &&;
32
35
38
41
42 InstanceNumsCalculator& InstanceNums(const std::string&) &;
43 InstanceNumsCalculator InstanceNums(const std::string&) &&;
44
45 // if any element is duplicated, only the first one of them is taken.
46 // E.g. InstanceNums({1, 2, 3, 2}) == InstanceNums({1, 2, 3})
47 // That is how the code was implemented in Android 14
48 InstanceNumsCalculator& InstanceNums(std::vector<int32_t>) &;
49 InstanceNumsCalculator InstanceNums(std::vector<int32_t>) &&;
50
62
63 // Calculates the base from the --instance_nums, --base_instance_num,
64 // CUTTLEFISH_INSTANCE, suffix of the user account, and the default value.
65 // Then, figures out the set if ids.
67
68 private:
69 template <typename T>
70 void TrySet(T& field, Result<T> result);
71
73 std::optional<int32_t> base_instance_num_;
74 std::optional<int32_t> num_instances_;
75 std::vector<int32_t> instance_nums_;
76};
77
78} // namespace cuttlefish
Definition: instance_nums.h:28
Result< std::vector< int32_t > > CalculateFromFlags()
Definition: instance_nums.cpp:219
std::optional< int32_t > base_instance_num_
Definition: instance_nums.h:73
Result< std::vector< int32_t > > Calculate()
Definition: instance_nums.cpp:247
InstanceNumsCalculator & BaseInstanceNum(int32_t) &
Definition: instance_nums.cpp:173
std::vector< int32_t > instance_nums_
Definition: instance_nums.h:75
std::optional< int32_t > num_instances_
Definition: instance_nums.h:74
InstanceNumsCalculator & NumInstances(int32_t) &
Definition: instance_nums.cpp:181
void TrySet(T &field, Result< T > result)
Definition: instance_nums.cpp:210
InstanceNumsCalculator & FromFlags(const std::vector< std::string > &) &
Definition: instance_nums.cpp:102
Result< void > setter_result_
Definition: instance_nums.h:72
InstanceNumsCalculator & InstanceNums(const std::string &) &
Definition: instance_nums.cpp:189
InstanceNumsCalculator & FromGlobalGflags() &
Definition: instance_nums.cpp:162
Definition: alloc_driver.h:20
tl::expected< T, StackTraceError > Result
Definition: result_type.h:30