content: /*
   *
   *
   *    Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.
   *    See the NOTICE file distributed with this work for additional information regarding copyright ownership.
   *    The ASF licenses this file to You 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 eu.amidst.dynamic.examples.variables;
  
  import eu.amidst.core.variables.Variable;
  import eu.amidst.dynamic.variables.DynamicVariables;
  
  import java.util.Arrays;
  
  /**
   * This example show the basic functionalities related to dynamic variables.
   */
  public class DynamicVariablesExample {
  
      public static void main(String[] args) throws Exception {
  
          //Create an empty DynamicVariables object
          DynamicVariables variables = new DynamicVariables();
  
          //Invoke the "new" methods of the object DynamicVariables to create new dynamic variables.
  
          //Create a Gaussian dynamic variables
          Variable gaussianVar = variables.newGaussianDynamicVariable("GaussianVar");
  
          //Create a Multinomial dynamic variable with two states
          Variable multinomialVar = variables.newMultinomialDynamicVariable("MultinomialVar", 2);
  
          //Create a Multinomial dynamic variable with two states: TRUE and FALSE
          Variable multinomialVar2 = variables.newMultinomialDynamicVariable("MultinomialVar2", Arrays.asList("TRUE, FALSE"));
  
          //We must block the object before we start to query.
          variables.block();
  
          //All dynamic Variables have an interface variable
          Variable gaussianVarInt = gaussianVar.getInterfaceVariable();
          Variable multinomialVarInt = multinomialVar.getInterfaceVariable();
  
          //Get the "main" Variable associated with each interface variable through the DynamicVariable object
          Variable mainMultinomialVar = variables.getVariableFromInterface(multinomialVarInt);
  
          //Check whether a variable is an interface variable
          System.out.println("Is Variable "+gaussianVar.getName()+" an interface variable? "
                  +gaussianVar.isInterfaceVariable());
          System.out.println("Is Variable "+gaussianVarInt.getName()+" an interface variable? "
                  +gaussianVarInt.isInterfaceVariable());
  
          //Check whether a variable is a dynamic variable
          System.out.println("Is Variable "+multinomialVar.getName()+" a dynamic variable? "
                  +gaussianVar.isDynamicVariable());
      }
  }
  