Generate __attribute__(deprecated) for deprecated APIs.
We allow also a custom deprecation message.
Change-Id: I297bed611c7fbbb34d41e7edd796557c9afe50da
diff --git a/api/Specification.cpp b/api/Specification.cpp
index a82fd1b..362aef2 100644
--- a/api/Specification.cpp
+++ b/api/Specification.cpp
@@ -225,7 +225,7 @@
}
Definition::Definition(const std::string& name)
- : mName(name), mDeprecated(false), mHidden(false), mFinalVersion(-1) {
+ : mName(name), mDeprecatedApiLevel(0), mHidden(false), mFinalVersion(-1) {
}
void Definition::updateFinalVersion(const VersionInfo& info) {
@@ -247,8 +247,16 @@
mHidden = true;
}
if (scanner->findOptionalTag("deprecated:")) {
- mDeprecated = true;
- mDeprecatedMessage = scanner->getValue();
+ string value = scanner->getValue();
+ size_t pComma = value.find(", ");
+ if (pComma != string::npos) {
+ mDeprecatedMessage = value.substr(pComma + 2);
+ value.erase(pComma);
+ }
+ sscanf(value.c_str(), "%i", &mDeprecatedApiLevel);
+ if (mDeprecatedApiLevel <= 0) {
+ scanner->error() << "deprecated entries should have a level > 0\n";
+ }
}
if (firstOccurence) {
if (scanner->findTag("summary:")) {
@@ -380,9 +388,6 @@
spec->mFields.push_back(s);
spec->mFieldComments.push_back(comment);
}
- if (scanner->findOptionalTag("attrib:")) {
- spec->mAttrib = scanner->getValue();
- }
}
if (scanner->findOptionalTag("enum:")) {
spec->mKind = ENUM;
@@ -395,6 +400,9 @@
spec->mValueComments.push_back(comment);
}
}
+ if (scanner->findOptionalTag("attrib:")) {
+ spec->mAttribute = scanner->getValue();
+ }
type->scanDocumentationTags(scanner, created, specFile);
scanner->findTag("end:");