Back to home page

EIC code displayed by LXR

 
 

    


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

0001 /*
0002  *  qp_value.h  --
0003  *  Store for possibly multi-dimensional value.
0004  *
0005  *  Original:  1-Nov-1994 15:08
0006  *
0007  *  Author:   Maarten Ballintijn <Maarten.Ballintijn@cern.ch>
0008  *
0009  *  $Id$
0010  *
0011  *  $Log$
0012  *  Revision 1.4  1996/04/23 18:39:08  maartenb
0013  *  - Add RCS keywords
0014  *
0015  *
0016  */
0017 
0018 #ifndef CERN_VALUE
0019 #define CERN_VALUE
0020 
0021 #include    <stdio.h>
0022 
0023 
0024 #include    "cern_types.h"
0025 
0026 
0027 typedef struct _value_ Value;
0028 
0029 
0030 #include    "fcode.h"
0031 #include    "qp_dimension.h"
0032 #include    "qp_signature.h"
0033 
0034 
0035 
0036 typedef union {
0037         /* scalar values */
0038         bool        bval;
0039         UInt32      uval;
0040         UInt64      luval;
0041         Int32       ival;
0042         Int64       lival;
0043         Float32     fval;
0044         Float64     lfval;
0045         String      sval;
0046         /* multi dim array values */
0047         bool        *vbval;
0048         UInt32      *vuval;
0049         Int32       *vival;
0050         Float32     *vfval;
0051         Float64     *vdval;
0052         String      *vsval;
0053         /* Acces via Int32 array */
0054         Int32       buf[2];
0055 } Uval;
0056 
0057 
0058 struct _value_ {
0059     Dimension   *d;
0060     Uval        u;
0061 };
0062 
0063 void
0064 val_print( FILE * fp, Value * v );
0065 
0066 void
0067 val_dump( FILE * fp, int lvl, Value * v );
0068 
0069 Value *
0070 val_eval( FCode fc, int valc, Value *valv[MAX_DIMENSION], int * err );
0071 
0072 Value *
0073 val_comis( Signature * s, int valc, Value *valv[MAX_DIMENSION],  int * err );
0074 
0075 Value *
0076 val_new_bool( bool bval );
0077 
0078 Value *
0079 val_new_uint( UInt32 uval );
0080 
0081 Value *
0082 val_new_ulong( UInt64 uval );
0083 
0084 Value *
0085 val_new_int( Int32 ival );
0086 
0087 Value *
0088 val_new_float( Float64 lfval );
0089 
0090 Value *
0091 val_new_double( Float64 lfval );
0092 
0093 Value *
0094 val_new_vfloat( Dimension *d, Float32 *vfval );
0095 
0096 Value *
0097 val_new_vint( Dimension *d, Int32 *vival );
0098 
0099 Value *
0100 val_new_str( String sval );
0101 
0102 Value *
0103 val_copy( Value * v );
0104 
0105 void
0106 val_del( Value * v );
0107 
0108 #endif  /*  CERN_VALUE  */