File indexing completed on 2025-02-21 10:05:32
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 case FC_OR:
0018 {
0019 OP_TYPE tmp1, tmp2;
0020 int i, n = 1;
0021
0022 if ( frame_size[framep] != 1 ) {
0023 o1 = &stack[frame[framep]];
0024 inc_o1 = datatype_size[OP_DTYPE];
0025 qp_assert( n==1 || n==frame_size[framep-1] );
0026 n = frame_size[framep];
0027 } else {
0028 tmp1 = *((OP_TYPE *) &stack[frame[framep]]);
0029 o1 = (Int32 *) &tmp1;
0030 inc_o1 = 0;
0031 }
0032 if ( frame_size[framep-1] != 1 ) {
0033 o2 = &stack[frame[framep-1]];
0034 inc_o2 = datatype_size[OP_DTYPE];
0035 qp_assert( n==1 || n==frame_size[framep-1] );
0036 n = frame_size[framep-1];
0037 } else {
0038 tmp2 = *((OP_TYPE *) &stack[frame[framep-1]]);
0039 o2 = (Int32 *) &tmp2;
0040 inc_o2 = 0;
0041 }
0042 POP_FRAME(2);
0043
0044 NEW_FRAME(OP_DTYPE,n,r);
0045 inc_r = datatype_size[OP_DTYPE];
0046
0047 o1 += inc_o1 * (n-1);
0048 o2 += inc_o2 * (n-1);
0049 r += inc_r * (n-1);
0050 for ( i=0 ; i < n ; i++ ) {
0051 *((OP_TYPE *) r) = *((OP_TYPE *) o1) || *((OP_TYPE *) o2);
0052 o1 -= inc_o1;
0053 o2 -= inc_o2;
0054 r -= inc_r;
0055 }
0056 break;
0057 }
0058
0059 case FC_AND:
0060 {
0061 OP_TYPE tmp1, tmp2;
0062 int i, n = 1;
0063
0064 if ( frame_size[framep] != 1 ) {
0065 o1 = &stack[frame[framep]];
0066 inc_o1 = datatype_size[OP_DTYPE];
0067 qp_assert( n==1 || n==frame_size[framep-1] );
0068 n = frame_size[framep];
0069 } else {
0070 tmp1 = *((OP_TYPE *) &stack[frame[framep]]);
0071 o1 = (Int32 *) &tmp1;
0072 inc_o1 = 0;
0073 }
0074 if ( frame_size[framep-1] != 1 ) {
0075 o2 = &stack[frame[framep-1]];
0076 inc_o2 = datatype_size[OP_DTYPE];
0077 qp_assert( n==1 || n==frame_size[framep-1] );
0078 n = frame_size[framep-1];
0079 } else {
0080 tmp2 = *((OP_TYPE *) &stack[frame[framep-1]]);
0081 o2 = (Int32 *) &tmp2;
0082 inc_o2 = 0;
0083 }
0084 POP_FRAME(2);
0085
0086 NEW_FRAME(OP_DTYPE,n,r);
0087 inc_r = datatype_size[OP_DTYPE];
0088
0089 o1 += inc_o1 * (n-1);
0090 o2 += inc_o2 * (n-1);
0091 r += inc_r * (n-1);
0092 for ( i=0 ; i < n ; i++ ) {
0093 *((OP_TYPE *) r) = *((OP_TYPE *) o1) && *((OP_TYPE *) o2);
0094 o1 -= inc_o1;
0095 o2 -= inc_o2;
0096 r -= inc_r;
0097 }
0098 break;
0099 }
0100
0101 case FC_NOT:
0102 {
0103 int i, n = 1;
0104
0105 o1 = &stack[frame[framep]];
0106 inc_o1 = datatype_size[OP_DTYPE];
0107 n = frame_size[framep];
0108
0109 o1 += inc_o1 * (n-1);
0110 for ( i=0 ; i < n ; i++ ) {
0111 *((OP_TYPE *) o1) = ! *((OP_TYPE *) o1);
0112 o1 -= inc_o1;
0113 }
0114 break;
0115 }