Package st.gravel.support.compiler.ast

Source Code of st.gravel.support.compiler.ast.ClassMapping$ClassMapping_Factory

package st.gravel.support.compiler.ast;

/*
  This file is automatically generated from typed smalltalk source. Do not edit by hand.
  (C) AG5.com
*/

import java.math.BigInteger;
import st.gravel.support.jvm.NonLocalReturn;
import st.gravel.support.compiler.ast.AbstractClassMapping;
import st.gravel.support.compiler.ast.AbstractClassMapping.AbstractClassMapping_Factory;
import st.gravel.support.compiler.ast.IdentityClassPartMapping;
import st.gravel.support.compiler.ast.ExtensionClassPartMapping;
import java.util.Map;
import st.gravel.support.compiler.ast.InstVarMapping;
import st.gravel.support.compiler.ast.ClassDescriptionNode;
import st.gravel.support.compiler.ast.SystemMapping;
import st.gravel.support.compiler.ast.BoundVariableDeclarationNode;
import java.util.Set;
import java.util.HashSet;
import st.gravel.support.compiler.ast.AbstractMethodMapping;
import st.gravel.support.compiler.ast.VariableDeclarationNode;
import st.gravel.support.compiler.ast.MethodNode;
import st.gravel.support.compiler.ast.Reference;

public class ClassMapping extends AbstractClassMapping implements Cloneable {

  public static ClassMapping_Factory factory = new ClassMapping_Factory();

  ExtensionClassPartMapping[] _extensions;

  IdentityClassPartMapping _identityMapping;

  Map<String, InstVarMapping> _instVarMappings;

  public static class ClassMapping_Factory extends AbstractClassMapping_Factory {

    public ClassMapping basicNew() {
      ClassMapping newInstance = new ClassMapping();
      newInstance.initialize();
      return newInstance;
    }

    public ClassMapping identityMapping_extensions_instVarMappings_classNode_(final IdentityClassPartMapping _anIdentityClassPartMapping, final ExtensionClassPartMapping[] _anArray, final Map<String, InstVarMapping> _aDictionary, final ClassDescriptionNode _aClassNode) {
      return ((ClassMapping) this.basicNew().initializeIdentityMapping_extensions_instVarMappings_classNode_(_anIdentityClassPartMapping, _anArray, _aDictionary, _aClassNode));
    }
  }

  static public ClassMapping _identityMapping_extensions_instVarMappings_classNode_(Object receiver, final IdentityClassPartMapping _anIdentityClassPartMapping, final ExtensionClassPartMapping[] _anArray, final Map<String, InstVarMapping> _aDictionary, final ClassDescriptionNode _aClassNode) {
    return factory.identityMapping_extensions_instVarMappings_classNode_(_anIdentityClassPartMapping, _anArray, _aDictionary, _aClassNode);
  }

  @Override
  public BoundVariableDeclarationNode[] allInstVarsIn_(final SystemMapping _aSystemMapping) {
    final BoundVariableDeclarationNode[] _arr;
    final ClassMapping _scm;
    _arr = this.boundInstVars();
    _scm = ((ClassMapping) this.superclassMappingIn_(_aSystemMapping));
    if (_scm != null) {
      return st.gravel.support.jvm.ArrayExtensions.copyWithAll_(_arr, _scm.allInstVarsIn_(_aSystemMapping));
    }
    return _arr;
  }

  public java.util.Set<st.gravel.core.Symbol> allSelectorsIn_(final SystemMapping _aSystemMapping) {
    final java.util.Set<st.gravel.core.Symbol> _set;
    final ClassMapping _scm;
    _set = new java.util.HashSet();
    _set.addAll(this.selectors());
    _scm = ((ClassMapping) this.superclassMappingIn_(_aSystemMapping));
    if (_scm != null) {
      _set.addAll(_scm.allSelectorsIn_(_aSystemMapping));
    }
    return _set;
  }

  public BoundVariableDeclarationNode[] boundInstVars() {
    return _classNode.boundInstVars();
  }

  public ClassMapping copy() {
    try {
      ClassMapping _temp1 = (ClassMapping) this.clone();
      _temp1.postCopy();
      return _temp1;
    } catch (CloneNotSupportedException e) {
      throw new RuntimeException(e);
    }
  }

