All Downloads are FREE. Search and download functionalities are using the official Maven repository.

manifold.api.highjump.Symbol Maven / Gradle / Ivy

There is a newer version: 2024.1.42
Show newest version
/*
 * Copyright (c) 2019 - Manifold Systems LLC
 *
 * 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 manifold.api.highjump;

/**
 * Use {@code Symbol} to manage external symbols that can be directly referenced in dynamic scripts and expressions.
 */
public class Symbol
{
  private final String _uid;
  private final String _name;
  private final String _type;
  private final boolean _readOnly;
  private final Object _initialValue;
  private volatile Object _value;

  /**
   * Create a {@code Symbol} that can be directly referenced in a dynamic expression or script. Use with
   * {@link Highjump#evaluate(Options)}.
   *
   * @param uid Qualifies the {@code name} to uniquely identify this symbol. {@code uid} must strictly follow Java
   *            identifier naming rules (alphanumeric and underscore chars). Can be the empty string if no further
   *            qualification is necessary.
   * @param name The name of the symbol that will be directly referenced in the script or expression. {@code name} must
   *             strictly follow Java identifier naming rules (alphanumeric and underscore chars).
   * @param type The fully qualified name of the symbol's type, such as: {@code java.lang.String},
   *             {@code java.math.BigDecimal[]}, and {@code java.util.List}. Note the type must be
   *             non-primitive.
   * @param readOnly If true, indicates the symbol is read-only and the {@code initialValue} is constant.
   * @param initialValue The initial value of the symbol, may be {@code null).
   */
  public Symbol( String uid, String name, String type, boolean readOnly, Object initialValue )
  {
    _uid = uid;
    _name = name;
    _type = type;
    _readOnly = readOnly;
    _initialValue = initialValue;
  }

  /**
   * Same as: {@code new Symbol(uid, name, type, false, null)}
   * 

* {@link #Symbol(String, String, String, boolean, Object)} */ public Symbol( String uid, String name, String type ) { this( uid, name, type, false, null ); } public String getUid() { return _uid; } public String getName() { return _name; } public String getType() { return _type; } public boolean isReadOnly() { return _readOnly; } public Object getInitialValue() { return _initialValue; } public Object getValue() { return _value; } public void setValue( Object value ) { _value = value; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy