File indexing completed on 2025-02-21 10:05:33
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 case FC_LT + (D_STR * 64):
0018 case FC_LE + (D_STR * 64):
0019 case FC_GT + (D_STR * 64):
0020 case FC_GE + (D_STR * 64):
0021 case FC_EQ + (D_STR * 64):
0022 case FC_NE + (D_STR * 64):
0023 case FC_CT + (D_STR * 64):
0024 {
0025 char tmp1[QP_STR_MAX], tmp2[QP_STR_MAX];
0026 int i, n = 1, d;
0027
0028 if ( frame_size[framep] != 1 ) {
0029 o1 = &stack[frame[framep]];
0030 inc_o1 = datatype_size[D_STR];
0031 n = frame_size[framep];
0032 } else {
0033 strncpy( tmp1, (char *) &stack[frame[framep]], QP_STR_MAX );
0034 o1 = (Int32 *) tmp1;
0035 inc_o1 = 0;
0036 }
0037 if ( frame_size[framep-1] != 1 ) {
0038 o2 = &stack[frame[framep-1]];
0039 inc_o2 = datatype_size[D_STR];
0040 qp_assert( n==1 || n==frame_size[framep-1] );
0041 n = frame_size[framep-1];
0042 } else {
0043 strncpy( tmp2, (char *) &stack[frame[framep-1]], QP_STR_MAX );
0044 o2 = (Int32 *) tmp2;
0045 inc_o2 = 0;
0046 }
0047 POP_FRAME(2);
0048
0049 NEW_FRAME(D_BOOL,n,r);
0050 inc_r = datatype_size[D_BOOL];
0051
0052 o1 += inc_o1 * (n-1);
0053 o2 += inc_o2 * (n-1);
0054 r += inc_r * (n-1);
0055 for ( i=0 ; i < n ; i++ ) {
0056
0057 *((bool *) r) = FALSE;
0058 d = strncasecmp( (char *) o1, (char *) o2, QP_STR_MAX );
0059 switch ( fc ) {
0060 case FC_LT+(D_STR * 64): if ( d < 0 ) *((bool*)r)=TRUE;break;
0061 case FC_LE+(D_STR * 64): if ( d <= 0 ) *((bool*)r)=TRUE;break;
0062 case FC_GT+(D_STR * 64): if ( d > 0 ) *((bool*)r)=TRUE;break;
0063 case FC_GE+(D_STR * 64): if ( d >= 0 ) *((bool*)r)=TRUE;break;
0064 case FC_EQ+(D_STR * 64): if ( d == 0 ) *((bool*)r)=TRUE;break;
0065 case FC_NE+(D_STR * 64): if ( d != 0 ) *((bool*)r)=TRUE;break;
0066 case FC_CT+(D_STR * 64): if ( d == 0 ) *((bool*)r)=TRUE;break;
0067 }
0068
0069 o1 -= inc_o1;
0070 o2 -= inc_o2;
0071 r -= inc_r;
0072 }
0073 break;
0074 }
0075
0076
0077
0078
0079
0080
0081
0082 case FC_LTLT + (D_STR * 64):
0083 case FC_LTLE + (D_STR * 64):
0084 case FC_LELT + (D_STR * 64):
0085 case FC_LELE + (D_STR * 64):
0086 case FC_GTGT + (D_STR * 64):
0087 case FC_GTGE + (D_STR * 64):
0088 case FC_GEGT + (D_STR * 64):
0089 case FC_GEGE + (D_STR * 64):
0090 {
0091 char tmp1[QP_STR_MAX], tmp2[QP_STR_MAX], tmp3[QP_STR_MAX];
0092 int i, n = 1;
0093
0094 if ( frame_size[framep] != 1 ) {
0095 o1 = &stack[frame[framep]];
0096 inc_o1 = datatype_size[D_STR];
0097 n = frame_size[framep];
0098 } else {
0099 strncpy( tmp1, (char *) &stack[frame[framep]], QP_STR_MAX );
0100 o1 = (Int32 *) tmp1;
0101 inc_o1 = 0;
0102 }
0103 if ( frame_size[framep-1] != 1 ) {
0104 o2 = &stack[frame[framep-1]];
0105 inc_o2 = datatype_size[D_STR];
0106 qp_assert( n==1 || n==frame_size[framep-1] );
0107 n = frame_size[framep-1];
0108 } else {
0109 strncpy( tmp2, (char *) &stack[frame[framep-1]], QP_STR_MAX );
0110 o2 = (Int32 *) tmp2;
0111 inc_o2 = 0;
0112 }
0113 if ( frame_size[framep-2] != 1 ) {
0114 o3 = &stack[frame[framep-2]];
0115 inc_o3 = datatype_size[D_STR];
0116 qp_assert( n==1 || n==frame_size[framep-2] );
0117 n = frame_size[framep-2];
0118 } else {
0119 strncpy( tmp3, (char *) &stack[frame[framep-2]], QP_STR_MAX );
0120 o3 = (Int32 *) tmp3;
0121 inc_o3 = 0;
0122 }
0123 POP_FRAME(3);
0124
0125 NEW_FRAME(D_BOOL,n,r);
0126 inc_r = datatype_size[D_BOOL];
0127
0128 o1 += inc_o1 * (n-1);
0129 o2 += inc_o2 * (n-1);
0130 o3 += inc_o3 * (n-1);
0131 r += inc_r * (n-1);
0132
0133 switch ( fc ) {
0134 case FC_LTLT + (D_STR * 64):
0135 for ( i=0 ; i < n ; i++ ) {
0136 if ( (strncasecmp( (char *)o1, (char *)o2, QP_STR_MAX) < 0) &&
0137 (strncasecmp( (char *)o2, (char *)o3, QP_STR_MAX) < 0)
0138 ) {
0139 *((bool *) r) = TRUE;
0140 } else {
0141 *((bool *) r) = FALSE;
0142 }
0143 o1 -= inc_o1; o2 -= inc_o2; o3 -= inc_o3; r -= inc_r;
0144 }
0145 break;
0146 case FC_LTLE + (D_STR * 64):
0147 for ( i=0 ; i < n ; i++ ) {
0148 if ( (strncasecmp( (char *)o1, (char *)o2, QP_STR_MAX) < 0) &&
0149 (strncasecmp( (char *)o2, (char *)o3, QP_STR_MAX) <= 0)
0150 ) {
0151 *((bool *) r) = TRUE;
0152 } else {
0153 *((bool *) r) = FALSE;
0154 }
0155 o1 -= inc_o1; o2 -= inc_o2; o3 -= inc_o3; r -= inc_r;
0156 }
0157 break;
0158 case FC_LELT + (D_STR * 64):
0159 for ( i=0 ; i < n ; i++ ) {
0160 if ( (strncasecmp( (char *)o1, (char *)o2, QP_STR_MAX) <= 0) &&
0161 (strncasecmp( (char *)o2, (char *)o3, QP_STR_MAX) < 0)
0162 ) {
0163 *((bool *) r) = TRUE;
0164 } else {
0165 *((bool *) r) = FALSE;
0166 }
0167 o1 -= inc_o1; o2 -= inc_o2; o3 -= inc_o3; r -= inc_r;
0168 }
0169 break;
0170 case FC_LELE + (D_STR * 64):
0171 for ( i=0 ; i < n ; i++ ) {
0172 if ( (strncasecmp( (char *)o1, (char *)o2, QP_STR_MAX) <= 0) &&
0173 (strncasecmp( (char *)o2, (char *)o3, QP_STR_MAX) <= 0)
0174 ) {
0175 *((bool *) r) = TRUE;
0176 } else {
0177 *((bool *) r) = FALSE;
0178 }
0179 o1 -= inc_o1; o2 -= inc_o2; o3 -= inc_o3; r -= inc_r;
0180 }
0181 break;
0182 case FC_GTGT + (D_STR * 64):
0183 for ( i=0 ; i < n ; i++ ) {
0184 if ( (strncasecmp( (char *)o1, (char *)o2, QP_STR_MAX) > 0) &&
0185 (strncasecmp( (char *)o2, (char *)o3, QP_STR_MAX) > 0)
0186 ) {
0187 *((bool *) r) = TRUE;
0188 } else {
0189 *((bool *) r) = FALSE;
0190 }
0191 o1 -= inc_o1; o2 -= inc_o2; o3 -= inc_o3; r -= inc_r;
0192 }
0193 break;
0194 case FC_GTGE + (D_STR * 64):
0195 for ( i=0 ; i < n ; i++ ) {
0196 if ( (strncasecmp( (char *)o1, (char *)o2, QP_STR_MAX) > 0) &&
0197 (strncasecmp( (char *)o2, (char *)o3, QP_STR_MAX) >= 0)
0198 ) {
0199 *((bool *) r) = TRUE;
0200 } else {
0201 *((bool *) r) = FALSE;
0202 }
0203 o1 -= inc_o1; o2 -= inc_o2; o3 -= inc_o3; r -= inc_r;
0204 }
0205 break;
0206 case FC_GEGT + (D_STR * 64):
0207 for ( i=0 ; i < n ; i++ ) {
0208 if ( (strncasecmp( (char *)o1, (char *)o2, QP_STR_MAX) >= 0) &&
0209 (strncasecmp( (char *)o2, (char *)o3, QP_STR_MAX) > 0)
0210 ) {
0211 *((bool *) r) = TRUE;
0212 } else {
0213 *((bool *) r) = FALSE;
0214 }
0215 o1 -= inc_o1; o2 -= inc_o2; o3 -= inc_o3; r -= inc_r;
0216 }
0217 break;
0218 case FC_GEGE + (D_STR * 64):
0219 for ( i=0 ; i < n ; i++ ) {
0220 if ( (strncasecmp( (char *)o1, (char *)o2, QP_STR_MAX) >= 0) &&
0221 (strncasecmp( (char *)o2, (char *)o3, QP_STR_MAX) >= 0)
0222 ) {
0223 *((bool *) r) = TRUE;
0224 } else {
0225 *((bool *) r) = FALSE;
0226 }
0227 o1 -= inc_o1; o2 -= inc_o2; o3 -= inc_o3; r -= inc_r;
0228 }
0229 break;
0230 default:
0231 qp_assert(0);
0232 break;
0233 }
0234 break;
0235 }
0236
0237
0238