Files
swift-mirror/test/Interpreter/bitvector.swift
Doug Gregor 44b3dd7b2b Move bitvector example into the Interpreter subdirectory and add some bit
get/set operations to test.

Add a String(Bool) constructor that produces 'true' or 'false'.



Swift SVN r1634
2012-04-25 16:14:29 +00:00

104 lines
1.9 KiB
Swift

// RUN: %swift -I %S/.. %s -i | FileCheck %s
import swift
struct BitVector64 {
bits : Int64
subscript (bit : Int) -> Bool {
get {
if (bits & (1 << bit)) != 0 {
return true
}
return false;
}
set {
var mask = 1 << bit
if value {
bits = bits | mask
} else {
bits = bits & ~mask
}
}
}
}
// Create an empty bitvector
var vec = BitVector64(0)
// Set even elements to 'true'.
foreach i in 0..64 {
if i % 2 == 0 {
vec[i] = true
}
}
// Print all elements
foreach i in 0..64 {
println(String(vec[i]))
}
// CHECK: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false
// CHECK-NEXT: true
// CHECK-NEXT: false