[swift-users] Proper syntax for 2D table with initial values
Ken Burgett
kenb at iotone.io
Mon May 23 13:04:52 CDT 2016
I have a large 2D table defined within a C .h file, as follows:
static const uint8_t blake2b_kat[256][64] =
{
{
0x78, 0x6A, 0x02, 0xF7, 0x42, 0x01, 0x59, 0x03,
0xC6, 0xC6, 0xFD, 0x85, 0x25, 0x52, 0xD2, 0x72,
0x91, 0x2F, 0x47, 0x40, 0xE1, 0x58, 0x47, 0x61,
0x8A, 0x86, 0xE2, 0x17, 0xF7, 0x1F, 0x54, 0x19,
0xD2, 0x5E, 0x10, 0x31, 0xAF, 0xEE, 0x58, 0x53,
0x13, 0x89, 0x64, 0x44, 0x93, 0x4E, 0xB0, 0x4B,
0x90, 0x3A, 0x68, 0x5B, 0x14, 0x48, 0xB7, 0x55,
0xD5, 0x6F, 0x70, 0x1A, 0xFE, 0x9B, 0xE2, 0xCE
}
... shortened for clarity ...
}
There are 16384 elements in this array. The C compiler accepts it with
no difficulty
I converted it to a .swift file like so:
let blake2b_kat: [[UInt8]] =
[
[
0x78, 0x6A, 0x02, 0xF7, 0x42, 0x01, 0x59, 0x03,
0xC6, 0xC6, 0xFD, 0x85, 0x25, 0x52, 0xD2, 0x72,
0x91, 0x2F, 0x47, 0x40, 0xE1, 0x58, 0x47, 0x61,
0x8A, 0x86, 0xE2, 0x17, 0xF7, 0x1F, 0x54, 0x19,
0xD2, 0x5E, 0x10, 0x31, 0xAF, 0xEE, 0x58, 0x53,
0x13, 0x89, 0x64, 0x44, 0x93, 0x4E, 0xB0, 0x4B,
0x90, 0x3A, 0x68, 0x5B, 0x14, 0x48, 0xB7, 0x55,
0xD5, 0x6F, 0x70, 0x1A, 0xFE, 0x9B, 0xE2, 0xCE
]
...
]
When I attempt a swift compile, the compiler seems to go away and never
return. I tried the same test with the REPL and saw all the text list
(2600 lines), but then the same thing happened. I left the REPL running
for 10 minutes or so, with no output. I have tried the same swift table
definition with fewer rows and columns, and it produces the correct 2D
array.
My question is whether this is just an issue with the current Swift
compiler (I am using the May 9th version for Ubuntu 14.04) or is this a
recognized limitation in scale? In order to get my 2D table filled and
work around this issue, I will have to read the file with file I/O and
do my own parsing.
--
Ken Burgett
Principal Software Engineer
Email: kenb at iotone.io
Office: 530.693.4449
Mobile: 831.332.6846
URL: www.iotone.co
More information about the swift-users
mailing list