//===--- SymbolName.h - Clang refactoring library -------------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_TOOLING_REFACTOR_RENAME_SYMBOL_NAME_H
#define LLVM_CLANG_TOOLING_REFACTOR_RENAME_SYMBOL_NAME_H

#include "clang/Basic/LLVM.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"

namespace clang {
namespace tooling {

/// A name of a symbol.
///
/// Symbol's name can be composed of multiple strings. For example, Objective-C
/// methods can contain multiple argument labels:
///
/// \code
/// - (void) myMethodNamePiece: (int)x anotherNamePieces:(int)y;
/// //       ^~ string 0 ~~~~~         ^~ string 1 ~~~~~
/// \endcode
class SymbolName {
public:
  explicit SymbolName(StringRef Name) {
    // While empty symbol names are valid (Objective-C selectors can have empty
    // name pieces), occurrences Objective-C selectors are created using an
    // array of strings instead of just one string.
    assert(!Name.empty() && "Invalid symbol name!");
    this->Name.push_back(Name.str());
  }

  ArrayRef<std::string> getNamePieces() const { return Name; }

private:
  llvm::SmallVector<std::string, 1> Name;
};

} // end namespace tooling
} // end namespace clang

#endif // LLVM_CLANG_TOOLING_REFACTOR_RENAME_SYMBOL_NAME_H
