func (c *icuUTF8iter) Key(s Input) []byte { err := C.UErrorCode(0) state := [2]C.uint32_t{} C.uiter_setUTF8(&c.a, icuCharP(s.UTF8), icuSLen(s.UTF8)) bp, bn := c.buf() n := C.ucol_nextSortKeyPart(c.col, &c.a, &(state[0]), bp, bn, &err) if n >= bn { // Force failure. if c.extendBuf(n+1) != nil { log.Fatal("expected extension to fail") } return c.Key(s) } return c.extendBuf(n) }
func (c *icuUTF8iter) Compare(a, b Input) int { err := C.UErrorCode(0) C.uiter_setUTF8(&c.a, icuCharP(a.UTF8), icuSLen(a.UTF8)) C.uiter_setUTF8(&c.b, icuCharP(b.UTF8), icuSLen(b.UTF8)) return int(C.ucol_strcollIter(c.col, &c.a, &c.b, &err)) }