MCPcopy Create free account
hub / github.com/RedisGraph/RedisGraph / UnsignedRange_TightenRange

Function UnsignedRange_TightenRange

src/util/range/unsigned_range.c:80–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

78}
79
80void UnsignedRange_TightenRange
81(
82 UnsignedRange *range,
83 int op,
84 uint64_t v
85) {
86 if(!range->valid) return;
87
88 switch(op) {
89 case OP_LT: // <
90 if(range->max >= v) {
91 range->include_max = false;
92 range->max = v;
93 }
94 break;
95 case OP_LE: // <=
96 if(range->max > v) {
97 range->include_max = true;
98 range->max = v;
99 }
100 break;
101 case OP_GT: // >
102 if(range->min <= v) {
103 range->include_min = false;
104 range->min = v;
105 }
106 break;
107 case OP_GE: // >=
108 if(range->min < v) {
109 range->include_min = true;
110 range->min = v;
111 }
112 break;
113 case OP_EQUAL: // =
114 // Make sure v is within range.
115 if(!UnsignedRange_ContainsValue(range, v)) {
116 range->valid = false;
117 return;
118 }
119
120 range->include_min = true;
121 range->include_max = true;
122 range->min = v;
123 range->max = v;
124 break;
125 default:
126 ASSERT(false && "operation not supported");
127 break;
128 }
129
130 // see if range is still valid
131 range->valid = UnsignedRange_IsValid(range);
132}
133
134void UnsignedRange_ToString
135(

Callers 4

_ConstructIteratorFunction · 0.85
_UseIdOptimizationFunction · 0.85

Calls 2

UnsignedRange_IsValidFunction · 0.85

Tested by 2