/******************************************************************************* * Copyright (c) 2004, 2012 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Doug Schaefer (IBM) - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.core.dom.ast; /** * A composite type specifier represents a composite structure (contains declarations). * * @noextend This interface is not intended to be extended by clients. * @noimplement This interface is not intended to be implemented by clients. */ public interface IASTCompositeTypeSpecifier extends IASTDeclSpecifier, IASTNameOwner, IASTDeclarationListOwner { /** * {@code k_struct} represents 'struct' in C and C++. */ public static final int k_struct = 1; /** * {@code k_union} represents 'union' in C and C++. */ public static final int k_union = 2; /** * {@code k_last} allows for subinterfaces to continue enumerating keys. */ public static final int k_last = k_union; /** * {@code TYPE_NAME} represents the relationship between an * {@code IASTCompositeTypeSpecifier} and its {@code IASTName}. */ public static final ASTNodeProperty TYPE_NAME = new ASTNodeProperty( "IASTCompositeTypeSpecifier.TYPE_NAME - IASTName for IASTCompositeTypeSpecifier"); //$NON-NLS-1$ /** * {@code MEMBER_DECLARATION} represents the relationship between an * {@code IASTCompositeTypeSpecifier} and its nested{@code IASTDeclaration}s. */ public static final ASTNodeProperty MEMBER_DECLARATION = new ASTNodeProperty( "IASTCompositeTypeSpecifier.MEMBER_DECLARATION - Nested IASTDeclaration for IASTCompositeTypeSpecifier"); //$NON-NLS-1$ /** * Returns the type (key) of this composite specifier. * * @return key for this type * @see #k_struct * @see #k_union */ public int getKey(); /** * Sets the type (key) of this composite specifier. * * @param key * @see #k_struct * @see #k_union */ public void setKey(int key); /** * Returns the name for this composite type. If this is an anonymous type, * this will return an empty name. * * @return the name of the type */ public IASTName getName(); /** * Sets the name for this composite type. * * @param name */ public void setName(IASTName name); /** * Returns a list of member declarations. * * @return List of IASTDeclaration */ public IASTDeclaration[] getMembers(); /** * Adds a member declaration. * * @param declaration */ public void addMemberDeclaration(IASTDeclaration declaration); /** * Returns the scope that this interface eludes to in the logical tree. */ public IScope getScope(); /** * @since 5.1 */ @Override public IASTCompositeTypeSpecifier copy(); }