equal
deleted
inserted
replaced
223 } |
223 } |
224 inc(symbol_range) orElse inc(symbol_range - 1) |
224 inc(symbol_range) orElse inc(symbol_range - 1) |
225 } |
225 } |
226 } |
226 } |
227 |
227 |
|
228 // file name and position information, *without* persistent text |
228 class File(val file_name: String, text: CharSequence) extends Chunk |
229 class File(val file_name: String, text: CharSequence) extends Chunk |
229 { |
230 { |
230 val length = text.length |
231 val length = text.length |
231 val range = Text.Range(0, length) |
232 val range = Text.Range(0, length) |
232 private val symbol_index = Symbol.Index(text) |
233 private val symbol_index = Symbol.Index(text) |
233 def decode(symbol_range: Symbol.Range): Text.Range = symbol_index.decode(symbol_range) |
234 def decode(symbol_range: Symbol.Range): Text.Range = symbol_index.decode(symbol_range) |
234 |
235 |
|
236 private val hash: Int = (file_name, length, symbol_index).hashCode |
|
237 override def hashCode: Int = hash |
|
238 override def equals(that: Any): Boolean = |
|
239 that match { |
|
240 case other: File => |
|
241 hash == other.hash && |
|
242 file_name == other.file_name && |
|
243 length == other.length && |
|
244 symbol_index == other.symbol_index |
|
245 case _ => false |
|
246 } |
235 override def toString: String = "Command.File(" + file_name + ")" |
247 override def toString: String = "Command.File(" + file_name + ")" |
236 } |
248 } |
237 |
249 |
238 |
250 |
239 /* make commands */ |
251 /* make commands */ |