Tools__DiffCodeView2.st
author Claus Gittinger <cg@exept.de>
Fri, 08 Jul 2011 08:50:25 +0200
changeset 10274 baa3a285f686
parent 10074 5c6c66fa40d1
child 10331 395bdb2d4575
permissions -rw-r--r--
changed: #isAvailable keep the working stuff active, until the experimental stuff is finished.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9978
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
10074
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
     2
 COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
     3
              All Rights Reserved
9978
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
10074
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
     5
Permission is hereby granted, free of charge, to any person
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
     6
obtaining a copy of this software and associated documentation
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
     7
files (the 'Software'), to deal in the Software without
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
     8
restriction, including without limitation the rights to use,
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
     9
copy, modify, merge, publish, distribute, sublicense, and/or sell
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    10
copies of the Software, and to permit persons to whom the
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    11
Software is furnished to do so, subject to the following
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    12
conditions:
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    13
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    14
The above copyright notice and this permission notice shall be
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    15
included in all copies or substantial portions of the Software.
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    16
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    17
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    18
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    19
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    20
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    21
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    22
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    23
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    24
OTHER DEALINGS IN THE SOFTWARE.
9978
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"{ Package: 'stx:libtool' }"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
"{ NameSpace: Tools }"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
TwoColumnTextView subclass:#DiffCodeView2
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	instanceVariableNames:''
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	classVariableNames:''
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	poolDictionaries:''
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	category:'Interface-CodeView'
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
Object subclass:#DiffData
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
	instanceVariableNames:'text1 text2 inserted deleted changed'
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	classVariableNames:''
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	poolDictionaries:''
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
	privateIn:DiffCodeView2
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
!DiffCodeView2 class methodsFor:'documentation'!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
copyright
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
"
10074
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    48
 COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    49
              All Rights Reserved
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    50
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    51
Permission is hereby granted, free of charge, to any person
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    52
obtaining a copy of this software and associated documentation
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    53
files (the 'Software'), to deal in the Software without
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    54
restriction, including without limitation the rights to use,
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    55
copy, modify, merge, publish, distribute, sublicense, and/or sell
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    56
copies of the Software, and to permit persons to whom the
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    57
Software is furnished to do so, subject to the following
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    58
conditions:
9978
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
10074
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    60
The above copyright notice and this permission notice shall be
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    61
included in all copies or substantial portions of the Software.
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    62
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    63
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    64
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    65
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    66
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    67
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    68
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    69
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
    70
OTHER DEALINGS IN THE SOFTWARE.
9978
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
! !
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
!DiffCodeView2 class methodsFor:'defaults'!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
textViewClass
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    "return the type of the synced subViews.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
     Can be redefined in subclasses"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    ^ Tools::CodeView2
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    "Created: / 06-03-2010 / 10:40:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
! !
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
!DiffCodeView2 methodsFor:'accessing'!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
text1:t1 text2:t2 
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    |data|
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    data := self computeDiffDataForText1:t1 text2:t2.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    (textViews at:1) 
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
        contents:(data text1);
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
        deletedLines:(data deleted);
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
        changedLines:(data changed);
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
        insertedLines:#();    
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
        originDiffText:t1;
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
        emptyLines:(data inserted).
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    (textViews at:2) 
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
        contents:(data text2);
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
        deletedLines:#();
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
        changedLines:(data changed);
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
        insertedLines:(data inserted);
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
        originDiffText:t2;
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
        emptyLines:(data deleted).
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    "Created: / 06-03-2010 / 10:45:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    "Modified: / 22-06-2010 / 21:36:35 / Jakub <zelenja7@fel.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    "Modified: / 15-07-2010 / 23:08:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
! !
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
!DiffCodeView2 methodsFor:'initialization'!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
initialize
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    super initialize.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    textViews do:
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
        [:thisView|
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
        thisView diffMode: true.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
        thisView ~= textViews first ifTrue:
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
            [thisView showGutterChannel value: false].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
        textViews do:
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
            [:otherView|
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
            thisView == otherView ifFalse:
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
                [thisView synchronizeWith: otherView]]].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    "Created: / 06-04-2010 / 14:15:03 / Jakub <zelenja7@fel.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    "Modified: / 23-06-2010 / 19:36:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
