params.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
源码类别:

通讯编程

开发平台:

Visual C++

  1. /*
  2.  * Xgraph parameters
  3.  */
  4. #ifndef _PARAMS_H_
  5. #define _PARAMS_H_
  6. #include "xgraph.h"
  7. /* If you have an ANSI compiler,  some checking will be done */
  8. #ifdef __STDC__
  9. #define DECLARE(func, rtn, args) extern rtn func args
  10. #else
  11. #define DECLARE(func, rtn, args) extern rtn func ()
  12. #endif
  13. typedef enum param_types_defn {
  14.     INT, STR, PIXEL, FONT, STYLE, BOOL, DBL
  15. }       param_types;
  16. typedef struct params_int_defn {
  17.     param_types type; /* INT */
  18.     int     value;
  19. }       param_int;
  20. typedef struct params_str_defn {
  21.     param_types type; /* STR */
  22.     char   *value;
  23. }       param_str;
  24. typedef struct params_pix_defn {
  25.     param_types type; /* PIXEL */
  26.     XColor  value;
  27. }       param_pix;
  28. typedef struct params_font_defn {
  29.     param_types type; /* FONT */
  30.     XFontStruct *value;
  31. }       param_font;
  32. typedef struct params_style_defn {
  33.     param_types type; /* STYLE */
  34.     int     len;
  35.     char   *dash_list;
  36. }       param_style;
  37. typedef struct params_bool_defn {
  38.     param_types type; /* BOOL */
  39.     int     value;
  40. }       param_bool;
  41. typedef struct params_dbl_defn {
  42.     param_types type; /* DBL */
  43.     double  value;
  44. }       param_dbl;
  45. typedef union params_defn {
  46.     param_types type;
  47.     param_int intv; /* INT */
  48.     param_str strv; /* STR */
  49.     param_pix pixv; /* PIXEL */
  50.     param_font fontv; /* FONT */
  51.     param_style stylev; /* STYLE */
  52.     param_bool boolv; /* BOOL */
  53.     param_dbl dblv; /* DBL */
  54. }       params;
  55. DECLARE(param_init, void, (Display * disp, Colormap cmap));
  56. DECLARE(param_set, void, (char *name, param_types type, char *val));
  57. DECLARE(param_reset, void, (char *name, char *val));
  58. DECLARE(param_get, params *, (char *name, params * val));
  59. DECLARE(param_dump, void, ());
  60. #ifdef stricmp
  61. #undef stricmp
  62. #endif
  63. DECLARE(stricmp, int, (char *a, char *b));
  64. /* Some convenience macros */
  65. extern params param_temp,
  66.        *param_temp_ptr;
  67. extern XColor param_null_color;
  68. extern param_style param_null_style;
  69. #define PM_INT(name)
  70. ((param_temp_ptr = param_get(name, &param_temp)) ? 
  71.  param_temp_ptr->intv.value : 
  72.  (abort(), (int) 0))
  73. #define PM_STR(name)
  74. ((param_temp_ptr = param_get(name, &param_temp)) ? 
  75.  param_temp_ptr->strv.value : 
  76.  (abort(), (char *) 0))
  77. #define PM_COLOR(name)
  78. ((param_temp_ptr = param_get(name, &param_temp)) ? 
  79.  param_temp_ptr->pixv.value : 
  80.  (abort(), param_null_color))
  81. #define PM_PIXEL(name)
  82. ((param_temp_ptr = param_get(name, &param_temp)) ? 
  83.  param_temp_ptr->pixv.value.pixel : 
  84.  (abort(), (Pixel) 0))
  85. #define PM_FONT(name)
  86. ((param_temp_ptr = param_get(name, &param_temp)) ? 
  87.  param_temp_ptr->fontv.value : 
  88.  (abort(), (XFontStruct *) 0))
  89. #define PM_STYLE(name)
  90. ((param_temp_ptr = param_get(name, &param_temp)) ? 
  91.  param_temp_ptr->stylev : 
  92.  (abort(), param_null_style))
  93. #define PM_BOOL(name)
  94. ((param_temp_ptr = param_get(name, &param_temp)) ? 
  95.  param_temp_ptr->boolv.value : 
  96.  (abort(), 0))
  97. #define PM_DBL(name)
  98. ((param_temp_ptr = param_get(name, &param_temp)) ? 
  99.  param_temp_ptr->dblv.value : 
  100.  (abort(), 0.0))
  101. #endif /* _PARAMS_H_ */