(s string)
| 71 | } |
| 72 | |
| 73 | func (ctx *context) cString(s string) (uintptr, func()) { |
| 74 | buf := make([]byte, len(s)+1) |
| 75 | for i := 0; i < len(s); i++ { |
| 76 | buf[i] = s[i] |
| 77 | } |
| 78 | ret := unsafe.Pointer(&buf[0]) |
| 79 | id := ctx.cStringCounter |
| 80 | ctx.cStringCounter++ |
| 81 | ctx.cStrings[id] = ret |
| 82 | return uintptr(ret), func() { delete(ctx.cStrings, id) } |
| 83 | } |
| 84 | |
| 85 | func (ctx *context) cStringPtr(str string) (uintptr, func()) { |
| 86 | s, sfree := ctx.cString(str) |