/* * * Copyright 2004 The Ant-Contrib project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.sf.antcontrib.cpptasks; import org.apache.tools.ant.types.DataType; import org.apache.tools.ant.types.Reference; /** * Information on the execution platforms for the generated code. * (Non-functional prototype) * */ public final class TargetDef extends DataType { /** * if property. */ private String ifCond; /** * unless property. */ private String unlessCond; /** * cpu. * */ private CPUEnum cpu; /** * architecture. * */ private ArchEnum arch; /** * OS Family. * */ private OSFamilyEnum osFamily; /** * Constructor. * */ public TargetDef() { } /** * Bogus method required for documentation generation. */ public void execute() { throw new org.apache.tools.ant.BuildException( "Not an actual task, but looks like one for documentation purposes"); } /** * Returns true if the define's if and unless conditions (if any) are * satisfied. * @return true if active */ public boolean isActive() { return CUtil.isActive(getProject(), ifCond, unlessCond); } /** * Sets a description of the current data type. * @param desc description */ public void setDescription(final String desc) { super.setDescription(desc); } /** * Sets an id that can be used to reference this element. * * @param id * id */ public void setId(final String id) { // // this is actually accomplished by a different // mechanism, but we can document it // } /** * Sets the property name for the 'if' condition. * * The define will be ignored unless the property is defined. * * The value of the property is insignificant, but values that would imply * misinterpretation ("false", "no") will throw an exception when * evaluated. * * @param propName * property name */ public void setIf(final String propName) { ifCond = propName; } /** * Specifies that this element should behave as if the content of the * element with the matching id attribute was inserted at this location. If * specified, no other attributes should be specified. * @param r id of referenced target */ public void setRefid(final Reference r) { super.setRefid(r); } /** * Set the property name for the 'unless' condition. * * If named property is set, the define will be ignored. * * The value of the property is insignificant, but values that would imply * misinterpretation ("false", "no") of the behavior will throw an * exception when evaluated. * * @param propName * name of property */ public void setUnless(final String propName) { unlessCond = propName; } /** * Gets cpu. * @return cpu, may be null. * */ public CPUEnum getCpu() { if (isReference()) { TargetDef refPlatform = (TargetDef) getCheckedRef(TargetDef.class, "TargetDef"); return refPlatform.getCpu(); } return cpu; } /** * Gets arch. * @return arch, may be null. * */ public ArchEnum getArch() { if (isReference()) { TargetDef refPlatform = (TargetDef) getCheckedRef(TargetDef.class, "TargetDef"); return refPlatform.getArch(); } return arch; } /** * Gets operating system family. * @return os family, may be null. * */ public OSFamilyEnum getOsfamily() { if (isReference()) { TargetDef refPlatform = (TargetDef) getCheckedRef(TargetDef.class, "TargetDef"); return refPlatform.getOsfamily(); } return osFamily; } /** * Sets preferred cpu, but does not use cpu specific instructions. * @param value new value */ public void setCpu(final CPUEnum value) { if (isReference()) { throw tooManyAttributes(); } cpu = value; } /** * Sets cpu architecture, compiler may use cpu specific instructions. * @param value new value */ public void setArch(final ArchEnum value) { if (isReference()) { throw tooManyAttributes(); } if (cpu != null) { throw tooManyAttributes(); } arch = value; } /** * Sets operating system family. * @param value new value */ public void setOsfamily(final OSFamilyEnum value) { if (isReference()) { throw tooManyAttributes(); } if (cpu != null) { throw tooManyAttributes(); } osFamily = value; } }