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  `