pure-data/src/x_vexp.h

/* Copyright (c) IRCAM.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution.  */

/* "expr" was written by Shahrokh Yadegari c. 1989. -msp */
/* "expr~" and "fexpr~" conversion by Shahrokh Yadegari c. 1999,2000 */

#define MSP
#ifdef PD
#undef MSP
#endif

#ifdef PD
#include "m_pd.h"
#include "s_stuff.h"
/*
 * below is added to account for an anomoly in windows implementation of snprintf()
 */
#undef snprintf
#define snprintf

#else /* MSP */
#include "ext.h"
#include "z_dsp.h"
typedef float t_float;      // t_float is from m_pd.h
#endif

#define fts_malloc
#define fts_calloc
#define fts_free
#define fts_realloc

void *
ex_calloc(size_t count, size_t size);

void
ex_free(void *ptr);

void *
ex_malloc(size_t size);

void *
ex_realloc(void *ptr, size_t size);


#define fts_atom_t
#define fts_object_t
fts_symbol_t;

#ifdef MSP
#define t_atom
#define t_symbol
#define pd_new
#define pd_free
#define t_outlet
#define t_binbuf
typedef t_class         *t_pd;
typedef float           t_floatarg;

#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <errno.h>

void pd_error(void *object, char *fmt, ...);

#endif /* MSP */

#define post_error
#define fts_is_floatg(x)

#define fts_new_symbol_copy

#define fts_symbol_name(x)

/*
 * Currently the maximum number of variables (inlets) that are supported
 * is 100.
 */

#define EX_MAX_INLETS
#define EX_MINODES

/* terminal defines */

/*
 * operations
 * (x<<16|y) x defines the level of precedence,
 * the lower the number the lower the precedence
 * separators are defines as operators just for convenience
 */

#define OP_SEMI
#define OP_COMMA
#define OP_STORE
#define OP_LOR
#define OP_LAND
#define OP_OR
#define OP_XOR
#define OP_AND
#define OP_NE
#define OP_EQ
#define OP_GE
#define OP_GT
#define OP_LE
#define OP_LT
#define OP_SR
#define OP_SL
#define OP_SUB
#define OP_ADD
#define OP_MOD
#define OP_DIV
#define OP_MUL
#define OP_UMINUS
#define OP_NEG
#define OP_NOT
#define OP_RB
#define OP_LB
#define OP_RP
#define OP_LP
#define HI_PRE
#define PRE_MASK

#define name_ok(c)
#define unary_op(x)

struct ex_ex {};
#define exNULL

/* defines for ex_type */
#define ET_INT
#define ET_FLT
#define ET_OP
#define ET_STR
#define ET_TBL
#define ET_FUNC
#define ET_SYM
#define ET_VSYM
                                /* we treat parenthesis and brackets */
                                /* special to keep a pointer to their */
                                /* match in the content */
#define ET_LP
#define ET_LB
#define ET_II
#define ET_FI
#define ET_SI
#define ET_VI
#define ET_VEC
                                /* special types for fexpr~ */
#define ET_YO
#define ET_YOM1
#define ET_XI
#define ET_XI0
#define ET_VAR

/* defines for ex_flags */
#define EF_TYPE_MASK
#define EF_EXPR
#define EF_EXPR_TILDE
#define EF_FEXPR_TILDE

#define EF_STOP
#define EF_VERBOSE

#define IS_EXPR(x)
#define IS_EXPR_TILDE(x)
#define IS_FEXPR_TILDE(x)

#define SET_EXPR(x)

#define SET_EXPR_TILDE(x)

#define SET_FEXPR_TILDE(x)

/*
 * defines for expr_error
 */
#define EE_DZ
#define EE_BI_OUTPUT
#define EE_BI_INPUT
#define EE_NOTABLE
#define EE_NOVAR
#define EE_BADSYM

t_expr;

t_ex_func;

/* function prototypes for pd-related functions called within vexp.h */

extern int
max_ex_tab_store(struct expr *expr, t_symbol *s, struct ex_ex *arg,
                                struct ex_ex *rval, struct ex_ex *optr);
extern int
max_ex_tab(struct expr *expr, t_symbol *s, struct ex_ex *arg,
                                        int interpol, struct ex_ex *optr);
extern int max_ex_var(struct expr *expr, t_symbol *s, struct ex_ex *optr,
                                                                    int idx);
extern int max_ex_var_store(struct expr *, t_symbol *, struct ex_ex *,
                                                            struct ex_ex *);
extern int ex_getsym(char *p, t_symbol **s);
extern char *ex_symname(t_symbol *s);
void ex_mkvector(t_float *fp, t_float x, int size);

void ex_error(t_expr *e, const char *fmt, ...);

/* These pragmas are only used for MSVC, not MinGW or Cygwin <[email protected]> */
#ifdef _MSC_VER
#pragma warning (disable: 4305 4244)
#endif

#ifdef _WIN32
#define abort
void ABORT(void);
#endif