Package gw.internal.gosu.parser
Class GosuClassTypeInfo
java.lang.Object
gw.lang.reflect.BaseFeatureInfo
gw.lang.reflect.BaseTypeInfo
gw.internal.gosu.parser.GosuClassTypeInfo
- All Implemented Interfaces:
IGosuClassTypeInfo,IAnnotatedFeatureInfo,IAttributedFeatureInfo,IFeatureInfo,IRelativeTypeInfo,ITypeInfo
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface gw.lang.reflect.IAnnotatedFeatureInfo
IAnnotatedFeatureInfo.IAnnotationInfoHelperNested classes/interfaces inherited from interface gw.lang.reflect.IAttributedFeatureInfo
IAttributedFeatureInfo.MODIFIERNested classes/interfaces inherited from interface gw.lang.reflect.IRelativeTypeInfo
IRelativeTypeInfo.AccessibilityNested classes/interfaces inherited from interface gw.lang.reflect.ITypeInfo
ITypeInfo.FIND -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate LockingLazyVar<List<IAnnotationInfo>>private ArrayListprivate ArrayList<IGosuMethodInfo>private List<IPropertyInfo>private IGosuClassInternalprivate static final ThreadLocal<List<Boolean>>Fields inherited from interface gw.lang.reflect.IAnnotatedFeatureInfo
ANNOTATION_HELPERFields inherited from interface gw.lang.reflect.IRelativeTypeInfo
Accessibility_SizeFields inherited from interface gw.lang.reflect.ITypeInfo
TYPEINFO_EXT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddDefinedProperties(List<IPropertyInfo> declaredPropertiesMap, List<DynamicPropertySymbol> propertySymbols) private ListcreateConstructorInfos(List<DynamicFunctionSymbol> functions) private List<IGosuMethodInfo>createMethodInfos(List mapFunctions) private voidprivate voidprivate voidvoidgetAccessibilityForType(IType whosaskin) getCallableConstructor(IType... params) Returns a IConstructorInfo matching the specified parameter types or null if no match is found.getCallableMethod(CharSequence strMethod, IType... params) Returns a IMethodInfo matching the specified name and has parameter types that produce the best match.private ITypeWe expose type info in a context sensitive manner.getConstructor(IType... params) Returns a IConstructorInfo that has parameter types that produce the best match.getConstructor(IType whosAskin, IType[] params) getConstructors(IType whosAskin) List<? extends IConstructorInfo>Returns a list ofIConstructorInfoobjects reflecting all the constructors declared by the class represented by thisITypeobject.List<? extends IMethodInfo>Returns a list ofIMethodInfoobjects reflecting all the methods declared by the class or interface represented by thisITypeobject.List<? extends IPropertyInfo>Returns a list ofIPropertyInfoobjects reflecting all the properties declared by the class or interface represented by thisITypeobject.A full description of this feature.getEvent(CharSequence strEvent) Get an event mapped to the specified name.getMethod(IType whosaskin, CharSequence methodName, IType... params) getMethod(CharSequence methodName, IType... params) Returns a IMethodInfo matching the specified name and parameter types or null if no match is found.getMethods(IType whosAskin) getModifierInfo(GosuBaseAttributedFeatureInfo featureInfo) getName()Gets the programmatic name or identifier of this feature.List<? extends IPropertyInfo>getProperties(IType whosAskin) getProperty(IType whosAskin, CharSequence propName) getProperty(CharSequence propName) Get a property mapped to the specified name.booleanstatic booleanbooleanTrue if this feature is internal.booleanTrue if this feature is private.booleanTrue if this feature is protected.booleanisPublic()True if this feature is public.booleanisStatic()True if this feature is static, meaning the feature is not specific to a particular instance of the feature's containing type.private voidmakePropertiesFromFields(List<IPropertyInfo> declaredPropertiesMap, Collection<IVarStatement> fields) private voidmakePropertiesFromGenericTypesFields(List<IPropertyInfo> declaredPropertiesMap) private IConstructorInfostatic voidstatic voidvoidsetModifierInfo(GosuBaseAttributedFeatureInfo featureInfo, IModifierInfo modifierInfo) toString()voidunload()Methods inherited from class gw.lang.reflect.BaseFeatureInfo
getAnnotation, getAnnotations, getAnnotationsOfType, getContainer, getDeprecatedReason, getDisplayName, getOwnersType, getParamTypes, getSuperAnnotatedElements, hasAnnotation, hasDeclaredAnnotation, isAbstract, isDefaultImpl, isFinal, isHidden, isInternalAPI, isReified, isScriptable, isVisibleMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface gw.lang.reflect.IAnnotatedFeatureInfo
getAnnotation, getAnnotations, getAnnotationsOfType, getDeprecatedReason, hasAnnotation, hasDeclaredAnnotation, isDefaultImplMethods inherited from interface gw.lang.reflect.IAttributedFeatureInfo
isAbstract, isFinal, isHidden, isReified, isScriptable, isVisibleMethods inherited from interface gw.lang.reflect.IFeatureInfo
getContainer, getDisplayName, getLocationInfo, getOwnersType
-
Field Details
-
INCLUDE_ALL
-
_gsClass
-
_declaredMethods
-
_declaredProperties
-
_declaredConstructors
-
_declaredAnnotations
-
_modifierInfoByFeature
-
_fm
-
-
Constructor Details
-
GosuClassTypeInfo
-
-
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:IAttributedFeatureInfoTrue if this feature is static, meaning the feature is not specific to a particular instance of the feature's containing type.- Specified by:
isStaticin interfaceIAttributedFeatureInfo- Overrides:
isStaticin classBaseTypeInfo
-
isPrivate
public boolean isPrivate()Description copied from interface:IAttributedFeatureInfoTrue if this feature is private. Private features are only accessible from within the type that owns them.- Specified by:
isPrivatein interfaceIAttributedFeatureInfo- Overrides:
isPrivatein classBaseFeatureInfo
-
isInternal
public boolean isInternal()Description copied from interface:IAttributedFeatureInfoTrue 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:
isInternalin interfaceIAttributedFeatureInfo- Overrides:
isInternalin classBaseFeatureInfo
-
isProtected
public boolean isProtected()Description copied from interface:IAttributedFeatureInfoTrue if this feature is protected. Protected features are accessible from within the type that owns them and from derived containers.- Specified by:
isProtectedin interfaceIAttributedFeatureInfo- Overrides:
isProtectedin classBaseFeatureInfo
-
isPublic
public boolean isPublic()Description copied from interface:IAttributedFeatureInfoTrue if this feature is public. Public features are not restricted.- Specified by:
isPublicin interfaceIAttributedFeatureInfo- Overrides:
isPublicin classBaseFeatureInfo
-
isDeprecated
public boolean isDeprecated()- Specified by:
isDeprecatedin interfaceIAnnotatedFeatureInfo- Overrides:
isDeprecatedin classBaseFeatureInfo- Returns:
- True if this feature is deprecated.
-
getDeclaredAnnotations
- Specified by:
getDeclaredAnnotationsin interfaceIAnnotatedFeatureInfo- Overrides:
getDeclaredAnnotationsin classBaseTypeInfo- 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
Description copied from interface:IRelativeTypeInfoReturns a list ofIMethodInfoobjects reflecting all the methods declared by the class or interface represented by thisITypeobject. 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:
getDeclaredMethodsin interfaceIRelativeTypeInfo- Returns:
- the list of
IMethodInfoobjects representing all the declared methods of this class
-
getDeclaredProperties
Description copied from interface:IRelativeTypeInfoReturns a list ofIPropertyInfoobjects reflecting all the properties declared by the class or interface represented by thisITypeobject. 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:
getDeclaredPropertiesin interfaceIRelativeTypeInfo- Returns:
- the list of
IPropertyInfoobjects representing all the declared properties of this class
-
getDeclaredConstructors
Description copied from interface:IRelativeTypeInfoReturns a list ofIConstructorInfoobjects reflecting all the constructors declared by the class represented by thisITypeobject. 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:
getDeclaredConstructorsin interfaceIRelativeTypeInfo- Returns:
- the list of
IConstructorInfoobjects representing all the declared methods of this class
-
getName
Description copied from interface:IFeatureInfoGets 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:
getNamein interfaceIFeatureInfo- Overrides:
getNamein classBaseTypeInfo
-
getAccessibilityForType
- Specified by:
getAccessibilityForTypein interfaceIRelativeTypeInfo
-
getProperties
- Specified by:
getPropertiesin interfaceITypeInfo- Overrides:
getPropertiesin classBaseTypeInfo- Returns:
- An unmodifiable random access list of
IPropertyInfoinstances. The list is sorted ascending by name. Returns an empty list if there are no properties.
-
getProperties
- Specified by:
getPropertiesin interfaceIRelativeTypeInfo
-
getProperty
Description copied from interface:ITypeInfoGet a property mapped to the specified name.- Specified by:
getPropertyin interfaceITypeInfo- Overrides:
getPropertyin classBaseTypeInfo- Parameters:
propName- The property name.- Returns:
- An IPropertyInfo corresponding to the property name.
-
getProperty
- Specified by:
getPropertyin interfaceIRelativeTypeInfo
-
getMethods
- Specified by:
getMethodsin interfaceITypeInfo- Overrides:
getMethodsin classBaseTypeInfo- Returns:
- An unmodifiable random access list of
IMethodInfoinstances. The list is sorted ascending by name. Returns an empty list if there are no methods.
-
getMethods
- Specified by:
getMethodsin interfaceIRelativeTypeInfo
-
getConstructors
- Specified by:
getConstructorsin interfaceITypeInfo- Overrides:
getConstructorsin classBaseTypeInfo- Returns:
- An unmodifiable random access list of
IConstructorInfoinstances. The list is sorted ascending by name. Returns an empty list if there are no constructors.
-
getConstructors
- Specified by:
getConstructorsin interfaceIRelativeTypeInfo
-
getMethod
Description copied from interface:ITypeInfoReturns a IMethodInfo matching the specified name and parameter types or null if no match is found. Noteparamsmust exactly match those of the target method in number, order, and type. If null,paramsis treated as an empty array.- Specified by:
getMethodin interfaceITypeInfo- Overrides:
getMethodin classBaseTypeInfo- 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
- Specified by:
getMethodin interfaceIRelativeTypeInfo
-
getConstructor
Description copied from interface:ITypeInfoReturns 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:
getConstructorin interfaceITypeInfo- Overrides:
getConstructorin classBaseTypeInfo- 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
- Specified by:
getConstructorin interfaceIRelativeTypeInfo
-
getCallableMethod
Description copied from interface:ITypeInfoReturns 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:
getCallableMethodin interfaceITypeInfo- Overrides:
getCallableMethodin classBaseTypeInfo- 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
Description copied from interface:ITypeInfoReturns a IConstructorInfo matching the specified parameter types or null if no match is found.- Specified by:
getCallableConstructorin interfaceITypeInfo- Overrides:
getCallableConstructorin classBaseTypeInfo- 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
- Specified by:
getEventsin interfaceITypeInfo- Overrides:
getEventsin classBaseTypeInfo- Returns:
- An unmodifiable random access list of
IEventInfoinstances. The list is sorted ascending by name. Returns an empty list if ther are no events.
-
getEvent
Description copied from interface:ITypeInfoGet an event mapped to the specified name.- Specified by:
getEventin interfaceITypeInfo- Overrides:
getEventin classBaseTypeInfo- Parameters:
strEvent- The event name.- Returns:
- An IEventInfo corresponding to the event name.
-
getGosuClass
- Specified by:
getGosuClassin interfaceIGosuClassTypeInfo
-
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
-
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
-
extractConstructors
private void extractConstructors() -
makeStandardAnnotationConstructor
-
createConstructorInfos
-
unload
public void unload() -
getDescription
Description copied from interface:IFeatureInfoA full description of this feature.- Specified by:
getDescriptionin interfaceIFeatureInfo- Overrides:
getDescriptionin classBaseFeatureInfo
-
getModifierInfo
-
setModifierInfo
-
toString
- Overrides:
toStringin classBaseFeatureInfo
-