modernc.org/99c@v1.0.1-0.20181109153923-a9e8197063d9/examples/embedding/main.go (about)

     1  //go:generate 99c -o assets/a.out main.c
     2  //go:generate assets
     3  
     4  package main
     5  
     6  import (
     7  	"bytes"
     8  	"fmt"
     9  	"strings"
    10  	"time"
    11  
    12  	"modernc.org/httpfs"
    13  	"modernc.org/virtual"
    14  )
    15  
    16  func main() {
    17  	fs := httpfs.NewFileSystem(assets, time.Now())
    18  	f, err := fs.Open("/a.out")
    19  	if err != nil {
    20  		panic(err)
    21  	}
    22  
    23  	var bin virtual.Binary
    24  	if _, err := bin.ReadFrom(f); err != nil {
    25  		panic(err)
    26  	}
    27  
    28  	var out bytes.Buffer
    29  	exitCode, err := virtual.Exec(&bin, nil, strings.NewReader("Foo Bar"), &out, &out, 0, 1<<20, "")
    30  	if err != nil {
    31  		panic(err)
    32  	}
    33  
    34  	fmt.Printf("%s\n%v\n", out.Bytes(), exitCode)
    35  }