Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions component/cm/const.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package cm

import bcm "go.bytecodealliance.org/cm"

const (
ResultOK = bcm.ResultOK
ResultErr = bcm.ResultErr
MaxTuple = bcm.MaxTuple
ResourceNone = bcm.ResourceNone
)
2 changes: 2 additions & 0 deletions component/cm/docs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// Package cm re-exports the bytecodealliance cm package.
package cm
89 changes: 89 additions & 0 deletions component/cm/funcs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package cm

import (
"unsafe"

bcm "go.bytecodealliance.org/cm"
)

func BoolToU32[B ~bool](v B) uint32 { return bcm.BoolToU32(v) }

func Case[T any, V AnyVariant[Tag, Shape, Align], Tag Discriminant, Shape, Align any](v *V, tag Tag) *T {
return bcm.Case[T](v, tag)
}

func Err[R AnyResult[Shape, OK, Err], Shape, OK, Err any](err Err) R {
return bcm.Err[R](err)
}

func F32ToU32(v float32) uint32 {
return bcm.F32ToU32(v)
}

func F32ToU64(v float32) uint64 {
return bcm.F32ToU64(v)
}

func F64ToU64(v float64) uint64 {
return bcm.F64ToU64(v)
}

func LiftList[L AnyList[T], T any, Data unsafe.Pointer | uintptr | *T, Len AnyInteger](data Data, datalen Len) L {
return bcm.LiftList[L](data, datalen)
}

func LiftString[T ~string, Data unsafe.Pointer | uintptr | *uint8, Len AnyInteger](data Data, datalen Len) T {
return bcm.LiftString[T](data, datalen)
}

func LowerList[L AnyList[T], T any](list L) (*T, uint32) {
return bcm.LowerList(list)
}

func LowerString[S ~string](s S) (*byte, uint32) {
return bcm.LowerString(s)
}

func New[V AnyVariant[Tag, Shape, Align], Tag Discriminant, Shape, Align any, T any](tag Tag, data T) V {
return bcm.New[V](tag, data)
}

func OK[R AnyResult[Shape, OK, Err], Shape, OK, Err any](ok OK) R {
return bcm.OK[R](ok)
}

func PointerToU32[T any](v *T) uint32 {
return bcm.PointerToU32(v)
}

func PointerToU64[T any](v *T) uint64 {
return bcm.PointerToU64(v)
}

func Reinterpret[T, From any](from From) (to T) {
return bcm.Reinterpret[T](from)
}

func U32ToBool(v uint32) bool {
return bcm.U32ToBool(v)
}

func U32ToF32(v uint32) float32 {
return bcm.U32ToF32(v)
}

func U32ToPointer[T any](v uint32) *T {
return bcm.U32ToPointer[T](v)
}

func U64ToF32(v uint64) float32 {
return bcm.U64ToF32(v)
}

func U64ToF64(v uint64) float64 {
return bcm.U64ToF64(v)
}

func U64ToPointer[T any](v uint64) *T {
return bcm.U64ToPointer[T](v)
}
34 changes: 34 additions & 0 deletions component/cm/types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package cm

import bcm "go.bytecodealliance.org/cm"

type (
AnyInteger bcm.AnyInteger
AnyList[T any] bcm.AnyList[T]
AnyResult[Shape, Ok, Err any] bcm.AnyResult[Shape, Ok, Err]
AnyVariant[Tag Discriminant, Shape, Align any] bcm.AnyVariant[Tag, Shape, Align]
BoolResult bcm.BoolResult
Discriminant bcm.Discriminant
HostLayout bcm.HostLayout
List[T any] bcm.List[T]
Option[T any] bcm.Option[T]
Rep bcm.Rep
Resource bcm.Resource
Result[Shape, Ok, Err any] bcm.Result[Shape, Ok, Err]
Tuple[T0, T1 any] bcm.Tuple[T0, T1]
Tuple3[T0, T1, T2 any] bcm.Tuple3[T0, T1, T2]
Tuple4[T0, T1, T2, T3 any] bcm.Tuple4[T0, T1, T2, T3]
Tuple5[T0, T1, T2, T3, T4 any] bcm.Tuple5[T0, T1, T2, T3, T4]
Tuple6[T0, T1, T2, T3, T4, T5 any] bcm.Tuple6[T0, T1, T2, T3, T4, T5]
Tuple7[T0, T1, T2, T3, T4, T5, T6 any] bcm.Tuple7[T0, T1, T2, T3, T4, T5, T6]
Tuple8[T0, T1, T2, T3, T4, T5, T6, T7 any] bcm.Tuple8[T0, T1, T2, T3, T4, T5, T6, T7]
Tuple9[T0, T1, T2, T3, T4, T5, T6, T7, T8 any] bcm.Tuple9[T0, T1, T2, T3, T4, T5, T6, T7, T8]
Tuple10[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 any] bcm.Tuple10[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9]
Tuple11[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any] bcm.Tuple11[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]
Tuple12[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 any] bcm.Tuple12[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]
Tuple13[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 any] bcm.Tuple13[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]
Tuple14[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 any] bcm.Tuple14[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]
Tuple15[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 any] bcm.Tuple15[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]
Tuple16[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 any] bcm.Tuple16[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]
Variant[Tag Discriminant, Shape, Align any] bcm.Variant[Tag, Shape, Align]
)
40 changes: 40 additions & 0 deletions component/component-bindgen-go/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package main

import (
"context"
"fmt"
"os"

"github.com/urfave/cli/v3"

"go.bytecodealliance.org/cmd/wit-bindgen-go/cmd/generate"
)

// wrapper around bytecodealliance wit-bindgen-go
// Uses the component sdk 'cm' package if one is not provided
// prevents cm package version mismatches at build time

func main() {
cmd := generateCommand()
err := cmd.Run(context.Background(), os.Args)
if err != nil {
fmt.Fprintf(os.Stderr, "error: %v\n", err)
os.Exit(1)
}
}

func generateCommand() *cli.Command {
gen := generate.Command
gen.Name = "component-bindgen-go"
gen.Before = func(ctx context.Context, cmd *cli.Command) (context.Context, error) {
if cmd.String("cm") == "" {
if err := gen.Set("cm", "go.wasmcloud.dev/component/cm"); err != nil {
return ctx, err
}
}

return ctx, nil
}

return gen
}
Loading
Loading