mirror of
https://github.com/tsolomko/SWCompression.git
synced 2026-06-23 14:56:41 +00:00
63 lines
1.6 KiB
Swift
63 lines
1.6 KiB
Swift
//
|
|
// HuffmanLength.swift
|
|
// SWCompression
|
|
//
|
|
// Created by Timofey Solomko on 26.10.16.
|
|
// Copyright © 2016 Timofey Solomko. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
struct HuffmanLength: Comparable, CustomStringConvertible {
|
|
let code: Int
|
|
let bits: Int
|
|
var symbol: Int? = nil
|
|
var reversedSymbol: Int? = nil
|
|
|
|
var description: String {
|
|
return "(code: \(code), bits: \(bits), symbol: \(symbol), " +
|
|
"reversedSymbol: \(reversedSymbol))"
|
|
}
|
|
|
|
static func < (left: HuffmanLength, right: HuffmanLength) -> Bool {
|
|
if left.bits == right.bits {
|
|
return left.code < right.code
|
|
} else {
|
|
return left.bits < right.bits
|
|
}
|
|
}
|
|
|
|
static func <= (left: HuffmanLength, right: HuffmanLength) -> Bool {
|
|
if left.bits == right.bits {
|
|
return left.code <= right.code
|
|
} else {
|
|
return left.bits <= right.bits
|
|
}
|
|
}
|
|
|
|
static func > (left: HuffmanLength, right: HuffmanLength) -> Bool {
|
|
if left.bits == right.bits {
|
|
return left.code > right.code
|
|
} else {
|
|
return left.bits > right.bits
|
|
}
|
|
}
|
|
|
|
static func >= (left: HuffmanLength, right: HuffmanLength) -> Bool {
|
|
if left.bits == right.bits {
|
|
return left.code >= right.code
|
|
} else {
|
|
return left.bits >= right.bits
|
|
}
|
|
}
|
|
|
|
static func == (left: HuffmanLength, right: HuffmanLength) -> Bool {
|
|
if left.bits == right.bits {
|
|
return left.code == right.code
|
|
} else {
|
|
return left.bits == right.bits
|
|
}
|
|
}
|
|
|
|
}
|