github.com/cellofellow/gopkg@v0.0.0-20140722061823-eec0544a62ad/database/leveldb.chai2010/capi/makedef.go (about) 1 // Copyright 2013 <chaishushan{AT}gmail.com>. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build ignore 6 7 package main 8 9 import ( 10 "bytes" 11 "fmt" 12 "io/ioutil" 13 "log" 14 "regexp" 15 "sort" 16 "strings" 17 ) 18 19 func main() { 20 data, err := ioutil.ReadFile("./leveldb_c.h") 21 if err != nil { 22 log.Fatal("ioutil.ReadFile: ", err) 23 } 24 25 var funcs []string 26 var re = regexp.MustCompile(`leveldb_[a-z_]*\(`) 27 for _, line := range strings.Split(string(data), "\n") { 28 if s := re.FindString(line); s != "" { 29 funcs = append(funcs, s[:len(s)-1]) 30 } 31 } 32 sort.Strings(funcs) 33 34 var b bytes.Buffer 35 fmt.Fprintf(&b, header[1:]) 36 for _, s := range funcs { 37 fmt.Fprintf(&b, "\t%s\n", s) 38 } 39 40 err = ioutil.WriteFile("leveldb_c.def", b.Bytes(), 0666) 41 if err != nil { 42 log.Fatal("ioutil.WriteFile: ", err) 43 } 44 45 fmt.Printf("Done\n") 46 } 47 48 var header = ` 49 ; Copyright 2013 <chaishushan{AT}gmail.com>. All rights reserved. 50 ; Use of this source code is governed by a BSD-style 51 ; license that can be found in the LICENSE file. 52 53 ; Auto Genrated by makedef.go; DO NOT EDIT!! 54 55 LIBRARY leveldb_c.dll 56 57 EXPORTS 58 `