33 lines · cpp
1//===- ParsedAttrInfo.cpp - Registry for attribute plugins ------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file contains the Registry of attributes added by plugins which10// derive the ParsedAttrInfo class.11//12//===----------------------------------------------------------------------===//13 14#include "clang/Basic/ParsedAttrInfo.h"15#include "llvm/Support/ManagedStatic.h"16#include <list>17#include <memory>18 19using namespace clang;20 21LLVM_INSTANTIATE_REGISTRY(ParsedAttrInfoRegistry)22 23const std::list<std::unique_ptr<ParsedAttrInfo>> &24clang::getAttributePluginInstances() {25 static llvm::ManagedStatic<std::list<std::unique_ptr<ParsedAttrInfo>>>26 PluginAttrInstances;27 if (PluginAttrInstances->empty())28 for (const auto &It : ParsedAttrInfoRegistry::entries())29 PluginAttrInstances->emplace_back(It.instantiate());30 31 return *PluginAttrInstances;32}33