def numericComparison(cv: concreteValue, nco: numericComparisonOperator, nv: numericValue): v1 = int(cv.cv_integer) if cv.inran('cv_integer') else \ cv.cv_decimal if cv.inran('cv_decimal') else \ int(cv.cv_string) v2 = nv.nv_decimal if nv.inran('decimalValue') else int(nv.nv_integer) return v1 == v2 if nco == nco_eq else \ v1 != v2 if nco == nco_neq else \ v1 > v2 if nco == nco_gt else \ v1 >= v2 if nco == nco_ge else \ v1 < v2 if nco == nco_lt else \ v1 <= v2
def stringComparison(cv: concreteValue, sco: stringComparisonOperator, sv: stringValue) -> stringValue: v1 = str(cv.cv_integer) if cv.inran('cv_integer') else \ str(cv.cv_decimal) if sv.inran('cv_decimal') else \ str(cv.cv_string) v2 = str(sv) return v1 == v2 if sco == sco_eq else v1 != v1