! !
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
!DiffCodeView2 methodsFor:'private'!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
computeDiffDataForText1:t1 text2:t2 
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    "created diffText object from two string"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
    
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
    |array1 array2 diff change index1 index2 text1 text2 i diffHelper deleted inserted helperText addConstant1 addConstant2 changed helper ins del pom|
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    "cerate array from origin text(1 item=1 row)"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    array1 := self createArray:t1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    array2 := self createArray:t2.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
     "inserted,deleted, cahnged lines"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    inserted := OrderedCollection new.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    deleted := OrderedCollection new.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    changed := OrderedCollection new.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
     "indicates which row of origin text is added to ne text"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    index1 := 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    index2 := 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
     "indicate how much rows were deleted or inserted "
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    addConstant1 := 0.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    addConstant2 := 0.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    text1 := ''.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    text2 := ''.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    diff := Diff new.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
    diff a:array1 b:array2.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    change := diff diff:false.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    diffHelper := DiffData new.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    [ change notNil ] whileTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
        "check first lines which are same"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
        (((change line0) > 0) and:[ ((change line1) > 0) ]) ifTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
            [
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
                index1 <= (change line0)
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
            ] whileTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
                helperText := (array1 at:index1) asText.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
                text1 := text1 asString , helperText asString.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
                index1 := index1 + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
            ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
            [
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
                index2 <= (change line1)
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
            ] whileTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
                helperText := (array2 at:index2) asText.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
                text2 := text2 , helperText.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
                index2 := index2 + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
            ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
        ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
        ins := change inserted.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
        del := change deleted.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
        index1 := (change line0) + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
        index2 := (change line1) + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
         "find replace files "
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
        ((del > 0) and:[ ins > 0 ]) ifTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
            helper := del - ins.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
            (helper <= 0) ifTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
                pom := change deleted.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
            ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
            (helper > 0) ifTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
                pom := change inserted.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
            ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
             "its same count row"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
            i := 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
            [ i <= pom ] whileTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
                changed add:index1 + addConstant1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
                text1 := text1 , (array1 at:index1) asString.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
                text2 := text2 , (array2 at:index2) asString.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
                index1 := index1 + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
                index2 := index2 + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
                del := del - 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
                ins := ins - 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
                i := i + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
            ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
        ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
         "find deleted files"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
        (del > 0) ifTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
            i := 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
            [ i <= del ] whileTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
                deleted add:index1 + addConstant1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
                text2 := text2 , Character cr.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
                addConstant2 := addConstant2 + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
                text1 := text1 , (array1 at:index1) asString.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
                index1 := index1 + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
                i := i + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
            ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
        ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
         "find inserted lines"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
        (ins > 0) ifTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
            i := 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
            [ i <= ins ] whileTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
                inserted add:index2 + addConstant2.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
                text1 := text1 , Character cr.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
                addConstant1 := addConstant1 + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
                text2 := text2 , (array2 at:index2) asString.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
                index2 := index2 + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
                i := i + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
            ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
        ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
        change := change nextLink.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
     "kontrola zda nam nechybi posledni znaky"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    (index1 <= (array1 size)) ifTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
        [
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
            index1 <= (array1 size)
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
        ] whileTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
            helperText := (array1 at:index1) asText.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
            text1 := text1 , helperText.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
            index1 := index1 + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
        ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
    ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
    (index2 <= (array2 size)) ifTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
        [
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
            index2 <= (array2 size)
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
        ] whileTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
            helperText := (array2 at:index2) asText.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
            text2 := text2 , helperText.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
            index2 := index2 + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
        ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
    diffHelper text1:text1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
    diffHelper text2:text2.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
    diffHelper changed:changed.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
    diffHelper inserted:inserted.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    diffHelper deleted:deleted.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
    ^ diffHelper.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
    "Modified: / 22-06-2010 / 21:02:50 / Jakub <zelenja7@fel.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
    "Modified: / 24-06-2010 / 21:07:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
createArray:text1 
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    "Creates array from string where every row is one item"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
    "^text1 asStringCollection"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
    |helperText i item char array|
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
    item := ''.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
    helperText := text1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
    array := OrderedCollection new.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
    i := 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
    [ i <= text1 size ] whileTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
        char := helperText at:i.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
        item := item , char.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
        (char == Character cr) ifTrue:[
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
            array add:item.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
            item := ''.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
        ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
        i := i + 1.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
    ].
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
    ^ array.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
    "Created: / 22-03-2010 / 14:48:27 / Jakub <zelenja7@fel.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
    "Modified: / 24-06-2010 / 13:40:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
! !
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
!DiffCodeView2::DiffData methodsFor:'accessing'!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
changed
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
    ^changed copy
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
    "Modified: / 02-05-2010 / 19:31:18 / Jakub <zelenja7@fel.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
    "Modified: / 16-07-2010 / 09:35:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
changed:something
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
    changed := something.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
deleted
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
    ^ deleted
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
deleted:something
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
    deleted := something.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
inserted
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
    ^ inserted
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
inserted:something
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
    inserted := something.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
text1
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
    ^ text1
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
text1:something
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
    text1 := something.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
text2
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
    ^ text2
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
text2:something
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
    text2 := something.
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
! !
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
!DiffCodeView2 class methodsFor:'documentation'!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
version_CVS
10074
5c6c66fa40d1 changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9978
diff changeset
   334
    ^ '$Header: /cvs/stx/stx/libtool/Tools__DiffCodeView2.st,v 1.2 2011-07-03 17:50:11 cg Exp $'
9978
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
!
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
version_SVN
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
    ^ '§Id: Tools__DiffCodeView2.st 7594 2010-07-16 08:57:35Z vranyj1 §'
4c863461e5a2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
! !