llvm-project/clang/lib/Basic/ParsedAttrInfo.cpp
Anders Waldenborg f5f1813def [clang] Extract attribute plugin instantiation to function (NFC)
This moves the code to instantiate the attribute plugins to the same
place where the plugin registry is defined so they live together and the
user of the plugins doesn't have the burden of instantiating the
plugins.

No functional change intended.

Differential Revision: https://reviews.llvm.org/D144403
2023-03-13 16:47:51 +01:00

33 lines
1.1 KiB
C++

//===- ParsedAttrInfo.cpp - Registry for attribute plugins ------*- 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
//
//===----------------------------------------------------------------------===//
//
// This file contains the Registry of attributes added by plugins which
// derive the ParsedAttrInfo class.
//
//===----------------------------------------------------------------------===//
#include "clang/Basic/ParsedAttrInfo.h"
#include "llvm/Support/ManagedStatic.h"
#include <list>
#include <memory>
using namespace clang;
LLVM_INSTANTIATE_REGISTRY(ParsedAttrInfoRegistry)
const std::list<std::unique_ptr<ParsedAttrInfo>> &
clang::getAttributePluginInstances() {
static llvm::ManagedStatic<std::list<std::unique_ptr<ParsedAttrInfo>>>
PluginAttrInstances;
if (PluginAttrInstances->empty())
for (auto It : ParsedAttrInfoRegistry::entries())
PluginAttrInstances->emplace_back(It.instantiate());
return *PluginAttrInstances;
}