15 #ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_IAM_POLICY_H
16 #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_IAM_POLICY_H
18 #include "google/cloud/bigtable/iam_binding.h"
19 #include "google/cloud/bigtable/version.h"
28 template <
class InputIt>
50 std::string etag =
"",
51 std::int32_t version = 0) {
52 google::iam::v1::Policy res;
53 for (
auto binding = first_binding; binding != last_binding; ++binding) {
54 *res.add_bindings() = *binding;
56 res.set_version(version);
57 res.set_etag(std::move(etag));
80 std::initializer_list<
google::iam::v1::Binding> bindings,
81 std::string etag =
"", std::int32_t version = 0);
102 std::vector<
google::iam::v1::Binding> bindings, std::string etag =
"",
103 std::int32_t version = 0);
105 std::ostream& operator<<(std::ostream& os,
google::iam::v1::Policy
const& rhs);
118 template <
typename Functor>
121 auto& bindings = *policy.mutable_bindings();
123 std::remove_if(bindings.begin(), bindings.end(), std::move(pred));
124 size_t res = std::distance(new_end, bindings.end());
125 for (size_t i = 0; i < res; ++i) {
126 bindings.RemoveLast();
139 google::iam::v1::Policy& policy,
140 google::protobuf::RepeatedPtrField<
google::iam::v1::Binding>::iterator