/*******************************************************************************
* Copyright (c) 2002, 2008 QNX Software Systems 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:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.model;
import org.eclipse.cdt.core.model.IStructure;
import org.eclipse.cdt.core.model.ICModelStatus;
/**
* Implements functionality common to
* operations that create type members.
*/
public abstract class CreateMemberOperation extends CreateElementInTUOperation {
/**
* The element Name
*/
protected String fName;
/**
* Element Type;
*/
protected String fReturnType;
/**
* The name of the <code>DOMNode</code> that may be used to
* create this new element.
* Used by the <code>CopyElementsOperation</code> for renaming
*/
protected String fAlteredName;
/**
* When executed, this operation will create a type member
* in the given parent element with the specified source.
*/
public CreateMemberOperation(IStructure parentElement, String name, String returnType, boolean force) {
super(parentElement);
fName = name;
fReturnType = returnType;
fForce= force;
}
/**
* Returns the IType the member is to be created in.
*/
protected IStructure getStructure() {
return (IStructure)getParentElement();
}
/**
* Sets the name of the <code>DOMNode</code> that will be used to
* create this new element.
* Used by the <code>CopyElementsOperation</code> for renaming
*/
@Override
protected void setAlteredName(String newName) {
fAlteredName = newName;
}
/**
* Possible failures: <ul>
* <li>NO_ELEMENTS_TO_PROCESS - the parent element supplied to the operation is
* <code>null</code>.
* <li>INVALID_CONTENTS - The source is <code>null</code> or has serious syntax errors.
* <li>NAME_COLLISION - A name collision occurred in the destination
* </ul>
*/
@Override
public ICModelStatus verify() {
ICModelStatus status = super.verify();
if (!status.isOK()) {
return status;
}
if (!fForce) {
//check for name collisions
//if (node == null) {
// return new CModelStatus(ICModelStatusConstants.INVALID_CONTENTS);
// }
//} catch (CModelException jme) {
//}
return verifyNameCollision();
}
return CModelStatus.VERIFIED_OK;
}
/**
* Verify for a name collision in the destination container.
*/
protected ICModelStatus verifyNameCollision() {
return CModelStatus.VERIFIED_OK;
}
}