//===--- DeclNameLoc.cpp - Declaration Name Location Info -----------------===// // // 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 // //===----------------------------------------------------------------------===// // // This file implements the DeclNameLoc class. // //===----------------------------------------------------------------------===// #include "swift/AST/DeclNameLoc.h" #include "swift/AST/ASTContext.h" using namespace swift; DeclNameLoc::DeclNameLoc(ASTContext &ctx, SourceLoc baseNameLoc, SourceLoc lParenLoc, ArrayRef argumentLabelLocs, SourceLoc rParenLoc) : NumArgumentLabels(argumentLabelLocs.size()) { assert(NumArgumentLabels > 0 && "Use other constructor"); // Copy the location information into permanent storage. auto storedLocs = ctx.Allocate(NumArgumentLabels + 3); storedLocs[BaseNameIndex] = baseNameLoc; storedLocs[LParenIndex] = lParenLoc; storedLocs[RParenIndex] = rParenLoc; std::memcpy(storedLocs.data() + FirstArgumentLabelIndex, argumentLabelLocs.data(), argumentLabelLocs.size() * sizeof(SourceLoc)); LocationInfo = storedLocs.data(); }