View Raw SPL
/*****************************************************************************
*                                                                            *
*   SERIES.H     Copyright (C) 1997-2020 DSP Development Corporation         *
*                               All Rights Reserved                          *
*                                                                            *
*   Author:      Randy Race                                                  *
*                                                                            *
*   Synopsis:    Data type and misc macros                                   *
*                                                                            *
*   Revisions:    7 Jun 1997  RRR  Creation                                  *
*                29 Dec 1998  RRR  Item types and extended styles            *
*                30 Nov 2020  RRR  Logicals                                  *
*                                                                            *
*****************************************************************************/

#ifndef _INC_SERIES_H
#define _INC_SERIES_H

/* type of variables */
#define UNSPECIFIED_VARIABLE 0  /* temporary unspecified type */
#define GLOBAL_VARIABLE      1  /* global */
#define LOCAL_VARIABLE       2  /* local to a user defined function */
#define USER_FUNCTION        3  /* user defined function */
#define HOT_VARIABLE         4  /* global wired into the dependency graph */
#define FORMAL_VARIABLE      5  /* formal parameter to user defined function */


/* argument and variable value types */
#define INTEGER_VALUE           1
#define REAL_VALUE              2
#define COMPLEX_VALUE           3
#define STRING_VALUE            4
#define SERIES_VALUE            5
#define WINDOW_VALUE            6
#define LOGICAL_VALUE         119
#define UNSPECIFIED_VALUE     (-11)
#define UNDEFINED_VALUE       (-5)

/* variable type tests */
#define IS_INTEGER(v)         (argtype(v)==INTEGER_VALUE)
#define IS_REAL(v)            (argtype(v)==REAL_VALUE)
#define IS_COMPLEX(v)         (argtype(v)==COMPLEX_VALUE)
#define IS_STRING(v)          (argtype(v)==STRING_VALUE)
#define IS_SERIES(v)          (argtype(v)==SERIES_VALUE)
#define IS_WINDOW(v)          (argtype(v)==WINDOW_VALUE)
#define IS_LOGICAL(v)         (argtype(v)==LOGICAL_VALUE)
#define IS_ARG_UNSPECIFIED(v) (argtype(v)==UNSPECIFIED_VALUE)

#define IS_NUMERIC(v)         (IS_INTEGER(v)||IS_REAL(v)||IS_COMPLEX(v))
#define IS_ARRAY(v)           (IS_SERIES(v)||IS_WINDOW(v))
#define IS_SCALAR(v)          (IS_NUMERIC(v)||IS_LOGICAL(v))
#define IS_NUMERICTYPE(v)     (IS_ARRAY(v)||IS_NUMERIC(v))

/* unspecified formal variable */
#define IS_UNSPECIFIED(v)     (valuetype(v,2)==UNSPECIFIED_VALUE)

/* undefined local variable */
#define IS_UNDEFINED(v)       (valuetype(v,2)==UNDEFINED_VALUE)

/* extended plot styles */
#define EX_BAR_STYLE        (0x0001)
#define EX_BAR_TOPCLR       (0x0002)
#define EX_WIN_NOSCALE      (0x0004)
#define EX_BAR_CENTER       (0x0008)
#define EX_STEP_CENTER      (0x0010)
#define EX_BAR_GAP          (0x0020)
#define EX_BAR_NOBORDER     (0x0040)
#define EX_FULL_BASELINE    (0x0080)
#define EX_LABEL_STICKY     (0x0100)
#define EX_WIN_X_NOSCALE    (0x0200)
#define EX_WIN_Y_NOSCALE    (0x0400)
#define EX_AUTOY_POINTS     (0x0800)


/* series item types */
#define ITEM_TYPE_SERIES    (0)
#define ITEM_TYPE_XY        (1)
#define ITEM_TYPE_LIST      (2)
#define ITEM_TYPE_ERRORBAR  (3)
#define ITEM_TYPE_EQUIVOL   (5)
#define ITEM_TYPE_YSYMPLOT  (6)
#define ITEM_TYPE_XYSYMPLOT (7)
#define ITEM_TYPE_XYZ       (8)

#define ISERRORBAR(series)   (itemtype(series) == ITEM_TYPE_ERRORBAR)
#define ISEQUIVOL(series)    (itemtype(series) == ITEM_TYPE_EQUIVOL)
#define ISLIST(series)       (itemtype(series) == ITEM_TYPE_LIST)
#define ISYSYMPLOT(series)   (itemtype(series) == ITEM_TYPE_YSYMPLOT)
#define ISXYSYMPLOT(series)  (itemtype(series) == ITEM_TYPE_XYSYMPLOT)
#define ISSYMBOLPLOT(series) (ISYSYMPLOT(series) || ISXYSYMPLOT(series))
#define ISXYSERIES(series)   (itemtype(series) == ITEM_TYPE_XY)
#define ISXYZSERIES(series)  (itemtype(series) == ITEM_TYPE_XYZ)


/* useful constants */
#ifndef TRUE
#define TRUE  1
#endif

#ifndef FALSE
#define FALSE 0
#endif


#endif /* _INC_SERIES_H */