Loading tools/aconfig/src/codegen_cpp.rs +95 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,16 @@ where }, dir: "", }, FileSpec { name: &format!("{}_c.h", header), template: include_str!("../templates/c_exported_header.template"), dir: "include", }, FileSpec { name: &format!("{}_c.cc", header), template: include_str!("../templates/c_source_file.template"), dir: "", }, ]; files.iter().map(|file| generate_file(file, &context)).collect() } Loading Loading @@ -387,6 +397,71 @@ namespace com::android::aconfig::test { } "#; const C_EXPORTED_HEADER_EXPECTED: &str = r#" #ifndef com_android_aconfig_test_c_HEADER_H #define com_android_aconfig_test_c_HEADER_H #ifdef __cplusplus extern "C" { #endif extern const char* com_android_aconfig_test_DISABLED_RO; extern const char* com_android_aconfig_test_DISABLED_RW; extern const char* com_android_aconfig_test_ENABLED_RO; extern const char* com_android_aconfig_test_ENABLED_RW; bool com_android_aconfig_test_disabled_ro(); bool com_android_aconfig_test_disabled_rw(); bool com_android_aconfig_test_enabled_ro(); bool com_android_aconfig_test_enabled_rw(); void com_android_aconfig_test_override_flag(const char* name, bool val); void com_android_aconfig_test_reset_overrides(); #ifdef __cplusplus } #endif #endif "#; const C_SOURCE_FILE_EXPECTED: &str = r#" #include "com_android_aconfig_test_c.h" #include "com_android_aconfig_test.h" #include <string> const char* com_android_aconfig_test_DISABLED_RO = "com.android.aconfig.test.disabled_ro"; const char* com_android_aconfig_test_DISABLED_RW = "com.android.aconfig.test.disabled_rw"; const char* com_android_aconfig_test_ENABLED_RO = "com.android.aconfig.test.enabled_ro"; const char* com_android_aconfig_test_ENABLED_RW = "com.android.aconfig.test.enabled_rw"; bool com_android_aconfig_test_disabled_ro() { return com::android::aconfig::test::disabled_ro(); } bool com_android_aconfig_test_disabled_rw() { return com::android::aconfig::test::disabled_rw(); } bool com_android_aconfig_test_enabled_ro() { return com::android::aconfig::test::enabled_ro(); } bool com_android_aconfig_test_enabled_rw() { return com::android::aconfig::test::enabled_rw(); } void com_android_aconfig_test_override_flag(const char* name, bool val) { com::android::aconfig::test::override_flag(std::string(name), val); } void com_android_aconfig_test_reset_overrides() { com::android::aconfig::test::reset_overrides(); } "#; fn test_generate_cpp_code(mode: CodegenMode) { let parsed_flags = crate::test::parse_test_flags(); let generated = Loading Loading @@ -435,6 +510,26 @@ namespace com::android::aconfig::test { generated_files_map.get(&target_file_path).unwrap() ) ); target_file_path = String::from("include/com_android_aconfig_test_c.h"); assert!(generated_files_map.contains_key(&target_file_path)); assert_eq!( None, crate::test::first_significant_code_diff( C_EXPORTED_HEADER_EXPECTED, generated_files_map.get(&target_file_path).unwrap() ) ); target_file_path = String::from("com_android_aconfig_test_c.cc"); assert!(generated_files_map.contains_key(&target_file_path)); assert_eq!( None, crate::test::first_significant_code_diff( C_SOURCE_FILE_EXPECTED, generated_files_map.get(&target_file_path).unwrap() ) ); } #[test] Loading tools/aconfig/templates/c_exported_header.template 0 → 100644 +22 −0 Original line number Diff line number Diff line #ifndef {header}_c_HEADER_H #define {header}_c_HEADER_H #ifdef __cplusplus extern "C" \{ #endif {{ for item in class_elements}} extern const char* {header}_{item.uppercase_flag_name}; {{ endfor -}} {{ for item in class_elements}} bool {header}_{item.flag_name}();{{ endfor }} void {header}_override_flag(const char* name, bool val); void {header}_reset_overrides(); #ifdef __cplusplus } #endif #endif tools/aconfig/templates/c_source_file.template 0 → 100644 +21 −0 Original line number Diff line number Diff line #include "{header}_c.h" #include "{header}.h" #include <string> {{ for item in class_elements}} const char* {header}_{item.uppercase_flag_name} = "{item.device_config_flag}"; {{ endfor - }} {{ for item in class_elements}} bool {header}_{item.flag_name}() \{ return {cpp_namespace}::{item.flag_name}(); } {{ endfor }} void {header}_override_flag(const char* name, bool val) \{ {cpp_namespace}::override_flag(std::string(name), val); } void {header}_reset_overrides() \{ {cpp_namespace}::reset_overrides(); } Loading
tools/aconfig/src/codegen_cpp.rs +95 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,16 @@ where }, dir: "", }, FileSpec { name: &format!("{}_c.h", header), template: include_str!("../templates/c_exported_header.template"), dir: "include", }, FileSpec { name: &format!("{}_c.cc", header), template: include_str!("../templates/c_source_file.template"), dir: "", }, ]; files.iter().map(|file| generate_file(file, &context)).collect() } Loading Loading @@ -387,6 +397,71 @@ namespace com::android::aconfig::test { } "#; const C_EXPORTED_HEADER_EXPECTED: &str = r#" #ifndef com_android_aconfig_test_c_HEADER_H #define com_android_aconfig_test_c_HEADER_H #ifdef __cplusplus extern "C" { #endif extern const char* com_android_aconfig_test_DISABLED_RO; extern const char* com_android_aconfig_test_DISABLED_RW; extern const char* com_android_aconfig_test_ENABLED_RO; extern const char* com_android_aconfig_test_ENABLED_RW; bool com_android_aconfig_test_disabled_ro(); bool com_android_aconfig_test_disabled_rw(); bool com_android_aconfig_test_enabled_ro(); bool com_android_aconfig_test_enabled_rw(); void com_android_aconfig_test_override_flag(const char* name, bool val); void com_android_aconfig_test_reset_overrides(); #ifdef __cplusplus } #endif #endif "#; const C_SOURCE_FILE_EXPECTED: &str = r#" #include "com_android_aconfig_test_c.h" #include "com_android_aconfig_test.h" #include <string> const char* com_android_aconfig_test_DISABLED_RO = "com.android.aconfig.test.disabled_ro"; const char* com_android_aconfig_test_DISABLED_RW = "com.android.aconfig.test.disabled_rw"; const char* com_android_aconfig_test_ENABLED_RO = "com.android.aconfig.test.enabled_ro"; const char* com_android_aconfig_test_ENABLED_RW = "com.android.aconfig.test.enabled_rw"; bool com_android_aconfig_test_disabled_ro() { return com::android::aconfig::test::disabled_ro(); } bool com_android_aconfig_test_disabled_rw() { return com::android::aconfig::test::disabled_rw(); } bool com_android_aconfig_test_enabled_ro() { return com::android::aconfig::test::enabled_ro(); } bool com_android_aconfig_test_enabled_rw() { return com::android::aconfig::test::enabled_rw(); } void com_android_aconfig_test_override_flag(const char* name, bool val) { com::android::aconfig::test::override_flag(std::string(name), val); } void com_android_aconfig_test_reset_overrides() { com::android::aconfig::test::reset_overrides(); } "#; fn test_generate_cpp_code(mode: CodegenMode) { let parsed_flags = crate::test::parse_test_flags(); let generated = Loading Loading @@ -435,6 +510,26 @@ namespace com::android::aconfig::test { generated_files_map.get(&target_file_path).unwrap() ) ); target_file_path = String::from("include/com_android_aconfig_test_c.h"); assert!(generated_files_map.contains_key(&target_file_path)); assert_eq!( None, crate::test::first_significant_code_diff( C_EXPORTED_HEADER_EXPECTED, generated_files_map.get(&target_file_path).unwrap() ) ); target_file_path = String::from("com_android_aconfig_test_c.cc"); assert!(generated_files_map.contains_key(&target_file_path)); assert_eq!( None, crate::test::first_significant_code_diff( C_SOURCE_FILE_EXPECTED, generated_files_map.get(&target_file_path).unwrap() ) ); } #[test] Loading
tools/aconfig/templates/c_exported_header.template 0 → 100644 +22 −0 Original line number Diff line number Diff line #ifndef {header}_c_HEADER_H #define {header}_c_HEADER_H #ifdef __cplusplus extern "C" \{ #endif {{ for item in class_elements}} extern const char* {header}_{item.uppercase_flag_name}; {{ endfor -}} {{ for item in class_elements}} bool {header}_{item.flag_name}();{{ endfor }} void {header}_override_flag(const char* name, bool val); void {header}_reset_overrides(); #ifdef __cplusplus } #endif #endif
tools/aconfig/templates/c_source_file.template 0 → 100644 +21 −0 Original line number Diff line number Diff line #include "{header}_c.h" #include "{header}.h" #include <string> {{ for item in class_elements}} const char* {header}_{item.uppercase_flag_name} = "{item.device_config_flag}"; {{ endfor - }} {{ for item in class_elements}} bool {header}_{item.flag_name}() \{ return {cpp_namespace}::{item.flag_name}(); } {{ endfor }} void {header}_override_flag(const char* name, bool val) \{ {cpp_namespace}::override_flag(std::string(name), val); } void {header}_reset_overrides() \{ {cpp_namespace}::reset_overrides(); }