var.h

00001 /* var.h -- Variable Definition
00002    Copyright 2001, 2002 Free Software Foundation, Inc.
00003    Written by Stephane Carrez (stcarrez@worldnet.fr)
00004 
00005 This file is part of GEL.
00006 
00007 GEL is free software; you can redistribute it and/or modify
00008 it under the terms of the GNU General Public License as published by
00009 the Free Software Foundation; either version 2, or (at your option)
00010 any later version.
00011 
00012 GEL is distributed in the hope that it will be useful,
00013 but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 GNU General Public License for more details.
00016 
00017 You should have received a copy of the GNU General Public License
00018 along with GEL; see the file COPYING.  If not, write to
00019 the Free Software Foundation, 59 Temple Place - Suite 330,
00020 Boston, MA 02111-1307, USA.  */
00021 
00022 #ifndef _GEL_VAR_H
00023 #define _GEL_VAR_H
00024 
00025 #include <stddef.h>
00026 
00027 union var_value
00028 {
00029   unsigned char u8;
00030   unsigned short u16;
00031   unsigned long u32;
00032 };
00033 
00034 enum var_type
00035 {
00036   V_UINT8,
00037   V_UINT16,
00038   V_UINT32
00039 };
00040 
00041 enum var_format
00042 {
00043   F_INTEGER,
00044   F_ONOFF
00045 };
00046 
00047 struct var_def
00048 {
00049   const char      *title;
00050   enum var_type   type : 8;
00051   enum var_format format : 8;
00052   unsigned long   min_value;
00053   unsigned long   max_value;
00054   unsigned long   def_value;
00055   union
00056   {
00057     unsigned char *uint8;
00058     unsigned short *uint16;
00059     unsigned long *uint32;
00060   } u;
00061 };
00062 
00067 extern unsigned long var_value (const struct var_def *var);
00068 
00077 extern void var_format (char *buf, const struct var_def *var,
00078                         unsigned long value);
00079 
00090 extern void var_set_integer (const struct var_def *var, unsigned long value);
00091 
00096 extern void var_register (const struct var_def *var);
00097 
00098 extern unsigned var_count;
00099 extern const struct var_def *var_list[];
00100 
00101 #endif