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

eu.mihosoft.vmf.vmftext.grammar.RuleClass Maven / Gradle / Ivy


package eu.mihosoft.vmf.vmftext.grammar;

// vmf imports
//import eu.mihosoft.vmf.runtime.core.*;
import eu.mihosoft.vcollections.*;

// property types imports

// interface

/**
 * A representation of the model object {@code eu.mihosoft.vmf.vmftext.grammar.RuleClass}.
 *
 * 
 * 
 *
 */
public interface RuleClass extends eu.mihosoft.vmf.runtime.core.VObject, WithName,CodeElement, Cloneable, eu.mihosoft.vmf.runtime.core.Mutable {


  /**
   * Returns the value of the 'childClasses' containment list.
   *
   * It is bidirectional and its opposite is '{@link RuleClass#getSuperClass() superClass}'.
   *
   * 
   * 
   *
   * @return the value of the 'childClasses' containment list.
   */
  eu.mihosoft.vcollections.VList getChildClasses();




  /**
   * Returns the value of the 'customProperties' containment list.
   *
   * It is bidirectional and its opposite is '{@link Property#getParent() parent}'.
   *
   * 
   * 
   *
   * @return the value of the 'customProperties' containment list.
   */
  eu.mihosoft.vcollections.VList getCustomProperties();




  /**
   * Returns the value of the 'customRuleAnnotations' containment list.
   *
   * It is bidirectional and its opposite is '{@link RuleAnnotation#getParent() parent}'.
   *
   * 
   * 
   *
   * @return the value of the 'customRuleAnnotations' containment list.
   */
  eu.mihosoft.vcollections.VList getCustomRuleAnnotations();




  /**
   * Returns the value of the 'delegationMethods' containment list.
   *
   * It is bidirectional and its opposite is '{@link DelegationMethod#getParent() parent}'.
   *
   * 
   * 
   *
   * @return the value of the 'delegationMethods' containment list.
   */
  eu.mihosoft.vcollections.VList getDelegationMethods();




   /**
   * Returns the value of the 'model' containment reference.
   *
   * It is bidirectional and its opposite is '{@link eu.mihosoft.vmf.vmftext.grammar.GrammarModel#getParent() parent}'.
   *
   * 
   * 
   *
   * @return the value of the 'model' containment reference.
   * @see RuleClass#setModel(eu.mihosoft.vmf.vmftext.grammar.GrammarModel)
   */
  eu.mihosoft.vmf.vmftext.grammar.GrammarModel getModel();

 /**
  * Sets the value of the 'model' property.
  *
  * 
  * 
  *
  * @param model the value to set
  * @see RuleClass#getModel()
  */
  void setModel(eu.mihosoft.vmf.vmftext.grammar.GrammarModel model);



  /**
   * Returns the value of the 'properties' containment list.
   *
   * It is bidirectional and its opposite is '{@link Property#getParent() parent}'.
   *
   * 
   * 
   *
   * @return the value of the 'properties' containment list.
   */
  eu.mihosoft.vcollections.VList getProperties();




   /**
   * Returns the value of the 'root' property.
   *
   * 
   * 
   *
   * @return the value of the 'root' property.
   * @see RuleClass#setRoot(boolean)
   */
 boolean isRoot();

 /**
  * Sets the value of the 'root' property.
  *
  * 
  * 
  *
  * @param root the value to set
  * @see RuleClass#isRoot()
  */
  void setRoot(boolean root);



/**
 * Returns the value of the 'superClass' container reference.
 *
 * It is bidirectional and its opposite is '{@link eu.mihosoft.vmf.vmftext.grammar.RuleClass#getChildClasses() childClasses}'.
 *
 * 
 * 
 *
 * @return the value of the 'superClass' container reference.
 * @see RuleClass#setSuperClass(eu.mihosoft.vmf.vmftext.grammar.RuleClass)
 */
 eu.mihosoft.vmf.vmftext.grammar.RuleClass getSuperClass();

 /**
  * Sets the value of the 'superClass' property.
  *
  * 
  * 
  *
  * @param superClass the value to set
  * @see RuleClass#getSuperClass()
  */
  void setSuperClass(eu.mihosoft.vmf.vmftext.grammar.RuleClass superClass);



   /**
   * Returns the value of the 'superInterfaces' property.
   *
   * 
   * 
   *
   * @return the value of the 'superInterfaces' property.
   */
 eu.mihosoft.vcollections.VList getSuperInterfaces();




// --------------------------------------------------------------------
// --- declaration of delegation methods
// --------------------------------------------------------------------

  public java.lang.String nameWithLower();
  public java.lang.String nameWithUpper();
  public java.lang.String superInterfacesString();



// --------------------------------------------------------------------
// --- Builder methods
// --------------------------------------------------------------------

  public static interface Builder {

