/* * #%L * Native ARchive plugin for Maven * %% * Copyright (C) 2002 - 2014 NAR Maven Plugin developers. * %% * 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. * #L% */ package com.github.maven_nar.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"); } /** * Gets arch. * * @return arch, may be null. * */ public ArchEnum getArch() { if (isReference()) { final TargetDef refPlatform = (TargetDef) getCheckedRef(TargetDef.class, "TargetDef"); return refPlatform.getArch(); } return this.arch; } /** * Gets cpu. * * @return cpu, may be null. * */ public CPUEnum getCpu() { if (isReference()) { final TargetDef refPlatform = (TargetDef) getCheckedRef(TargetDef.class, "TargetDef"); return refPlatform.getCpu(); } return this.cpu; } /** * Gets operating system family. * * @return os family, may be null. * */ public OSFamilyEnum getOsfamily() { if (isReference()) { final TargetDef refPlatform = (TargetDef) getCheckedRef(TargetDef.class, "TargetDef"); return refPlatform.getOsfamily(); } return this.osFamily; } /** * 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(), this.ifCond, this.unlessCond); } /** * Sets cpu architecture, compiler may use cpu specific instructions. * * @param value * new value */ public void setArch(final ArchEnum value) { if (isReference()) { throw tooManyAttributes(); } if (this.cpu != null) { throw tooManyAttributes(); } this.arch = value; } /** * Sets preferred cpu, but does not use cpu specific instructions. * * @param value * new value */ public void setCpu(final CPUEnum value) { if (isReference()) { throw tooManyAttributes(); } this.cpu = value; } /** * Sets a description of the current data type. * * @param desc * description */ @Override 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) { this.ifCond = propName; } /** * Sets operating system family. * * @param value * new value */ public void setOsfamily(final OSFamilyEnum value) { if (isReference()) { throw tooManyAttributes(); } if (this.cpu != null) { throw tooManyAttributes(); } this.osFamily = value; } /** * 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 */ @Override 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) { this.unlessCond = propName; } }