Changeset 1772

Show
Ignore:
Timestamp:
11/20/08 03:34:41 (7 weeks ago)
Author:
Chuck.Esterbrook
Message:

Code cleanup.

Location:
cobra/trunk/Source
Files:
2 added
2 modified

Legend:

Unmodified
Added
Removed
  • cobra/trunk/Source/Cobra.Lang/files.text

    r1771 r1772  
    11CobraCore.cobra 
    22CobraFrame.cobra 
     3ExceptionReportWriter.cobra 
    34HtmlExceptionReportWriter.cobra 
    45Exceptions.cobra 
    56Extensions.cobra 
     7ObjectCatalog.cobra 
    68Set.cobra 
    79SourceSite.cobra 
  • cobra/trunk/Source/CobraLang.cobra

    r1771 r1772  
    1 use System.Reflection 
    2  
    3  
    41namespace Cobra.Lang 
    52 
     
    3633                        return _contents 
    3734 
    38         class ObjectCatalog 
    39  
    40                 test 
    41                         cat = ObjectCatalog() 
    42                         assert cat.maxSerialNum == 0 
    43  
    44                         a = Object() 
    45                         cat.record(a) 
    46                         assert cat.maxSerialNum == 1000 
    47                         assert cat.contains(a) 
    48                         assert cat.serialNumFor(a) == 1000 
    49                         assert cat.objectFor(1000) is a 
    50  
    51                         b = Object() 
    52                         cat.record(b) 
    53                         assert cat.maxSerialNum == 1001 
    54                         assert cat.serialNumFor(a) == 1000 
    55                         assert cat.serialNumFor(b) == 1001 
    56                         assert cat.objectFor(1000) is a 
    57                         assert cat.objectFor(1001) is b 
    58  
    59                 var _objectToSerialNum = Dictionary<of Object, int>() 
    60                 var _serialNumToObject = Dictionary<of int, Object>() 
    61                 var _minSerialNum = 0 
    62                 var _maxSerialNum = 0 
    63  
    64                 def init 
    65                         pass 
    66  
    67                 get minSerialNum from var 
    68                  
    69                 get maxSerialNum from var 
    70  
    71                 def contains(obj as Object) as bool 
    72                         return _objectToSerialNum.containsKey(obj) 
    73  
    74                 def contains(serialNum as int) as bool 
    75                         return _serialNumToObject.containsKey(serialNum) 
    76  
    77                 def record(obj as Object) 
    78                         ensure .contains(obj) 
    79                         if not _objectToSerialNum.containsKey(obj) 
    80                                 _maxSerialNum = _objectToSerialNum.count + 1000 
    81                                 _objectToSerialNum.add(obj, _maxSerialNum) 
    82                                 _serialNumToObject.add(_maxSerialNum, obj) 
    83                                 if _minSerialNum == 0 
    84                                         _minSerialNum = _maxSerialNum 
    85  
    86                 def serialNumFor(obj as Object) as int 
    87                         require 
    88                                 .contains(obj) 
    89                         ensure 
    90                                 result >= 1000 
    91                                 .contains(result) 
    92                         body 
    93                                 return _objectToSerialNum[obj] 
    94  
    95                 def objectFor(serialNum as int) as Object 
    96                         require 
    97                                 .contains(serialNum) 
    98                         ensure  
    99                                 .contains(result) 
    100                         body 
    101                                 return _serialNumToObject[serialNum] 
    102  
    10335        class CobraInfo 
    10436                is extern 
     
    11244        interface IHasSourceSite 
    11345                get sourceSite as SourceSite 
    114  
    115         class ExceptionReportWriter 
    116                 is abstract 
    117          
    118                 def writeReport(tw as TextWriter, exc as Exception?) 
    119                         .writeReport(tw, exc, CobraImp.detailedStackTrace) 
    120  
    121                 def writeReport(tw as TextWriter, exc as Exception?, frames as Stack<of CobraFrame>) is abstract 
    122  
    123  
    124         class TextExceptionReportWriter 
    125                 inherits ExceptionReportWriter 
    126  
    127                 def writeReport(tw as TextWriter, exc as Exception?, frames as Stack<of CobraFrame>) is override 
    128                         # dump the most recent stack frames last since the text will output top-down and scroll in the shell 
    129                         tw.writeLine('Stack trace:') 
    130                         if not frames.count 
    131                                 tw.writeLine('No stack frames.') 
    132                         else 
    133                                 i = 0 
    134                                 for frame in frames 
    135                                         frame.dumpText(tw, i) 
    136                                         i += 1 
    13746 
    13847