-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathjerasure.go
36 lines (31 loc) · 1.17 KB
/
jerasure.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// +build linux
// Copyright 2013 Vastech SA (PTY) LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Package goerasure wraps the Jerasure C library in a Go object
// oriented interface that allows the user to perform erasure coding
// operations in Go using various erasure codes.
package goerasure
// #include "jerasure.h"
import "C"
import "unsafe"
// Create and print a matrix in GF(2^w)
func CreateAndPrint(r, c, w int) {
matrix := make([]int, r*c)
n:=1
for i:=0; i<r*c; i++ {
matrix[i] = n
n = int(C.galois_single_multiply(C.int(n), 2, C.int(w)))
}
C.jerasure_print_matrix((*C.int)(unsafe.Pointer(&matrix[0])), C.int(r), C.int(c), C.int(w))
}