"====================================================================== | | MethodInfo Method Definitions | | $Revision: 1.7.5$ | $Date: 2000/05/28 16:56:52$ | $Author: pb$ | ======================================================================" "====================================================================== | | Copyright 1988-92, 1994-95, 1999, 2000 Free Software Foundation, Inc. | Written by Steve Byrne. | | This file is part of the GNU Smalltalk class library. | | The GNU Smalltalk class library is free software; you can redistribute it | and/or modify it under the terms of the GNU Lesser General Public License | as published by the Free Software Foundation; either version 2.1, or (at | your option) any later version. | | The GNU Smalltalk class library is distributed in the hope that it will be | useful, but WITHOUT ANY WARRANTY; without even the implied warranty of | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser | General Public License for more details. | | You should have received a copy of the GNU Lesser General Public License | along with the GNU Smalltalk class library; see the file COPYING.LESSER. | If not, write to the Free Software Foundation, 59 Temple Place - Suite | 330, Boston, MA 02111-1307, USA. | ======================================================================" Object subclass: #MethodInfo instanceVariableNames: 'sourceCode category class selector ' classVariableNames: '' poolDictionaries: '' category: 'Language-Implementation' ! MethodInfo comment: 'I provide information about particular methods. I can produce the category that a method was filed under, and can be used to access the source code of the method.' ! !MethodInfo methodsFor: 'accessing'! category "Answer the method category" ^category ! category: aCategory "Set the method category" category := aCategory ! methodClass "Answer the class in which the method is defined" ^class ! methodClass: aClass "Set the class in which the method is defined" class := aClass ! selector "Answer the selector through which the method is called" ^selector ! selector: aSymbol "Set the selector through which the method is called" selector := aSymbol ! stripSourceCode "Remove the reference to the source code for the method" sourceCode := nil ! sourceCode "Answer a FileSegment or String or nil containing the method source code" ^sourceCode ! sourceString "Answer a String containing the method source code" ^sourceCode asString ! sourceFile "Answer the name of the file where the method source code is" ^sourceCode fileName ! sourcePos "Answer the starting position of the method source code in the sourceFile" ^sourceCode filePos ! ! !MethodInfo methodsFor: 'equality'! = aMethodInfo "Compare the receiver and aMethodInfo, answer whether they're equal" self class == aMethodInfo class ifFalse: [ ^false ]. self == aMethodInfo ifTrue: [ ^true ]. sourceCode = aMethodInfo sourceCode ifFalse: [ ^false ]. ^category = aMethodInfo category ! hash "Answer an hash value for the receiver" ^sourceCode hash + category hash ! ! !MethodInfo methodsFor: 'private'! setSourceCode: source sourceCode := source ! !