Minor c/c++ codegen update

1, Moved "#include <string>" from exported header to test flag provider
header file.

2, For production target and read only flags, the generated c
api should just return default value instead of calling into c++ api

3, Remove using namespace server_configurable_flags from header, instead
of just having the namespace to be spelled out in each api call. Having
using namespace xxx in header is not a c++ best practice.

4, Replace #ifdef #def #endif with #pragma once

Bug: b/279483801
Test: atest aconfig.test
Change-Id: I3e55a7b14301f3de419795467f33e2dc889d371e
This commit is contained in:
Dennis Shen
2023-07-14 14:57:08 +00:00
parent 21380611d4
commit 5c2421394c
6 changed files with 30 additions and 45 deletions

View File

@@ -136,10 +136,8 @@ mod tests {
use std::collections::HashMap; use std::collections::HashMap;
const EXPORTED_PROD_HEADER_EXPECTED: &str = r#" const EXPORTED_PROD_HEADER_EXPECTED: &str = r#"
#ifndef com_android_aconfig_test_HEADER_H #pragma once
#define com_android_aconfig_test_HEADER_H
#include <string>
#include <memory> #include <memory>
namespace com::android::aconfig::test { namespace com::android::aconfig::test {
@@ -176,14 +174,11 @@ inline bool enabled_rw() {
} }
} }
#endif
"#; "#;
const EXPORTED_TEST_HEADER_EXPECTED: &str = r#" const EXPORTED_TEST_HEADER_EXPECTED: &str = r#"
#ifndef com_android_aconfig_test_HEADER_H #pragma once
#define com_android_aconfig_test_HEADER_H
#include <string>
#include <memory> #include <memory>
namespace com::android::aconfig::test { namespace com::android::aconfig::test {
@@ -250,16 +245,13 @@ inline void reset_flags() {
} }
} }
#endif
"#; "#;
const PROD_FLAG_PROVIDER_HEADER_EXPECTED: &str = r#" const PROD_FLAG_PROVIDER_HEADER_EXPECTED: &str = r#"
#ifndef com_android_aconfig_test_flag_provider_HEADER_H #pragma once
#define com_android_aconfig_test_flag_provider_HEADER_H
#include "com_android_aconfig_test.h" #include "com_android_aconfig_test.h"
#include <server_configurable_flags/get_flags.h> #include <server_configurable_flags/get_flags.h>
using namespace server_configurable_flags;
namespace com::android::aconfig::test { namespace com::android::aconfig::test {
class flag_provider : public flag_provider_interface { class flag_provider : public flag_provider_interface {
@@ -270,7 +262,7 @@ public:
} }
virtual bool disabled_rw() override { virtual bool disabled_rw() override {
return GetServerConfigurableFlag( return server_configurable_flags::GetServerConfigurableFlag(
"aconfig_test", "aconfig_test",
"com.android.aconfig.test.disabled_rw", "com.android.aconfig.test.disabled_rw",
"false") == "true"; "false") == "true";
@@ -281,25 +273,23 @@ public:
} }
virtual bool enabled_rw() override { virtual bool enabled_rw() override {
return GetServerConfigurableFlag( return server_configurable_flags::GetServerConfigurableFlag(
"aconfig_test", "aconfig_test",
"com.android.aconfig.test.enabled_rw", "com.android.aconfig.test.enabled_rw",
"true") == "true"; "true") == "true";
} }
}; };
} }
#endif
"#; "#;
const TEST_FLAG_PROVIDER_HEADER_EXPECTED: &str = r#" const TEST_FLAG_PROVIDER_HEADER_EXPECTED: &str = r#"
#ifndef com_android_aconfig_test_flag_provider_HEADER_H #pragma once
#define com_android_aconfig_test_flag_provider_HEADER_H
#include "com_android_aconfig_test.h" #include "com_android_aconfig_test.h"
#include <server_configurable_flags/get_flags.h> #include <server_configurable_flags/get_flags.h>
using namespace server_configurable_flags;
#include <unordered_map> #include <unordered_map>
#include <string>
namespace com::android::aconfig::test { namespace com::android::aconfig::test {
class flag_provider : public flag_provider_interface { class flag_provider : public flag_provider_interface {
@@ -330,7 +320,7 @@ public:
if (it != overrides_.end()) { if (it != overrides_.end()) {
return it->second; return it->second;
} else { } else {
return GetServerConfigurableFlag( return server_configurable_flags::GetServerConfigurableFlag(
"aconfig_test", "aconfig_test",
"com.android.aconfig.test.disabled_rw", "com.android.aconfig.test.disabled_rw",
"false") == "true"; "false") == "true";
@@ -359,7 +349,7 @@ public:
if (it != overrides_.end()) { if (it != overrides_.end()) {
return it->second; return it->second;
} else { } else {
return GetServerConfigurableFlag( return server_configurable_flags::GetServerConfigurableFlag(
"aconfig_test", "aconfig_test",
"com.android.aconfig.test.enabled_rw", "com.android.aconfig.test.enabled_rw",
"true") == "true"; "true") == "true";
@@ -375,7 +365,6 @@ public:
} }
}; };
} }
#endif
"#; "#;
const SOURCE_FILE_EXPECTED: &str = r#" const SOURCE_FILE_EXPECTED: &str = r#"
@@ -389,8 +378,7 @@ namespace com::android::aconfig::test {
"#; "#;
const C_EXPORTED_PROD_HEADER_EXPECTED: &str = r#" const C_EXPORTED_PROD_HEADER_EXPECTED: &str = r#"
#ifndef com_android_aconfig_test_c_HEADER_H #pragma once
#define com_android_aconfig_test_c_HEADER_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@@ -407,12 +395,10 @@ bool com_android_aconfig_test_enabled_rw();
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif
"#; "#;
const C_EXPORTED_TEST_HEADER_EXPECTED: &str = r#" const C_EXPORTED_TEST_HEADER_EXPECTED: &str = r#"
#ifndef com_android_aconfig_test_c_HEADER_H #pragma once
#define com_android_aconfig_test_c_HEADER_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@@ -439,7 +425,6 @@ void com_android_aconfig_test_reset_flags();
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif
"#; "#;
const C_PROD_SOURCE_FILE_EXPECTED: &str = r#" const C_PROD_SOURCE_FILE_EXPECTED: &str = r#"
@@ -447,7 +432,7 @@ void com_android_aconfig_test_reset_flags();
#include "com_android_aconfig_test.h" #include "com_android_aconfig_test.h"
bool com_android_aconfig_test_disabled_ro() { bool com_android_aconfig_test_disabled_ro() {
return com::android::aconfig::test::disabled_ro(); return false;
} }
bool com_android_aconfig_test_disabled_rw() { bool com_android_aconfig_test_disabled_rw() {
@@ -455,7 +440,7 @@ bool com_android_aconfig_test_disabled_rw() {
} }
bool com_android_aconfig_test_enabled_ro() { bool com_android_aconfig_test_enabled_ro() {
return com::android::aconfig::test::enabled_ro(); return true;
} }
bool com_android_aconfig_test_enabled_rw() { bool com_android_aconfig_test_enabled_rw() {

View File

@@ -1,5 +1,4 @@
#ifndef {header}_c_HEADER_H #pragma once
#define {header}_c_HEADER_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" \{ extern "C" \{
@@ -20,4 +19,3 @@ void {header}_reset_flags();
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif

View File

@@ -3,7 +3,15 @@
{{ for item in class_elements}} {{ for item in class_elements}}
bool {header}_{item.flag_name}() \{ bool {header}_{item.flag_name}() \{
{{ if for_test }}
return {cpp_namespace}::{item.flag_name}(); return {cpp_namespace}::{item.flag_name}();
{{ -else- }}
{{ if not item.readwrite- }}
return {item.default_value};
{{ -else- }}
return {cpp_namespace}::{item.flag_name}();
{{ -endif }}
{{ -endif }}
} }
{{ if for_test }} {{ if for_test }}

View File

@@ -1,7 +1,5 @@
#ifndef {header}_HEADER_H #pragma once
#define {header}_HEADER_H
#include <string>
#include <memory> #include <memory>
namespace {cpp_namespace} \{ namespace {cpp_namespace} \{
@@ -50,4 +48,3 @@ inline void reset_flags() \{
} }
{{ -endif }} {{ -endif }}
} }
#endif

View File

@@ -1,9 +1,8 @@
#ifndef {header}_flag_provider_HEADER_H #pragma once
#define {header}_flag_provider_HEADER_H
#include "{header}.h" #include "{header}.h"
{{ if readwrite }} {{ if readwrite }}
#include <server_configurable_flags/get_flags.h> #include <server_configurable_flags/get_flags.h>
using namespace server_configurable_flags;
{{ endif }} {{ endif }}
namespace {cpp_namespace} \{ namespace {cpp_namespace} \{
@@ -12,7 +11,7 @@ public:
{{ for item in class_elements}} {{ for item in class_elements}}
virtual bool {item.flag_name}() override \{ virtual bool {item.flag_name}() override \{
{{ if item.readwrite- }} {{ if item.readwrite- }}
return GetServerConfigurableFlag( return server_configurable_flags::GetServerConfigurableFlag(
"{item.device_config_namespace}", "{item.device_config_namespace}",
"{item.device_config_flag}", "{item.device_config_flag}",
"{item.default_value}") == "true"; "{item.default_value}") == "true";
@@ -23,4 +22,3 @@ public:
{{ endfor }} {{ endfor }}
}; };
} }
#endif

View File

@@ -1,13 +1,13 @@
#ifndef {header}_flag_provider_HEADER_H #pragma once
#define {header}_flag_provider_HEADER_H
#include "{header}.h" #include "{header}.h"
{{ if readwrite }} {{ if readwrite }}
#include <server_configurable_flags/get_flags.h> #include <server_configurable_flags/get_flags.h>
using namespace server_configurable_flags;
{{ endif }} {{ endif }}
#include <unordered_map> #include <unordered_map>
#include <string>
namespace {cpp_namespace} \{ namespace {cpp_namespace} \{
class flag_provider : public flag_provider_interface \{ class flag_provider : public flag_provider_interface \{
@@ -26,7 +26,7 @@ public:
return it->second; return it->second;
} else \{ } else \{
{{ if item.readwrite- }} {{ if item.readwrite- }}
return GetServerConfigurableFlag( return server_configurable_flags::GetServerConfigurableFlag(
"{item.device_config_namespace}", "{item.device_config_namespace}",
"{item.device_config_flag}", "{item.device_config_flag}",
"{item.default_value}") == "true"; "{item.default_value}") == "true";
@@ -46,4 +46,3 @@ public:
} }
}; };
} }
#endif