//===--- SelectorLocationsKind.h - Kind of selector locations ---*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Describes whether the identifier locations for a selector are "standard" // or not. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_AST_SELECTORLOCATIONSKIND_H #define LLVM_CLANG_AST_SELECTORLOCATIONSKIND_H #include "clang/Basic/LLVM.h" namespace clang { class Selector; class SourceLocation; class Expr; class ParmVarDecl; /// Whether all locations of the selector identifiers are in a /// "standard" position. enum SelectorLocationsKind { … }; /// Returns true if all \p SelLocs are in a "standard" location. SelectorLocationsKind hasStandardSelectorLocs(Selector Sel, ArrayRef<SourceLocation> SelLocs, ArrayRef<Expr *> Args, SourceLocation EndLoc); /// Get the "standard" location of a selector identifier, e.g: /// For nullary selectors, immediately before ']': "[foo release]" /// /// \param WithArgSpace if true the standard location is with a space apart /// before arguments: "[foo first: 1 second: 2]" /// If false: "[foo first:1 second:2]" SourceLocation getStandardSelectorLoc(unsigned Index, Selector Sel, bool WithArgSpace, ArrayRef<Expr *> Args, SourceLocation EndLoc); /// Returns true if all \p SelLocs are in a "standard" location. SelectorLocationsKind hasStandardSelectorLocs(Selector Sel, ArrayRef<SourceLocation> SelLocs, ArrayRef<ParmVarDecl *> Args, SourceLocation EndLoc); /// Get the "standard" location of a selector identifier, e.g: /// For nullary selectors, immediately before ']': "[foo release]" /// /// \param WithArgSpace if true the standard location is with a space apart /// before arguments: "-(id)first: (int)x second: (int)y;" /// If false: "-(id)first:(int)x second:(int)y;" SourceLocation getStandardSelectorLoc(unsigned Index, Selector Sel, bool WithArgSpace, ArrayRef<ParmVarDecl *> Args, SourceLocation EndLoc); } // end namespace clang #endif