Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:05:32

0001 /*
0002  *  qp_exev_op_bool.h  --
0003  *
0004  *  Original: 24-Jan-1995 14:29
0005  *
0006  *  Author:   Maarten Ballintijn <Maarten.Ballintijn@cern.ch>
0007  *
0008  *  $Id$
0009  *
0010  *  $Log$
0011  *  Revision 1.3  1996/04/23 18:38:38  maartenb
0012  *  - Add RCS keywords
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 }