Show
Ignore:
Timestamp:
07/30/08 02:34:05 (5 months ago)
Author:
Chuck.Esterbrook
Message:

Added support for declaring and raising events.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • cobra/trunk/Source/Members.cobra

    r1557 r1560  
    119119                Returns true if the class member has one or more parameters defined. 
    120120                """ 
    121                 return false 
     121                return .params.count > 0 
    122122 
    123123        get params as List<of Param> 
     
    391391        get handlerTypeProxy from var 
    392392 
     393        get isCallable as bool is override 
     394                return true 
     395 
     396        get params as List<of Param> is override 
     397                assert .didBindInt 
     398                if _handlerType inherits MethodSig 
     399                        return _handlerType.params 
     400                else if _handlerType inherits Class 
     401                        method = _handlerType.memberForName('invoke') 
     402                        if method inherits AbstractMethod 
     403                                return method.params 
     404                        else 
     405                                .compiler.warning(this, 'Cannot locate a single invoke method of "[_handlerType.name]".') 
     406                                return List<of Param>()                  
     407                else 
     408                        if not .hasError 
     409                                .compiler.warning(this, 'Cannot determine parameters of event "[.name]".') 
     410                        return List<of Param>()                  
     411 
    393412        get resultType as IType is override 
    394413                return .handlerType to ! 
     
    405424                # TODO: error check that _handlerType is a delegate 
    406425                # _handlerType.isDescendantOf(.compiler.libraryType('System.Delegate')) 
     426 
     427        get sharpName as String is override 
     428                return Utils.capped(.name) 
     429 
     430        def writeSharpDef(sw as SharpWriter) is override 
     431                base.writeSharpDef(sw) 
     432                .writeSharpAttribs(sw) 
     433                .writeSharpIsNames(sw) 
     434                sw.write(.handlerType.sharpRef) 
     435                sw.write(' [.sharpName]') 
     436                sw.write(';\n') 
    407437 
    408438 
     
    599629                _locals = List<of LocalVar>() 
    600630                _stmts = List<of Stmt>() 
    601  
    602         get hasParams as bool is override 
    603                 return _params.count > 0 
    604631 
    605632        get params as List<of Param> is override