brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 16fa314 Raw
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