Class GosuClassTypeInfo

All Implemented Interfaces:
IGosuClassTypeInfo, IAnnotatedFeatureInfo, IAttributedFeatureInfo, IFeatureInfo, IRelativeTypeInfo, ITypeInfo

public class GosuClassTypeInfo extends BaseTypeInfo implements IGosuClassTypeInfo
  • Field Details

  • Constructor Details

  • Method Details

    • pushIncludeAll

      public static void pushIncludeAll()
    • popIncludeAll

      public static void popIncludeAll()
    • isIncludeAll

      public static boolean isIncludeAll()
    • forceInit

      public void forceInit()
    • isStatic

      public boolean isStatic()
      Description copied from interface: IAttributedFeatureInfo
      True if this feature is static, meaning the feature is not specific to a particular instance of the feature's containing type.
      Specified by:
      isStatic in interface IAttributedFeatureInfo
      Overrides:
      isStatic in class BaseTypeInfo
    • isPrivate

      public boolean isPrivate()
      Description copied from interface: IAttributedFeatureInfo
      True if this feature is private. Private features are only accessible from within the type that owns them.
      Specified by:
      isPrivate in interface IAttributedFeatureInfo
      Overrides:
      isPrivate in class BaseFeatureInfo
    • isInternal

      public boolean isInternal()
      Description copied from interface: IAttributedFeatureInfo
      True if this feature is internal. Internal features are accessible from within the type that owns them and from other types in the same namespace.
      Specified by:
      isInternal in interface IAttributedFeatureInfo
      Overrides:
      isInternal in class BaseFeatureInfo
    • isProtected

      public boolean isProtected()
      Description copied from interface: IAttributedFeatureInfo
      True if this feature is protected. Protected features are accessible from within the type that owns them and from derived containers.
      Specified by:
      isProtected in interface IAttributedFeatureInfo
      Overrides:
      isProtected in class BaseFeatureInfo
    • isPublic

      public boolean isPublic()
      Description copied from interface: IAttributedFeatureInfo
      True if this feature is public. Public features are not restricted.
      Specified by:
      isPublic in interface IAttributedFeatureInfo
      Overrides:
      isPublic in class BaseFeatureInfo
    • isDeprecated

      public boolean isDeprecated()
      Specified by:
      isDeprecated in interface IAnnotatedFeatureInfo
      Overrides:
      isDeprecated in class BaseFeatureInfo
      Returns:
      True if this feature is deprecated.
    • getDeclaredAnnotations

      public List<IAnnotationInfo> getDeclaredAnnotations()
      Specified by:
      getDeclaredAnnotations in interface IAnnotatedFeatureInfo
      Overrides:
      getDeclaredAnnotations in class BaseTypeInfo
      Returns:
      A map of AnnotationInfo objects by type representing all the annotations associated with this feature, or an empty map if there are no annotations.
    • getDeclaredMethods

      public List<? extends IMethodInfo> getDeclaredMethods()
      Description copied from interface: IRelativeTypeInfo
      Returns a list of IMethodInfo objects reflecting all the methods declared by the class or interface represented by this IType object. This includes public, protected, internal access, and private methods, but excludes inherited methods. The elements in the list are ordered by declaration order in the file. This method returns an empty list if the type does not contain any methods
      Specified by:
      getDeclaredMethods in interface IRelativeTypeInfo
      Returns:
      the list of IMethodInfo objects representing all the declared methods of this class
    • getDeclaredProperties

      public List<? extends IPropertyInfo> getDeclaredProperties()
      Description copied from interface: IRelativeTypeInfo
      Returns a list of IPropertyInfo objects reflecting all the properties declared by the class or interface represented by this IType object. This includes public, protected, internal access, and private properties, but excludes inherited properties. The elements in the list are ordered by declaration order in the file. This method returns an empty list if the type does not contain any properties
      Specified by:
      getDeclaredProperties in interface IRelativeTypeInfo
      Returns:
      the list of IPropertyInfo objects representing all the declared properties of this class
    • getDeclaredConstructors

      public List<? extends IConstructorInfo> getDeclaredConstructors()
      Description copied from interface: IRelativeTypeInfo
      Returns a list of IConstructorInfo objects reflecting all the constructors declared by the class represented by this IType object. This includes public, protected, internal access, and private constructors. Interfaces and arrays always return an empty list. The elements in the list are ordered by declaration order in the file. This method returns an empty list if the type does not contain any methods
      Specified by:
      getDeclaredConstructors in interface IRelativeTypeInfo
      Returns:
      the list of IConstructorInfo objects representing all the declared methods of this class
    • getName

      public String getName()
      Description copied from interface: IFeatureInfo
      Gets the programmatic name or identifier of this feature. Note this name should follow Java identifier naming conventions (alpha-num and underscores, but can't start with a digit).
      Specified by:
      getName in interface IFeatureInfo
      Overrides:
      getName in class BaseTypeInfo
    • getAccessibilityForType

      public IRelativeTypeInfo.Accessibility getAccessibilityForType(IType whosaskin)
      Specified by:
      getAccessibilityForType in interface IRelativeTypeInfo
    • getProperties

      public List<? extends IPropertyInfo> getProperties()
      Specified by:
      getProperties in interface ITypeInfo
      Overrides:
      getProperties in class BaseTypeInfo
      Returns:
      An unmodifiable random access list of IPropertyInfo instances. The list is sorted ascending by name. Returns an empty list if there are no properties.
    • getProperties

      public List<IPropertyInfo> getProperties(IType whosAskin)
      Specified by:
      getProperties in interface IRelativeTypeInfo
    • getProperty

      public IPropertyInfo getProperty(CharSequence propName)
      Description copied from interface: ITypeInfo
      Get a property mapped to the specified name.
      Specified by:
      getProperty in interface ITypeInfo
      Overrides:
      getProperty in class BaseTypeInfo
      Parameters:
      propName - The property name.
      Returns:
      An IPropertyInfo corresponding to the property name.
    • getProperty

      public IPropertyInfo getProperty(IType whosAskin, CharSequence propName)
      Specified by:
      getProperty in interface IRelativeTypeInfo
    • getMethods

      public MethodList getMethods()
      Specified by:
      getMethods in interface ITypeInfo
      Overrides:
      getMethods in class BaseTypeInfo
      Returns:
      An unmodifiable random access list of IMethodInfo instances. The list is sorted ascending by name. Returns an empty list if there are no methods.
    • getMethods

      public MethodList getMethods(IType whosAskin)
      Specified by:
      getMethods in interface IRelativeTypeInfo
    • getConstructors

      public List<GosuConstructorInfo> getConstructors()
      Specified by:
      getConstructors in interface ITypeInfo
      Overrides:
      getConstructors in class BaseTypeInfo
      Returns:
      An unmodifiable random access list of IConstructorInfo instances. The list is sorted ascending by name. Returns an empty list if there are no constructors.
    • getConstructors

      public List<GosuConstructorInfo> getConstructors(IType whosAskin)
      Specified by:
      getConstructors in interface IRelativeTypeInfo
    • getMethod

      public IMethodInfo getMethod(CharSequence methodName, IType... params)
      Description copied from interface: ITypeInfo
      Returns a IMethodInfo matching the specified name and parameter types or null if no match is found.

      Note params must exactly match those of the target method in number, order, and type. If null, params is treated as an empty array.

      Specified by:
      getMethod in interface ITypeInfo
      Overrides:
      getMethod in class BaseTypeInfo
      Parameters:
      methodName - The name of the method to find.
      params - Represents the exact number, order, and type of parameters in the method. A null value here is treated as an empty array.
      Returns:
      A IMethodInfo matching the name and parameter types.
    • getMethod

      public IMethodInfo getMethod(IType whosaskin, CharSequence methodName, IType... params)
      Specified by:
      getMethod in interface IRelativeTypeInfo
    • getConstructor

      public IConstructorInfo getConstructor(IType... params)
      Description copied from interface: ITypeInfo
      Returns a IConstructorInfo that has parameter types that produce the best match.

      If there is a tie with method names then this will throw an illegal argument exception.

      Specified by:
      getConstructor in interface ITypeInfo
      Overrides:
      getConstructor in class BaseTypeInfo
      Parameters:
      params - Represents the exact number, order, and type of parameters in the constructor. A null value here is treated as an empty array.
      Returns:
      A IConstructorInfo matching the parameter types.
    • getConstructor

      public IConstructorInfo getConstructor(IType whosAskin, IType[] params)
      Specified by:
      getConstructor in interface IRelativeTypeInfo
    • getCallableMethod

      public IMethodInfo getCallableMethod(CharSequence strMethod, IType... params)
      Description copied from interface: ITypeInfo
      Returns a IMethodInfo matching the specified name and has parameter types that produce the best match.

      If there is a tie with method names then this will throw an illegal argument exception.

      Specified by:
      getCallableMethod in interface ITypeInfo
      Overrides:
      getCallableMethod in class BaseTypeInfo
      Parameters:
      strMethod - The name of the method to find.
      params - Represents the exact number, order, and type of parameters in the method. A null value here is treated as an empty array.
      Returns:
      A IMethodInfo matching the name and parameter types.
    • getCallableConstructor

      public IConstructorInfo getCallableConstructor(IType... params)
      Description copied from interface: ITypeInfo
      Returns a IConstructorInfo matching the specified parameter types or null if no match is found.
      Specified by:
      getCallableConstructor in interface ITypeInfo
      Overrides:
      getCallableConstructor in class BaseTypeInfo
      Parameters:
      params - Represents the exact number, order, and type of parameters in the constructor. A null value here is treated as an empty array.
      Returns:
      A IConstructorInfo matching the parameter types.
    • getEvents

      public List<IEventInfo> getEvents()
      Specified by:
      getEvents in interface ITypeInfo
      Overrides:
      getEvents in class BaseTypeInfo
      Returns:
      An unmodifiable random access list of IEventInfo instances. The list is sorted ascending by name. Returns an empty list if ther are no events.
    • getEvent

      public IEventInfo getEvent(CharSequence strEvent)
      Description copied from interface: ITypeInfo
      Get an event mapped to the specified name.
      Specified by:
      getEvent in interface ITypeInfo
      Overrides:
      getEvent in class BaseTypeInfo
      Parameters:
      strEvent - The event name.
      Returns:
      An IEventInfo corresponding to the event name.
    • getGosuClass

      public IGosuClassInternal getGosuClass()
      Specified by:
      getGosuClass in interface IGosuClassTypeInfo
    • getCompilingClass

      private IType getCompilingClass()
      We expose type info in a context sensitive manner. For instance, we only expose private features from within the containing class. We can determine the context class from the current compiling class. The compiling class is obtained from either 1) the actual CompiledGosuClass stack the Gosu Class TypeLoader manages or 2) from the class itself if it's not compiled yet. Note the latter case happens only on the UI side when a class is being edited.
    • extractProperties

      private void extractProperties()
    • makePropertiesFromGenericTypesFields

      private void makePropertiesFromGenericTypesFields(List<IPropertyInfo> declaredPropertiesMap)
    • makePropertiesFromFields

      private void makePropertiesFromFields(List<IPropertyInfo> declaredPropertiesMap, Collection<IVarStatement> fields)
    • addDefinedProperties

      private void addDefinedProperties(List<IPropertyInfo> declaredPropertiesMap, List<DynamicPropertySymbol> propertySymbols)
    • extractMethods

      private void extractMethods()
    • createMethodInfos

      private List<IGosuMethodInfo> createMethodInfos(List mapFunctions)
    • extractConstructors

      private void extractConstructors()
    • makeStandardAnnotationConstructor

      private IConstructorInfo makeStandardAnnotationConstructor()
    • createConstructorInfos

      private List createConstructorInfos(List<DynamicFunctionSymbol> functions)
    • unload

      public void unload()
    • getDescription

      public String getDescription()
      Description copied from interface: IFeatureInfo
      A full description of this feature.
      Specified by:
      getDescription in interface IFeatureInfo
      Overrides:
      getDescription in class BaseFeatureInfo
    • getModifierInfo

      public IModifierInfo getModifierInfo(GosuBaseAttributedFeatureInfo featureInfo)
    • setModifierInfo

      public void setModifierInfo(GosuBaseAttributedFeatureInfo featureInfo, IModifierInfo modifierInfo)
    • toString

      public String toString()
      Overrides:
      toString in class BaseFeatureInfo