package hotime

//对象封装方便取用
type Obj struct {
	Data interface{}
	contextBase
}

func (this *Obj) Put(data interface{}) {
	this.Data = data
}

func (this *Obj) ToInt(err ...Error) int {
	if len(err) != 0 {
		this.Error = err[0]
	}
	return ObjToInt(this.Data, &this.Error)
}

func (this *Obj) ToInt64(err ...Error) int64 {
	if len(err) != 0 {
		this.Error = err[0]
	}
	return ObjToInt64(this.Data, &this.Error)
}

func (this *Obj) ToFloat64(err ...Error) float64 {
	if len(err) != 0 {
		this.Error = err[0]
	}
	return ObjToFloat64(this.Data, &this.Error)
}

//获取向上取整float64
func (this *Obj) ToCeilFloat64(err ...*Error) float64 {
	if len(err) != 0 {
		this.Error = *err[0]
	}
	v := ObjToCeilFloat64(this.Data, err...)
	return v

}

func (this *Obj) ToStr() string {

	return ObjToStr(this.Data)
}

func (this *Obj) ToMap(err ...Error) Map {
	if len(err) != 0 {
		this.Error = err[0]
	}
	return ObjToMap(this.Data, &this.Error)
}

func (this *Obj) ToSlice(err ...Error) Slice {
	if len(err) != 0 {
		this.Error = err[0]
	}
	return ObjToSlice(this.Data, &this.Error)
}

func (this *Obj) ToMapArray(err ...Error) []Map {
	if len(err) != 0 {
		this.Error = err[0]
	}
	return ObjToMapArray(this.Data, &this.Error)
}

func (this *Obj) ToObj() interface{} {

	return this.Data
}

//获取向上取整Int64
func (this *Obj) ToCeilInt64(err ...*Error) int64 {
	if len(err) != 0 {
		this.Error = *err[0]
	}
	v := ObjToCeilInt64(this.Data, err...)
	return v

}

//获取向上取整Int
func (this *Obj) ToCeilInt(err ...*Error) int {
	if len(err) != 0 {
		this.Error = *err[0]
	}
	v := ObjToCeilInt(this.Data, err...)
	return v

}
