package rle

import (
	

	
	
	
)

type DictionaryEncoding struct {
	encoding.NotSupported
}

func ( *DictionaryEncoding) () string {
	return "RLE_DICTIONARY"
}

func ( *DictionaryEncoding) () format.Encoding {
	return format.RLEDictionary
}

func ( *DictionaryEncoding) ( []byte,  []int32) ([]byte, error) {
	 := maxLenInt32()
	 = append([:0], byte())
	,  := encodeInt32(, , uint())
	return , .wrap()
}

func ( *DictionaryEncoding) ( []int32,  []byte) ([]int32, error) {
	if len() == 0 {
		return [:0], nil
	}
	 := unsafecast.Slice[byte]()
	,  := decodeInt32([:0], [1:], uint([0]))
	return unsafecast.Slice[int32](), .wrap()
}

func ( *DictionaryEncoding) ( error) error {
	if  != nil {
		 = encoding.Error(, )
	}
	return 
}

func clearInt32( []int32) {
	for  := range  {
		[] = 0
	}
}

func maxLenInt32( []int32) ( int) {
	for ,  := range  {
		if  := bits.Len32(uint32());  >  {
			 = 
		}
	}
	return 
}