70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| //      $Id: value.h,v 1.5 1996-09-03 09:54:51 simona Exp $   
 | |
| // language types for Simulation and SimulationManager  
 | |
| // -------------------------------------------------------------------------
 | |
| 
 | |
| 
 | |
| #ifndef __VALUE_H
 | |
| #define __VALUE_H
 | |
| 
 | |
| #ifndef _string_h
 | |
| #include <string.h>
 | |
| #endif
 | |
| 
 | |
| #include <stdio.h>
 | |
| 
 | |
| #ifndef _iostream_h
 | |
| #include <iostream.h>
 | |
| #endif
 | |
| #ifdef __WATCOMC__
 | |
| #include <stdlib.h>
 | |
| 
 | |
| #endif
 | |
| 
 | |
| enum basetype
 | |
| {
 | |
|   UNDEFINED, VOID, INT, LONG, CHAR, DOUBLE, STRING
 | |
|   };
 | |
| 
 | |
| class Value
 | |
| {
 | |
|   basetype _type;
 | |
|   char _buf[20];
 | |
|   union {
 | |
|     char   c;
 | |
|     int    i;
 | |
|     long   l;
 | |
|     double d;
 | |
|   } v;
 | |
|   char* _s;
 | |
| 
 | |
| public:
 | |
| 
 | |
|   Value()         { _buf[0] = '\0';        _type = VOID; }
 | |
|   Value(long l)   { sprintf(_buf,"%ld",l); _type = LONG; }
 | |
|   Value(char* s)  { _s = s;               _type = STRING; }
 | |
|   Value(int i)    { sprintf(_buf,"%d",i);  _type = INT; }
 | |
|   Value(char c)   { sprintf(_buf,"%c",c);  _type = CHAR; }
 | |
|   Value(double d) { sprintf(_buf,"%lf",d); _type = DOUBLE; }
 | |
|   Value(Value& vl){ strcpy(_buf,vl._buf);  v = vl.v; _s = vl._s; 
 | |
|                     _type = vl._type; } 
 | |
| 
 | |
|   enum basetype type() { return _type; }
 | |
| 
 | |
|   operator int()    { sscanf(_type == STRING ? _s : _buf,"%d",&(v.i)); 
 | |
|                       return v.i; }
 | |
|   operator double() { sscanf(_type == STRING ? _s : _buf,"%lf",&(v.d));
 | |
|                       return v.d; }
 | |
|   operator char*()  { return _type == STRING ? _s : _buf;  }
 | |
|   operator long()   { sscanf(_type == STRING ? _s : _buf,"%ld",&(v.l));
 | |
|                       return v.l; }
 | |
|   operator char()   { sscanf(_type == STRING ? _s : _buf,"%c",&(v.c));
 | |
|                       return v.c; }
 | |
| 
 | |
|   Value& operator=(const Value& val);
 | |
| };
 | |
| 
 | |
| 
 | |
| #endif
 | |
| 
 | |
| // EOF langtypes.H
 |