View Javadoc

1   /*
2    * #%L
3    * Native ARchive plugin for Maven
4    * %%
5    * Copyright (C) 2002 - 2014 NAR Maven Plugin developers.
6    * %%
7    * Licensed under the Apache License, Version 2.0 (the "License");
8    * you may not use this file except in compliance with the License.
9    * You may obtain a copy of the License at
10   * 
11   * http://www.apache.org/licenses/LICENSE-2.0
12   * 
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the License for the specific language governing permissions and
17   * limitations under the License.
18   * #L%
19   */
20  package com.github.maven_nar.cpptasks;
21  
22  import org.apache.tools.ant.types.EnumeratedAttribute;
23  
24  /**
25   * Enumeration of optimization levels (experimental).
26   *
27   * @author Curt Arnold
28   *
29   */
30  public final class OptimizationEnum extends EnumeratedAttribute {
31    /**
32     * Constructor.
33     *
34     * Set by default to "speed"
35     *
36     * @see java.lang.Object#Object()
37     */
38    public OptimizationEnum() {
39      setValue("speed");
40    }
41  
42    /**
43     * Gets list of acceptable values.
44     *
45     * @see org.apache.tools.ant.types.EnumeratedAttribute#getValues()
46     */
47    @Override
48    public String[] getValues() {
49      return new String[] {
50          "none", "size", "minimal", "speed", "full", "aggressive", "extreme", "unsafe"
51      };
52    }
53  
54    /**
55     * Is no optimization performed.
56     * 
57     * @return boolean true if no optimization is performed.
58     */
59    public boolean isNoOptimization() {
60      return "none".equals(getValue());
61    }
62  
63    /**
64     * Is size optimized.
65     * 
66     * @return boolean true if size is optimized.
67     */
68    public boolean isSize() {
69      return "size".equals(getValue());
70    }
71  
72    /**
73     * Is speed optimized.
74     * 
75     * @return boolean true if speed is optimized.
76     */
77    public boolean isSpeed() {
78      return !isSize() && !isNoOptimization();
79    }
80  
81  }