コード例 #1
0
ファイル: prepared.go プロジェクト: jmptrader/query
func (this *preparedCache) get(name value.Value) *Prepared {
	if name.Type() != value.STRING || !name.Truth() {
		return nil
	}
	this.RLock()
	rv := this.prepareds[name.Actual().(string)]
	this.RUnlock()
	return rv
}
コード例 #2
0
ファイル: logic_not.go プロジェクト: pkdevboxy/query
func (this *Not) Apply(context Context, arg value.Value) (value.Value, error) {
	switch arg.Type() {
	case value.MISSING, value.NULL:
		return arg, nil
	default:
		if arg.Truth() {
			return value.FALSE_VALUE, nil
		} else {
			return value.TRUE_VALUE, nil
		}
	}
}
コード例 #3
0
ファイル: prepared.go プロジェクト: pkdevboxy/query
func (this *preparedCache) get(name value.Value, track bool) *Prepared {
	if name.Type() != value.STRING || !name.Truth() {
		return nil
	}
	this.RLock()
	defer this.RUnlock()
	rv := this.prepareds[name.Actual().(string)]
	if rv != nil {
		if track {
			atomic.AddInt32(&rv.uses, 1)
			rv.lastUse = time.Now()
		}
		return rv.prepared
	}
	return nil
}