Class RDoc::TopLevel
In: code_objects.rb
parsers/parse_f95.rb
doc-tmp/rdoc/code_objects.rb
Parent: Context

A TopLevel context is a source file

Methods

Public Class methods

[Source]

     # File doc-tmp/rdoc/code_objects.rb, line 525
525:     def self.all_classes_and_modules
526:       @@all_classes.values + @@all_modules.values
527:     end

[Source]

     # File code_objects.rb, line 525
525:     def self.all_classes_and_modules
526:       @@all_classes.values + @@all_modules.values
527:     end

[Source]

     # File parsers/parse_f95.rb, line 758
758:     def TopLevel.all_files
759:       @@all_files
760:     end

[Source]

     # File code_objects.rb, line 529
529:     def self.find_class_named(name)
530:      @@all_classes.each_value do |c|
531:         res = c.find_class_named(name) 
532:         return res if res
533:       end
534:       nil
535:     end

[Source]

     # File doc-tmp/rdoc/code_objects.rb, line 529
529:     def self.find_class_named(name)
530:      @@all_classes.each_value do |c|
531:         res = c.find_class_named(name) 
532:         return res if res
533:       end
534:       nil
535:     end

[Source]

     # File doc-tmp/rdoc/code_objects.rb, line 477
477:     def initialize(file_name)
478:       super()
479:       @name = "TopLevel"
480:       @file_relative_name = file_name
481:       @file_absolute_name = file_name
482:       @file_stat          = File.stat(file_name)
483:       @diagram            = nil
484:     end

[Source]

     # File code_objects.rb, line 477
477:     def initialize(file_name)
478:       super()
479:       @name = "TopLevel"
480:       @file_relative_name = file_name
481:       @file_absolute_name = file_name
482:       @file_stat          = File.stat(file_name)
483:       @diagram            = nil
484:     end

[Source]

     # File parsers/parse_f95.rb, line 748
748:     def initialize(file_name)
749:       super()
750:       @name = "TopLevel"
751:       @file_relative_name = file_name
752:       @file_absolute_name = file_name
753:       @file_stat          = File.stat(file_name)
754:       @diagram            = nil
755:       @@all_files[file_name] = self
756:     end

[Source]

     # File doc-tmp/rdoc/code_objects.rb, line 472
472:     def self.reset
473:       @@all_classes = {}
474:       @@all_modules = {}
475:     end

[Source]

     # File parsers/parse_f95.rb, line 742
742:     def TopLevel::reset
743:       @@all_classes = {}
744:       @@all_modules = {}
745:       @@all_files   = {}
746:     end

[Source]

     # File code_objects.rb, line 472
472:     def self.reset
473:       @@all_classes = {}
474:       @@all_modules = {}
475:     end

Public Instance methods

Adding a class or module to a TopLevel is special, as we only want one copy of a particular top-level class. For example, if both file A and file B implement class C, we only want one ClassModule object for C. This code arranges to share classes and modules between files.

[Source]

     # File doc-tmp/rdoc/code_objects.rb, line 496
496:     def add_class_or_module(collection, class_type, name, superclass)
497:       cls = collection[name]
498: 
499:       if cls
500:         puts "Reusing class/module #{name}" if $DEBUG_RDOC
501:       else
502:         if class_type == NormalModule
503:           all = @@all_modules
504:         else
505:           all = @@all_classes
506:         end
507: 
508:         cls = all[name]
509: 
510:         if !cls
511:           cls = class_type.new(name, superclass)
512:           all[name] = cls unless @done_documenting
513:         end
514: 
515:         puts "Adding class/module #{name} to #{@name}" if $DEBUG_RDOC
516: 
517:         collection[name] = cls unless @done_documenting
518: 
519:         cls.parent = self
520:       end
521: 
522:       cls
523:     end

Adding a class or module to a TopLevel is special, as we only want one copy of a particular top-level class. For example, if both file A and file B implement class C, we only want one ClassModule object for C. This code arranges to share classes and modules between files.

[Source]

     # File code_objects.rb, line 496
496:     def add_class_or_module(collection, class_type, name, superclass)
497:       cls = collection[name]
498: 
499:       if cls
500:         puts "Reusing class/module #{name}" if $DEBUG_RDOC
501:       else
502:         if class_type == NormalModule
503:           all = @@all_modules
504:         else
505:           all = @@all_classes
506:         end
507: 
508:         cls = all[name]
509: 
510:         if !cls
511:           cls = class_type.new(name, superclass)
512:           all[name] = cls unless @done_documenting
513:         end
514: 
515:         puts "Adding class/module #{name} to #{@name}" if $DEBUG_RDOC
516: 
517:         collection[name] = cls unless @done_documenting
518: 
519:         cls.parent = self
520:       end
521: 
522:       cls
523:     end

[Source]

     # File doc-tmp/rdoc/code_objects.rb, line 541
541:     def find_class_or_module_named(symbol)
542:       @@all_classes.each_value {|c| return c if c.name == symbol}
543:       @@all_modules.each_value {|m| return m if m.name == symbol}
544:       nil
545:     end

[Source]

     # File code_objects.rb, line 541
541:     def find_class_or_module_named(symbol)
542:       @@all_classes.each_value {|c| return c if c.name == symbol}
543:       @@all_modules.each_value {|m| return m if m.name == symbol}
544:       nil
545:     end

[Source]

     # File parsers/parse_f95.rb, line 766
766:     def find_class_or_module_named(symbol, ignore_case=nil)
767:       if !ignore_case
768:         @@all_classes.each_value {|c| return c if c.name == symbol}
769:         @@all_modules.each_value {|m| return m if m.name == symbol}
770:       else
771:         @@all_classes.each_value {|c| return c if c.name.upcase == symbol.upcase}
772:         @@all_modules.each_value {|m| return m if m.name.upcase == symbol.upcase}
773:       end
774:       nil
775:     end

Find a named file

[Source]

     # File parsers/parse_f95.rb, line 783
783:     def find_file_named(name, method=nil, ignore_case=nil)
784:       return nil unless name
785:       result = nil
786:       @@all_files.each{|file_name, toplevel|
787:         result = toplevel if file_name == name
788:       }
789:       dir = File.dirname(@file_relative_name)
790:       @@all_files.each{|file_name, toplevel|
791:         if /^#{dir}\/(.*)/ =~ file_name
792:           result = toplevel if $1 == name
793:         end
794:       }
795:       if result
796:         if method
797:           result_method = result.find_local_symbol(method, ignore_case)
798:           return result_method
799:         else
800:           return result
801:         end
802:       else
803:         return nil
804:       end
805:     end

[Source]

     # File code_objects.rb, line 537
537:     def find_local_symbol(symbol)
538:       find_class_or_module_named(symbol) || super
539:     end

[Source]

     # File doc-tmp/rdoc/code_objects.rb, line 537
537:     def find_local_symbol(symbol)
538:       find_class_or_module_named(symbol) || super
539:     end

[Source]

     # File parsers/parse_f95.rb, line 762
762:     def find_local_symbol(symbol, ignore_case=nil)
763:       find_class_or_module_named(symbol, ignore_case) || super
764:     end

Find a named module

[Source]

     # File code_objects.rb, line 550
550:     def find_module_named(name)
551:       find_class_or_module_named(name) || find_enclosing_module_named(name)
552:     end

Find a named module

[Source]

     # File doc-tmp/rdoc/code_objects.rb, line 550
550:     def find_module_named(name)
551:       find_class_or_module_named(name) || find_enclosing_module_named(name)
552:     end

Find a named module

[Source]

     # File parsers/parse_f95.rb, line 778
778:     def find_module_named(name, ignore_case=nil)
779:       find_class_or_module_named(name, ignore_case) || find_enclosing_module_named(name, ignore_case)
780:     end

[Source]

     # File doc-tmp/rdoc/code_objects.rb, line 486
486:     def full_name
487:       nil
488:     end

[Source]

     # File code_objects.rb, line 486
486:     def full_name
487:       nil
488:     end

[Validate]