Back to home page

EIC code displayed by LXR

 
 

    


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

0001 /*
0002  *  qp_exe_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:31  maartenb
0012  *  - Add RCS keywords
0013  *
0014  *
0015  */
0016 
0017 case FC_OR:
0018     o1 = &stack[frame[framep]];
0019     o2 = &stack[frame[framep-1]];
0020     POP_FRAME(1);
0021     *((bool *) o2) = *((bool *) o1) || *((bool *) o2);
0022     break;
0023 
0024 case FC_AND:
0025     o1 = &stack[frame[framep]];
0026     o2 = &stack[frame[framep-1]];
0027     POP_FRAME(1);
0028     *((bool *) o2) = *((bool *) o1) && *((bool *) o2);
0029     break;
0030 
0031 case FC_NOT:
0032     o1 = &stack[frame[framep]];
0033     *((bool *) o1) = ! *((bool *) o1);
0034     break;
0035 
0036 case FC_VAND:
0037 {
0038     int     n, i, inc_o1;
0039     bool        v;
0040 
0041     n = frame_size[framep];
0042     o1 = &stack[frame[framep]];
0043     inc_o1 = datatype_size[D_BOOL];
0044 
0045     v = TRUE;
0046     for ( i=0 ; i < n ; i++ ) {
0047         v = v && *((bool *) o1);
0048         o1 += inc_o1;
0049     }
0050 
0051     POP_FRAME(1);
0052     NEW_FRAME(OP_DTYPE,1,r);
0053 
0054     *((OP_TYPE *) r) = v;
0055 }
0056 
0057 case FC_VOR:
0058 {
0059     int     n, i, inc_o1;
0060     bool        v;
0061 
0062     n = frame_size[framep];
0063     o1 = &stack[frame[framep]];
0064     inc_o1 = datatype_size[D_BOOL];
0065 
0066     v = FALSE;
0067     for ( i=0 ; i < n ; i++ ) {
0068         v = v || *((bool *) o1);
0069         o1 += inc_o1;
0070     }
0071 
0072     POP_FRAME(1);
0073     NEW_FRAME(OP_DTYPE,1,r);
0074 
0075     *((OP_TYPE *) r) = v;
0076     break;
0077 }