40 lines
		
	
	
		
			764 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			764 B
		
	
	
	
		
			Go
		
	
	
	
package mssql
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/binary"
 | 
						|
	"io"
 | 
						|
)
 | 
						|
 | 
						|
// http://msdn.microsoft.com/en-us/library/dd340437.aspx
 | 
						|
 | 
						|
type collation struct {
 | 
						|
	lcidAndFlags uint32
 | 
						|
	sortId       uint8
 | 
						|
}
 | 
						|
 | 
						|
func (c collation) getLcid() uint32 {
 | 
						|
	return c.lcidAndFlags & 0x000fffff
 | 
						|
}
 | 
						|
 | 
						|
func (c collation) getFlags() uint32 {
 | 
						|
	return (c.lcidAndFlags & 0x0ff00000) >> 20
 | 
						|
}
 | 
						|
 | 
						|
func (c collation) getVersion() uint32 {
 | 
						|
	return (c.lcidAndFlags & 0xf0000000) >> 28
 | 
						|
}
 | 
						|
 | 
						|
func readCollation(r *tdsBuffer) (res collation) {
 | 
						|
	res.lcidAndFlags = r.uint32()
 | 
						|
	res.sortId = r.byte()
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
func writeCollation(w io.Writer, col collation) (err error) {
 | 
						|
	if err = binary.Write(w, binary.LittleEndian, col.lcidAndFlags); err != nil {
 | 
						|
		return
 | 
						|
	}
 | 
						|
	err = binary.Write(w, binary.LittleEndian, col.sortId)
 | 
						|
	return
 | 
						|
}
 |