[cfe-commits] r164861 - in /cfe/trunk: bindings/xml/comment-xml-schema.rng tools/libclang/CXComment.cpp
Fariborz Jahanian
fjahanian at apple.com
Fri Sep 28 15:35:49 PDT 2012
Author: fjahanian
Date: Fri Sep 28 17:35:49 2012
New Revision: 164861
URL: http://llvm.org/viewvc/llvm-project?rev=164861&view=rev
Log:
[Doc parsing] Add availability information to generated Comment XML.
(I still need to add a test once I figure it out).
Reviewed off-line by Doug. // rdar://12378879
Modified:
cfe/trunk/bindings/xml/comment-xml-schema.rng
cfe/trunk/tools/libclang/CXComment.cpp
Modified: cfe/trunk/bindings/xml/comment-xml-schema.rng
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/bindings/xml/comment-xml-schema.rng?rev=164861&r1=164860&r2=164861&view=diff
==============================================================================
--- cfe/trunk/bindings/xml/comment-xml-schema.rng (original)
+++ cfe/trunk/bindings/xml/comment-xml-schema.rng Fri Sep 28 17:35:49 2012
@@ -79,6 +79,9 @@
<optional>
<ref name="Parameters" />
</optional>
+ <zeroOrMore>
+ <ref name="Attribute" />
+ </zeroOrMore>
<optional>
<ref name="ResultDiscussion" />
</optional>
@@ -284,6 +287,39 @@
</element>
</define>
+ <define name="Attribute">
+ <element name="Availability">
+ <attribute name="distribution">
+ <data type="string" />
+ </attribute>
+ <optional>
+ <element name="IntroducedInVersion">
+ <data type="float" />
+ </element>
+ </optional>
+ <optional>
+ <element name="DeprecatedInVersion">
+ <data type="float" />
+ </element>
+ </optional>
+ <optional>
+ <element name="RemovedAfterVersion">
+ <data type="float" />
+ </element>
+ </optional>
+ <optional>
+ <element name="DeprecationSummary">
+ <data type="string" />
+ </element>
+ </optional>
+ <optional>
+ <element name="Unavailable">
+ <data type="boolean" />
+ </element>
+ </optional>
+ </element>
+ </define>
+
<define name="Abstract">
<element name="Abstract">
<zeroOrMore>
Modified: cfe/trunk/tools/libclang/CXComment.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CXComment.cpp?rev=164861&r1=164860&r2=164861&view=diff
==============================================================================
--- cfe/trunk/tools/libclang/CXComment.cpp (original)
+++ cfe/trunk/tools/libclang/CXComment.cpp Fri Sep 28 17:35:49 2012
@@ -1170,7 +1170,62 @@
visit(Parts.Returns);
Result << "</ResultDiscussion>";
}
-
+
+ if (DI->ThisDecl->hasAttrs()) {
+ const AttrVec &Attrs = DI->ThisDecl->getAttrs();
+ for (unsigned i = 0, e = Attrs.size(); i != e;) {
+ const AvailabilityAttr *AA = dyn_cast<AvailabilityAttr>(Attrs[i++]);
+ if (!AA)
+ continue;
+ // availability attribute info.
+
+ Result << "<Availability";
+ StringRef distribution;
+ if (AA->getPlatform()) {
+ distribution = AA->getPlatform()->getName();
+ if (distribution == "macosx")
+ distribution = "OSX";
+ else
+ distribution = "iOS";
+ }
+
+ Result << " distribution=\"";
+ Result << distribution;
+ Result << "\">";
+ VersionTuple IntroducedInVersion = AA->getIntroduced();
+ if (!IntroducedInVersion.empty()) {
+ Result << " <IntroducedInVersion>";
+ Result << IntroducedInVersion.getAsString();
+ Result << "</IntroducedInVersion>";
+ }
+ VersionTuple DeprecatedInVersion = AA->getDeprecated();
+ if (!DeprecatedInVersion.empty()) {
+ Result << " <DeprecatedInVersion>";
+ Result << DeprecatedInVersion.getAsString();
+ Result << "</DeprecatedInVersion>";
+ }
+ VersionTuple RemovedAfterVersion = AA->getObsoleted();
+ if (!RemovedAfterVersion.empty()) {
+ Result << " <RemovedAfterVersion>";
+ Result << RemovedAfterVersion.getAsString();
+ Result << "</RemovedAfterVersion>";
+ }
+ StringRef DeprecationSummary = AA->getMessage();
+ if (!DeprecationSummary.empty()) {
+ Result << " <DeprecationSummary>";
+ Result << DeprecationSummary;
+ Result << "</DeprecationSummary>";
+ }
+ Result << " <Unavailable>";
+ if (AA->getUnavailable())
+ Result << "true";
+ else
+ Result << "false";
+ Result << "</Unavailable>";
+ Result << " </Availability>";
+ }
+ }
+
{
bool StartTagEmitted = false;
for (unsigned i = 0, e = Parts.MiscBlocks.size(); i != e; ++i) {
More information about the cfe-commits
mailing list