qse/ase/awk/val.h

82 lines
1.4 KiB
C
Raw Normal View History

2006-03-03 11:45:45 +00:00
/*
2006-03-22 16:05:50 +00:00
* $Id: val.h,v 1.6 2006-03-22 16:05:50 bacon Exp $
2006-03-03 11:45:45 +00:00
*/
#ifndef _XP_AWK_VAL_H_
#define _XP_AWK_VAL_H_
#ifndef _XP_AWK_AWK_H_
#error Never include this file directly. Include <xp/awk/awk.h> instead
#endif
2006-03-04 15:54:37 +00:00
enum
{
2006-03-07 15:55:14 +00:00
XP_AWK_VAL_NIL,
2006-03-04 15:54:37 +00:00
XP_AWK_VAL_INT,
XP_AWK_VAL_REAL,
XP_AWK_VAL_STR
};
2006-03-03 11:45:45 +00:00
typedef struct xp_awk_val_t xp_awk_val_t;
2006-03-07 15:55:14 +00:00
typedef struct xp_awk_val_nil_t xp_awk_val_nil_t;
2006-03-03 11:45:45 +00:00
typedef struct xp_awk_val_int_t xp_awk_val_int_t;
typedef struct xp_awk_val_real_t xp_awk_val_real_t;
typedef struct xp_awk_val_str_t xp_awk_val_str_t;
#define XP_AWK_VAL_HDR \
2006-03-22 16:05:50 +00:00
int type: 2; \
int ref: 30
2006-03-03 11:45:45 +00:00
struct xp_awk_val_t
{
XP_AWK_VAL_HDR;
};
2006-03-07 15:55:14 +00:00
/* XP_AWK_VAL_NIL */
struct xp_awk_val_nil_t
{
XP_AWK_VAL_HDR;
};
2006-03-04 15:54:37 +00:00
/* XP_AWK_VAL_INT */
2006-03-03 11:45:45 +00:00
struct xp_awk_val_int_t
{
XP_AWK_VAL_HDR;
xp_long_t val;
};
2006-03-04 15:54:37 +00:00
/* XP_AWK_VAL_REAL */
2006-03-03 11:45:45 +00:00
struct xp_awk_val_real_t
{
XP_AWK_VAL_HDR;
xp_real_t val;
};
2006-03-04 15:54:37 +00:00
/* XP_AWK_VAL_STR */
2006-03-03 11:45:45 +00:00
struct xp_awk_val_str_t
{
XP_AWK_VAL_HDR;
xp_char_t* buf;
xp_size_t len;
};
2006-03-04 15:54:37 +00:00
#ifdef __cplusplus
extern "C" {
#endif
2006-03-07 15:55:14 +00:00
extern xp_awk_val_t* xp_awk_val_nil;
2006-03-05 17:07:33 +00:00
xp_awk_val_t* xp_awk_makeintval (xp_long_t v);
xp_awk_val_t* xp_awk_makestrval (const xp_char_t* str, xp_size_t len);
2006-03-04 15:54:37 +00:00
void xp_awk_freeval (xp_awk_val_t* val);
2006-03-07 15:55:14 +00:00
xp_awk_val_t* xp_awk_cloneval (xp_awk_val_t* val);
2006-03-15 15:34:59 +00:00
xp_bool_t xp_awk_isvaltrue (xp_awk_val_t* val);
2006-03-04 15:54:37 +00:00
void xp_awk_printval (xp_awk_val_t* val);
#ifdef __cplusplus
}
#endif
2006-03-03 11:45:45 +00:00
#endif