1c878d03dSBenjamin Kramer //===- InterfaceSupport.cpp - MLIR Interface Support Classes --------------===// 2c878d03dSBenjamin Kramer // 3c878d03dSBenjamin Kramer // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4c878d03dSBenjamin Kramer // See https://llvm.org/LICENSE.txt for license information. 5c878d03dSBenjamin Kramer // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6c878d03dSBenjamin Kramer // 7c878d03dSBenjamin Kramer //===----------------------------------------------------------------------===// 8c878d03dSBenjamin Kramer // 9c878d03dSBenjamin Kramer // This file defines several support classes for defining interfaces. 10c878d03dSBenjamin Kramer // 11c878d03dSBenjamin Kramer //===----------------------------------------------------------------------===// 12c878d03dSBenjamin Kramer 13c878d03dSBenjamin Kramer #include "mlir/Support/InterfaceSupport.h" 14c878d03dSBenjamin Kramer #include "llvm/Support/Debug.h" 15c878d03dSBenjamin Kramer #include "llvm/Support/raw_ostream.h" 16c878d03dSBenjamin Kramer 17c878d03dSBenjamin Kramer #define DEBUG_TYPE "interfaces" 18c878d03dSBenjamin Kramer 19c878d03dSBenjamin Kramer using namespace mlir; 20c878d03dSBenjamin Kramer insert(TypeID interfaceId,void * conceptImpl)2183a635c0SRiver Riddlevoid detail::InterfaceMap::insert(TypeID interfaceId, void *conceptImpl) { 22c878d03dSBenjamin Kramer // Insert directly into the right position to keep the interfaces sorted. 2383a635c0SRiver Riddle auto *it = 2483a635c0SRiver Riddle llvm::lower_bound(interfaces, interfaceId, [](const auto &it, TypeID id) { 25c878d03dSBenjamin Kramer return compare(it.first, id); 26c878d03dSBenjamin Kramer }); 2783a635c0SRiver Riddle if (it != interfaces.end() && it->first == interfaceId) { 28*891fad04SKohei Yamaguchi LLVM_DEBUG(llvm::dbgs() << "Ignoring repeated interface registration\n"); 2983a635c0SRiver Riddle free(conceptImpl); 3083a635c0SRiver Riddle return; 31c878d03dSBenjamin Kramer } 3283a635c0SRiver Riddle interfaces.insert(it, {interfaceId, conceptImpl}); 33c878d03dSBenjamin Kramer } 34