mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-21 19:21:47 +00:00
[cexpr] Expose cexpr assignment
This makes it much easier for other systems (in particular, cvar) to copy values safely.
This commit is contained in:
parent
021ec4962b
commit
aad4546c01
2 changed files with 6 additions and 6 deletions
|
@ -112,6 +112,8 @@ typedef struct exprenum_s {
|
||||||
exprtab_t *symtab;
|
exprtab_t *symtab;
|
||||||
} exprenum_t;
|
} exprenum_t;
|
||||||
|
|
||||||
|
exprval_t *cexpr_assign_value (exprval_t *dst, const exprval_t *src,
|
||||||
|
exprctx_t *context);
|
||||||
int cexpr_parse_enum (exprenum_t *enm, const char *str,
|
int cexpr_parse_enum (exprenum_t *enm, const char *str,
|
||||||
const exprctx_t *context, void *data);
|
const exprctx_t *context, void *data);
|
||||||
binop_t *cexpr_find_cast (exprtype_t *dst_type, exprtype_t *src_type) __attribute__((pure));
|
binop_t *cexpr_find_cast (exprtype_t *dst_type, exprtype_t *src_type) __attribute__((pure));
|
||||||
|
|
|
@ -51,8 +51,6 @@
|
||||||
|
|
||||||
#include "QF/cexpr.h"
|
#include "QF/cexpr.h"
|
||||||
|
|
||||||
static exprval_t *assign_expr (exprval_t *dst, const exprval_t *src,
|
|
||||||
exprctx_t *context);
|
|
||||||
static exprval_t *binary_expr (int op, const exprval_t *a, const exprval_t *b,
|
static exprval_t *binary_expr (int op, const exprval_t *a, const exprval_t *b,
|
||||||
exprctx_t *context);
|
exprctx_t *context);
|
||||||
static exprval_t *field_expr (const exprval_t *a, const exprval_t *b,
|
static exprval_t *field_expr (const exprval_t *a, const exprval_t *b,
|
||||||
|
@ -109,7 +107,7 @@ yyerror (void *scanner, exprctx_t *context, const char *s)
|
||||||
%%
|
%%
|
||||||
|
|
||||||
start
|
start
|
||||||
: expr { assign_expr (context->result, $1, context); }
|
: expr { cexpr_assign_value (context->result, $1, context); }
|
||||||
;
|
;
|
||||||
|
|
||||||
uexpr
|
uexpr
|
||||||
|
@ -138,7 +136,7 @@ uexpr
|
||||||
|
|
||||||
expr
|
expr
|
||||||
: uexpr
|
: uexpr
|
||||||
| expr '=' expr { $$ = assign_expr ($1, $3, context); }
|
| expr '=' expr { $$ = cexpr_assign_value ($1, $3, context); }
|
||||||
| expr SHL expr { $$ = binary_expr (SHL, $1, $3, context); }
|
| expr SHL expr { $$ = binary_expr (SHL, $1, $3, context); }
|
||||||
| expr SHR expr { $$ = binary_expr (SHR, $1, $3, context); }
|
| expr SHR expr { $$ = binary_expr (SHR, $1, $3, context); }
|
||||||
| expr '+' expr { $$ = binary_expr ('+', $1, $3, context); }
|
| expr '+' expr { $$ = binary_expr ('+', $1, $3, context); }
|
||||||
|
@ -185,8 +183,8 @@ arg_expr
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
static exprval_t *
|
exprval_t *
|
||||||
assign_expr (exprval_t *dst, const exprval_t *src, exprctx_t *context)
|
cexpr_assign_value (exprval_t *dst, const exprval_t *src, exprctx_t *context)
|
||||||
{
|
{
|
||||||
binop_t *binop;
|
binop_t *binop;
|
||||||
if (!dst || !src) {
|
if (!dst || !src) {
|
||||||
|
|
Loading…
Reference in a new issue