Module: AbstractReflection::ClassMirror

Includes:
ObjectMirror
Included in:
Maglev::Reflection::ClassMirror, Ruby::Reflection::ClassMirror
Defined in:
lib/abstract_reflection/class_mirror.rb

Overview

A specific mirror for a class, that includes all the capabilites and information we can gather about classes.

Instance Attribute Summary

Attributes included from Mirror

#reflection

Instance Method Summary collapse

Methods included from ObjectMirror

#instance_eval, #objects_with_references, #path_to, #target_class, #transitive_closure, #variables

Methods included from Mirror

#initialize, #mirrors?, #name, #reflectee

Methods included from Mirror::ClassMethods

#included, #mirror_class, #new, #reflect, #reflect!, #reflects?, #register_mirror

Instance Method Details

#ancestorsArray<ClassMirror>

The list of ancestors

Returns:

Raises:



106
107
108
# File 'lib/abstract_reflection/class_mirror.rb', line 106

def ancestors
  raise CapabilitiesExceeded
end

#class_instance_variablesFieldMirror

The known class variables.

Returns:

Raises:

See Also:



27
28
29
# File 'lib/abstract_reflection/class_mirror.rb', line 27

def class_instance_variables
  raise CapabilitiesExceeded
end

#class_variablesFieldMirror

The known class variables.

Returns:

Raises:

See Also:



20
21
22
# File 'lib/abstract_reflection/class_mirror.rb', line 20

def class_variables
  raise CapabilitiesExceeded
end

#constant(name) ⇒ ClassMirror?

Searches for the named constant in the mirrored namespace. May include a colon (::) separated constant path. This may trigger an autoload!

Returns:

  • (ClassMirror, nil)

    the requested constant, or nil

Raises:



124
125
126
# File 'lib/abstract_reflection/class_mirror.rb', line 124

def constant(name)
  raise CapabilitiesExceeded
end

#constantsArray<FieldMirror>

The constants defined within this class. This includes nested classes and modules, but also all other kinds of constants. This should not trigger autoloads!

Returns:

Raises:



115
116
117
# File 'lib/abstract_reflection/class_mirror.rb', line 115

def constants
  raise CapabilitiesExceeded
end

#instance_variablesFieldMirror

The known instance variables of this class. Ruby doesn’t have a fixed number of instance variables, but static or runtime anlysis can give us a good idea what kind of variables we can expect.

Returns:

Raises:



13
14
15
# File 'lib/abstract_reflection/class_mirror.rb', line 13

def instance_variables
  raise CapabilitiesExceeded
end

#method(name) ⇒ MethodMirror?

The instance method of this class or any of its superclasses that has the specified selector

Returns:

  • (MethodMirror, nil)

    the method or nil, if none was found

Raises:



140
141
142
# File 'lib/abstract_reflection/class_mirror.rb', line 140

def method(name)
  raise CapabilitiesExceeded
end

#method_dictionaryObject

The method dictionary. Maps names to methods. Should ideally be writable.



146
147
148
# File 'lib/abstract_reflection/class_mirror.rb', line 146

def method_dictionary
  raise CapabilitiesExceeded
end

#methodsArray<MethodMirror>

The instance methods of this class. To get to the class methods, ask the #singleton_class for its methods.

Returns:

Raises:



132
133
134
# File 'lib/abstract_reflection/class_mirror.rb', line 132

def methods
  raise CapabilitiesExceeded
end

#mixinsArray<ClassMirror>

The mixins included in the ancestors of this class.

Returns:

Raises:



85
86
87
# File 'lib/abstract_reflection/class_mirror.rb', line 85

def mixins
  raise CapabilitiesExceeded
end

#namespaceClassMirror

The namespace of this class. Provides direct access to the enclosing namespace.

Returns:

Raises:



63
64
65
# File 'lib/abstract_reflection/class_mirror.rb', line 63

def namespace
  raise CapabilitiesExceeded
end

#nested_classesArray<ClassMirror>

The classes nested within the subject. Should not trigger autloads!

Returns:

Raises:



78
79
80
# File 'lib/abstract_reflection/class_mirror.rb', line 78

def nested_classes
  raise CapabilitiesExceeded
end

#nestingArray<ClassMirror>

The full nesting.

Returns:

Raises:



70
71
72
# File 'lib/abstract_reflection/class_mirror.rb', line 70

def nesting
  raise CapabilitiesExceeded
end

#singleton_classClassMirror

The singleton class of this class

Returns:

Raises:



41
42
43
# File 'lib/abstract_reflection/class_mirror.rb', line 41

def singleton_class
  raise CapabilitiesExceeded
end

#singleton_class?true, false

Predicate to determine whether the subject is a singleton class

Returns:

  • (true, false)

Raises:



48
49
50
# File 'lib/abstract_reflection/class_mirror.rb', line 48

def singleton_class?
  raise CapabilitiesExceeded
end

#singleton_instanceClassMirror

The inverse of #singleton_class.

Returns:

Raises:



55
56
57
# File 'lib/abstract_reflection/class_mirror.rb', line 55

def singleton_instance
  raise CapabilitiesExceeded
end

#source_filesArray<String,File>

The source files this class is defined and/or extended in.

Returns:

  • (Array<String,File>)

Raises:



34
35
36
# File 'lib/abstract_reflection/class_mirror.rb', line 34

def source_files
  raise CapabilitiesExceeded
end

#subclassesArray<ClassMirror>

The known subclasses

Returns:

Raises:



99
100
101
# File 'lib/abstract_reflection/class_mirror.rb', line 99

def subclasses
  raise CapabilitiesExceeded
end

#superclassClassMirror

The direct superclass

Returns:

Raises:



92
93
94
# File 'lib/abstract_reflection/class_mirror.rb', line 92

def superclass
  raise CapabilitiesExceeded
end