1//===- llvm/Metadata.def - Metadata definitions -----------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// Macros for running through all types of metadata. 11// 12//===----------------------------------------------------------------------===// 13 14#if !(defined HANDLE_METADATA || defined HANDLE_METADATA_LEAF || \ 15 defined HANDLE_METADATA_BRANCH || defined HANDLE_UNIQUABLE_LEAF || \ 16 defined HANDLE_UNIQUABLE_BRANCH) 17#error "Missing macro definition of HANDLE_METADATA*" 18#endif 19 20// Handler for all types of metadata. 21#ifndef HANDLE_METADATA 22#define HANDLE_METADATA(CLASS) 23#endif 24 25// Handler for leaf nodes in the class hierarchy. 26#ifndef HANDLE_METADATA_LEAF 27#define HANDLE_METADATA_LEAF(CLASS) HANDLE_METADATA(CLASS) 28#endif 29 30// Handler for non-leaf nodes in the class hierarchy. 31#ifndef HANDLE_METADATA_BRANCH 32#define HANDLE_METADATA_BRANCH(CLASS) HANDLE_METADATA(CLASS) 33#endif 34 35// Handler for leaf nodes under UniquableMDNode. 36#ifndef HANDLE_UNIQUABLE_LEAF 37#define HANDLE_UNIQUABLE_LEAF(CLASS) HANDLE_METADATA_LEAF(CLASS) 38#endif 39 40// Handler for non-leaf nodes under UniquableMDNode. 41#ifndef HANDLE_UNIQUABLE_BRANCH 42#define HANDLE_UNIQUABLE_BRANCH(CLASS) HANDLE_METADATA_BRANCH(CLASS) 43#endif 44 45HANDLE_METADATA_LEAF(MDString) 46HANDLE_METADATA_BRANCH(ValueAsMetadata) 47HANDLE_METADATA_LEAF(ConstantAsMetadata) 48HANDLE_METADATA_LEAF(LocalAsMetadata) 49HANDLE_METADATA_BRANCH(MDNode) 50HANDLE_METADATA_LEAF(MDNodeFwdDecl) 51HANDLE_UNIQUABLE_BRANCH(UniquableMDNode) 52HANDLE_UNIQUABLE_LEAF(MDTuple) 53HANDLE_UNIQUABLE_LEAF(MDLocation) 54 55#undef HANDLE_METADATA 56#undef HANDLE_METADATA_LEAF 57#undef HANDLE_METADATA_BRANCH 58#undef HANDLE_UNIQUABLE_LEAF 59#undef HANDLE_UNIQUABLE_BRANCH 60