add AidlVariableDeclaration::GetCapitalizedName()
to remove dup in aidl_language.cpp and generate_java.cpp.
Bug: n/a
Test: aidl_unittests
Change-Id: Ib4f9fae0a38c188f97d0d2cf9f47889e170fa784
diff --git a/aidl_language.cpp b/aidl_language.cpp
index e561350..798dc1e 100644
--- a/aidl_language.cpp
+++ b/aidl_language.cpp
@@ -69,13 +69,6 @@
return std::find(kJavaKeywords.begin(), kJavaKeywords.end(), str) != kJavaKeywords.end();
}
-inline std::string CapitalizeFirstLetter(const AidlNode& context, const std::string& str) {
- AIDL_FATAL_IF(str.size() <= 0, context) << "Input cannot be empty.";
- std::ostringstream out;
- out << static_cast<char>(toupper(str[0])) << str.substr(1);
- return out.str();
-}
-
void AddHideComment(CodeWriter* writer) {
writer->Write("/* @hide */\n");
}
@@ -616,6 +609,13 @@
return !ValueString(AidlConstantValueDecorator).empty();
}
+string AidlVariableDeclaration::GetCapitalizedName() const {
+ AIDL_FATAL_IF(name_.size() <= 0, *this) << "Name can't be empty.";
+ string str = name_;
+ str[0] = static_cast<char>(toupper(str[0]));
+ return str;
+}
+
string AidlVariableDeclaration::ToString() const {
string ret = type_->Signature() + " " + name_;
if (default_value_ != nullptr && default_user_specified_) {
@@ -902,7 +902,7 @@
bool success = true;
std::set<std::string> getters;
for (const auto& v : GetFields()) {
- bool duplicated = !getters.emplace(CapitalizeFirstLetter(*v, v->GetName())).second;
+ bool duplicated = !getters.emplace(v->GetCapitalizedName()).second;
if (duplicated) {
AIDL_ERROR(v) << "'" << parcel.GetName() << "' has duplicate field name '" << v->GetName()
<< "' after capitalizing the first letter";
diff --git a/aidl_language.h b/aidl_language.h
index dbd987e..7bc249b 100644
--- a/aidl_language.h
+++ b/aidl_language.h
@@ -347,6 +347,7 @@
AidlVariableDeclaration& operator=(AidlVariableDeclaration&&) = delete;
std::string GetName() const { return name_; }
+ std::string GetCapitalizedName() const;
const AidlTypeSpecifier& GetType() const { return *type_; }
// if this was constructed explicitly with a default value
bool IsDefaultUserSpecified() const { return default_user_specified_; }
diff --git a/generate_java.cpp b/generate_java.cpp
index 3ee3b3a..7e24c06 100644
--- a/generate_java.cpp
+++ b/generate_java.cpp
@@ -44,18 +44,11 @@
using android::aidl::java::CodeGeneratorContext;
using android::aidl::java::ConstantValueDecorator;
-// join two non-empty strings according to `camelCase` naming.
-inline string camelcase_join(const string& a, const string& b, const AidlNode& context) {
- AIDL_FATAL_IF(b.size() <= 0 || a.size() <= 0, context) << "Name cannot be empty.";
- std::string name = a + b;
- name[a.size()] = static_cast<char>(toupper(name[a.size()]));
- return name;
-}
inline string getter_name(const AidlVariableDeclaration& variable) {
- return camelcase_join("get", variable.GetName(), variable);
+ return "get" + variable.GetCapitalizedName();
}
inline string setter_name(const AidlVariableDeclaration& variable) {
- return camelcase_join("set", variable.GetName(), variable);
+ return "set" + variable.GetCapitalizedName();
}
// clang-format off