    /**
     * Sets the 'childClasses' property of this builder.
     * @param childClasses value to set
     * @return this builder
     */
    public Builder withChildClasses(eu.mihosoft.vcollections.VList childClasses);
    /**
     * Sets the 'codeRange' property of this builder.
     * @param codeRange value to set
     * @return this builder
     */
    public Builder withCodeRange(eu.mihosoft.vmf.vmftext.grammar.CodeRange codeRange);
    /**
     * Sets the 'customProperties' property of this builder.
     * @param customProperties value to set
     * @return this builder
     */
    public Builder withCustomProperties(eu.mihosoft.vcollections.VList customProperties);
    /**
     * Sets the 'customRuleAnnotations' property of this builder.
     * @param customRuleAnnotations value to set
     * @return this builder
     */
    public Builder withCustomRuleAnnotations(eu.mihosoft.vcollections.VList customRuleAnnotations);
    /**
     * Sets the 'delegationMethods' property of this builder.
     * @param delegationMethods value to set
     * @return this builder
     */
    public Builder withDelegationMethods(eu.mihosoft.vcollections.VList delegationMethods);
    /**
     * Sets the 'model' property of this builder.
     * @param model value to set
     * @return this builder
     */
    public Builder withModel(eu.mihosoft.vmf.vmftext.grammar.GrammarModel model);
    /**
     * Sets the 'name' property of this builder.
     * @param name value to set
     * @return this builder
     */
    public Builder withName(java.lang.String name);
    /**
     * Sets the 'properties' property of this builder.
     * @param properties value to set
     * @return this builder
     */
    public Builder withProperties(eu.mihosoft.vcollections.VList properties);
    /**
     * Sets the 'root' property of this builder.
     * @param root value to set
     * @return this builder
     */
    public Builder withRoot(boolean root);
    /**
     * Sets the 'superInterfaces' property of this builder.
     * @param superInterfaces value to set
     * @return this builder
     */
    public Builder withSuperInterfaces(eu.mihosoft.vcollections.VList superInterfaces);

  /**
   * Builds a new '{@link eu.mihosoft.vmf.vmftext.grammar.RuleClass RuleClass}' instance.
   * @return a new '{@link eu.mihosoft.vmf.vmftext.grammar.RuleClass RuleClass}' instance
   */
  public RuleClass build();

    /**
     * Defines whether to append collections rather than replacing them in the
     * {@link #applyFrom(RuleClass)} and {@link #applyTo(RuleClass)} methods.
     * @param value that indicates whether to append collections
     * @return this builder
     */
    public Builder appendCollections(boolean value);

    /**
     * Applies all properties from the specified object to this builder.
     * @param o object to apply properties from
     * @return this builder
     * @see #applyTo(RuleClass)
     */
    public Builder applyFrom(RuleClass o);

    /**
     * Applies all properties from this builder to the specified object.
     * @param o object to apply properties to
     * @return this builder
     * @see #applyFrom(RuleClass)
     */
    public Builder applyTo(RuleClass o);

  } // end class Builder

  /**
   * Returns a new builder for creating a '{@link eu.mihosoft.vmf.vmftext.grammar.RuleClass RuleClass}' instance.
   * @return a new builder for creating a '{@link eu.mihosoft.vmf.vmftext.grammar.RuleClass RuleClass}' instance
   */
  static Builder newBuilder() {
    return __VMF__RuleClass_Creator.newBuilderInstance();
  } // end newBuilder()


  /**
   * Creates a new instance of '{@link RuleClass RuleClass}'
   * @return a new instance of '{@link RuleClass RuleClass}'
   */
  static RuleClass newInstance() {

    return __VMF__RuleClass_Creator.newInstance();


  }

  /**
   * Returns a read-only wrapper of '{@link RuleClass RuleClass}'
   * @return a read-only wrapper of '{@link RuleClass RuleClass}'
   */
  ReadOnlyRuleClass asReadOnly();

  /**
   * Returns a deep clone of this object.
   * @return a deep clone of this object
   */
  @Override
  RuleClass clone() /*throws CloneNotSupportedException*/;

}

/*
 *  Creates instances of type {@codeeu.mihosoft.vmf.vmftext.grammar.impl.RuleClassImpl}. Method handles
 *  and class objects are lazily initialized and cached since repetitive and high frequent usage is likely.
 *
 *  This class is used to gain efficient avvess to private classes from the impl package.
 */
class __VMF__RuleClass_Creator {

    static Class cls;
    static java.lang.reflect.Constructor constructor;
    static java.lang.invoke.MethodHandles.Lookup lookup;
    static java.lang.invoke.MethodHandle constructorMH;

    static RuleClass newInstance() {
        try {

            if(cls==null) {
                cls = Class.forName("eu.mihosoft.vmf.vmftext.grammar.impl.RuleClassImpl");

                if(lookup==null) { lookup = java.lang.invoke.MethodHandles.lookup(); }

                constructor = cls.getConstructor();
                constructor.setAccessible(true);

                constructorMH = lookup.unreflectConstructor(constructor);
            }

            return (RuleClass) constructorMH.invoke();

        } catch (Throwable tr) {
            throw new RuntimeException("Cannot instantiate \"eu.mihosoft.vmf.vmftext.grammar.impl.RuleClassImpl\"", tr);
        }
    }

    static Class builderCls;
    static java.lang.reflect.Constructor builderConstructor;
    static java.lang.invoke.MethodHandle builderConstructorMH;

    static RuleClass.Builder newBuilderInstance() {
        try {
            if(builderCls==null) {
                builderCls = Class.forName("eu.mihosoft.vmf.vmftext.grammar.impl.RuleClassImpl$BuilderImpl");

                if(lookup==null) { lookup = java.lang.invoke.MethodHandles.lookup(); }

                builderConstructor = builderCls.getConstructor();
                builderConstructor.setAccessible(true);

                builderConstructorMH = lookup.unreflectConstructor(builderConstructor);
            }

            return (RuleClass.Builder) builderConstructorMH.invoke();

        } catch (Throwable tr) {
            throw new RuntimeException("Cannot instantiate \"eu.mihosoft.vmf.vmftext.grammar.impl.RuleClassImpl\"", tr);
        }
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy