//===--- Designator.h - Initialization Designator ---------------*- 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 defines interfaces used to represent designators (a la // C99 designated initializers) during parsing. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_SEMA_DESIGNATOR_H #define LLVM_CLANG_SEMA_DESIGNATOR_H #include "clang/Basic/SourceLocation.h" #include "llvm/ADT/SmallVector.h" namespace clang { class Expr; class IdentifierInfo; /// Designator - A designator in a C99 designated initializer. /// /// This class is a discriminated union which holds the various /// different sorts of designators possible. A Designation is an array of /// these. An example of a designator are things like this: /// /// [8] .field [47] // C99 designation: 3 designators /// [8 ... 47] field: // GNU extensions: 2 designators /// /// These occur in initializers, e.g.: /// /// int a[10] = {2, 4, [8]=9, 10}; /// class Designator { … }; /// Designation - Represent a full designation, which is a sequence of /// designators. This class is mostly a helper for InitListDesignations. class Designation { … }; } // end namespace clang #endif