summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mårten Kongstad <amhk@google.com> 2023-12-14 13:53:23 +0100
committer Mårten Kongstad <amhk@google.com> 2023-12-14 13:53:52 +0100
commit49c49f365a340bdee6648a02f63d6526289b78d4 (patch)
tree45f92b2216a18c3918a8e58288a6656c9c0938cc
parentb7fc0d3e16ff850a20844cc6045b8ea00e3ca90e (diff)
aconfig: pass ownership of ProtoParsedFlag items to C++ codegen
Pass ownership of the ProtoParsedFlag iterator items to the C++ codegen: this removes the need for an explicit lifetime annotation. Bug: N/A Test: atest aconfig.test Change-Id: Ic6606a9ab01ddcb61aa668d7ac901469b1e25a1f
-rw-r--r--tools/aconfig/src/codegen/cpp.rs15
-rw-r--r--tools/aconfig/src/commands.rs3
2 files changed, 11 insertions, 7 deletions
diff --git a/tools/aconfig/src/codegen/cpp.rs b/tools/aconfig/src/codegen/cpp.rs
index 000581b18b..ada022ab55 100644
--- a/tools/aconfig/src/codegen/cpp.rs
+++ b/tools/aconfig/src/codegen/cpp.rs
@@ -23,17 +23,17 @@ use crate::codegen;
use crate::commands::{CodegenMode, OutputFile};
use crate::protos::{ProtoFlagPermission, ProtoFlagState, ProtoParsedFlag};
-pub fn generate_cpp_code<'a, I>(
+pub fn generate_cpp_code<I>(
package: &str,
parsed_flags_iter: I,
codegen_mode: CodegenMode,
) -> Result<Vec<OutputFile>>
where
- I: Iterator<Item = &'a ProtoParsedFlag>,
+ I: Iterator<Item = ProtoParsedFlag>,
{
let mut readwrite_count = 0;
let class_elements: Vec<ClassElement> = parsed_flags_iter
- .map(|pf| create_class_element(package, pf, &mut readwrite_count))
+ .map(|pf| create_class_element(package, &pf, &mut readwrite_count))
.collect();
let readwrite = readwrite_count > 0;
let has_fixed_read_only = class_elements.iter().any(|item| item.is_fixed_read_only);
@@ -734,9 +734,12 @@ void com_android_aconfig_test_reset_flags() {
fn test_generate_cpp_code(mode: CodegenMode) {
let parsed_flags = crate::test::parse_test_flags();
- let generated =
- generate_cpp_code(crate::test::TEST_PACKAGE, parsed_flags.parsed_flag.iter(), mode)
- .unwrap();
+ let generated = generate_cpp_code(
+ crate::test::TEST_PACKAGE,
+ parsed_flags.parsed_flag.into_iter(),
+ mode,
+ )
+ .unwrap();
let mut generated_files_map = HashMap::new();
for file in generated {
generated_files_map.insert(
diff --git a/tools/aconfig/src/commands.rs b/tools/aconfig/src/commands.rs
index d60ebcfae0..9f21b6d100 100644
--- a/tools/aconfig/src/commands.rs
+++ b/tools/aconfig/src/commands.rs
@@ -210,7 +210,8 @@ pub fn create_cpp_lib(mut input: Input, codegen_mode: CodegenMode) -> Result<Vec
let Some(package) = find_unique_package(&filtered_parsed_flags) else {
bail!("no parsed flags, or the parsed flags use different packages");
};
- generate_cpp_code(package, filtered_parsed_flags.iter(), codegen_mode)
+ let package = package.to_string();
+ generate_cpp_code(&package, filtered_parsed_flags.into_iter(), codegen_mode)
}
pub fn create_rust_lib(mut input: Input, codegen_mode: CodegenMode) -> Result<OutputFile> {