  public AbstractMethodMapping extensionMethodMappingAt_ifAbsent_(final st.gravel.core.Symbol _aSymbol, final st.gravel.support.jvm.Block0<AbstractMethodMapping> _aBlock) {
    for (final ExtensionClassPartMapping _ex : _extensions) {
      final AbstractMethodMapping _m;
      _m = _ex.methodMappingAt_ifAbsent_(_aSymbol, ((st.gravel.support.jvm.Block0<AbstractMethodMapping>) (new st.gravel.support.jvm.Block0<AbstractMethodMapping>() {

        @Override
        public AbstractMethodMapping value() {
          return (AbstractMethodMapping) null;
        }
      })));
      if (_m != null) {
        return _m;
      }
    }
    return _aBlock.value();
  }

  public ExtensionClassPartMapping[] extensions() {
    return _extensions;
  }

  public ClassMapping_Factory factory() {
    return factory;
  }

  @Override
  public Class identityClass() {
    return _identityMapping.javaClass();
  }

  public IdentityClassPartMapping identityMapping() {
    return _identityMapping;
  }

  public ClassMapping initializeIdentityMapping_extensions_instVarMappings_classNode_(final IdentityClassPartMapping _anIdentityClassPartMapping, final ExtensionClassPartMapping[] _anArray, final Map<String, InstVarMapping> _aDictionary, final ClassDescriptionNode _aClassNode) {
    _identityMapping = _anIdentityClassPartMapping;
    _extensions = _anArray;
    _instVarMappings = _aDictionary;
    _classNode = _aClassNode;
    this.initialize();
    return this;
  }

  public Map<String, InstVarMapping> instVarMappings() {
    return _instVarMappings;
  }

  public VariableDeclarationNode[] instVars() {
    return _classNode.instVars();
  }

  public AbstractMethodMapping methodMappingAt_ifAbsent_(final st.gravel.core.Symbol _aSymbol, final st.gravel.support.jvm.Block0<AbstractMethodMapping> _aBlock) {
    return _identityMapping.methodMappingAt_ifAbsent_(_aSymbol, ((st.gravel.support.jvm.Block0<AbstractMethodMapping>) (new st.gravel.support.jvm.Block0<AbstractMethodMapping>() {

      @Override
      public AbstractMethodMapping value() {
        return (AbstractMethodMapping) ClassMapping.this.extensionMethodMappingAt_ifAbsent_(_aSymbol, _aBlock);
      }
    })));
  }

  public ClassMapping pvtSetClassNode_(final ClassDescriptionNode _aClassDescriptionNode) {
    _classNode = _aClassDescriptionNode;
    return this;
  }

  public ClassMapping pvtSetExtensions_(final ExtensionClassPartMapping[] _anArray) {
    _extensions = _anArray;
    return this;
  }

  public ClassMapping pvtSetIdentityMapping_(final IdentityClassPartMapping _anObject) {
    _identityMapping = _anObject;
    return this;
  }

  public java.util.Set<st.gravel.core.Symbol> selectors() {
    final java.util.Set<st.gravel.core.Symbol>[] _set;
    _set = new java.util.Set[1];
    _set[0] = new java.util.HashSet();
    for (final MethodNode _each : _classNode.methods()) {
      _set[0].add(st.gravel.core.Symbol.value(_each.selector()));
    }
    return _set[0];
  }

  public Reference superclassReferenceForMethodLookup() {
    return _classNode.superclassReferenceForMethodLookup();
  }

  public ClassMapping withClassNode_(final ClassDescriptionNode _aClassDescriptionNode) {
    return this.copy().pvtSetClassNode_(_aClassDescriptionNode);
  }

  public ClassMapping withExtensions_(final ExtensionClassPartMapping[] _anArray) {
    return this.copy().pvtSetExtensions_(_anArray);
  }

  public ClassMapping withExtension_(final ExtensionClassPartMapping _anExtensionClassPartMapping) {
    return this.withExtensions_(st.gravel.support.jvm.ArrayExtensions.copyWith_(_extensions, _anExtensionClassPartMapping));
  }

  public ClassMapping withoutMethodMapping_(final String _aSelector) {
    ClassMapping _temp1 = this.copy();
    _temp1.pvtSetIdentityMapping_(_identityMapping.withoutMethodMapping_(_aSelector));
    return _temp1.pvtSetExtensions_(st.gravel.support.jvm.ArrayExtensions.collect_(_extensions, ((st.gravel.support.jvm.Block1<ExtensionClassPartMapping, ExtensionClassPartMapping>) (new st.gravel.support.jvm.Block1<ExtensionClassPartMapping, ExtensionClassPartMapping>() {

      @Override
      public ExtensionClassPartMapping value_(final ExtensionClassPartMapping _each) {
        return (ExtensionClassPartMapping) _each.withoutMethodMapping_(_aSelector);
      }
    }))));
  }
}
TOP

Related Classes of st.gravel.support.compiler.ast.ClassMapping$ClassMapping_Factory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.