//===--- Comment.h - Swift-specific comment parsing -------------*- C++ -*-===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See http://swift.org/LICENSE.txt for license information // See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // //===----------------------------------------------------------------------===// #ifndef SWIFT_AST_COMMENT_H #define SWIFT_AST_COMMENT_H #include "swift/Markup/Markup.h" #include "llvm/ADT/Optional.h" namespace swift { class Decl; class DocComment; struct RawComment; class DocComment { const Decl *D; const swift::markup::Document *Doc = nullptr; const swift::markup::CommentParts Parts; public: DocComment(const Decl *D, swift::markup::Document *Doc, swift::markup::CommentParts Parts) : D(D), Doc(Doc), Parts(Parts) {} const Decl *getDecl() const { return D; } const swift::markup::Document *getDocument() const { return Doc; } swift::markup::CommentParts getParts() const { return Parts; } Optional getBrief() const { return Parts.Brief; } OptionalgetReturnsField() const { return Parts.ReturnsField; } Optional getThrowsField() const { return Parts.ThrowsField; } ArrayRef getParamFields() const { return Parts.ParamFields; } ArrayRef getBodyNodes() const { return Parts.BodyNodes; } bool isEmpty() const { return Parts.isEmpty(); } // Only allow allocation using the allocator in MarkupContext or by // placement new. void *operator new(size_t Bytes, swift::markup::MarkupContext &MC, unsigned Alignment = alignof(DocComment)); void *operator new(size_t Bytes, void *Mem) { assert(Mem); return Mem; } // Make vanilla new/delete illegal. void *operator new(size_t Bytes) = delete; void operator delete(void *Data) = delete; }; OptionalgetDocComment(swift::markup::MarkupContext &Context, const Decl *D); } // namespace swift #endif // LLVM_SWIFT_AST_COMMENT_H