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
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
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
0047 bool *vbval;
0048 UInt32 *vuval;
0049 Int32 *vival;
0050 Float32 *vfval;
0051 Float64 *vdval;
0052 String *vsval;
0053
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