drop a few unused fields from struct text_object
[monky] / src / text_object.h
1 /* -*- mode: c; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: t -*-
2  *
3  * Conky, a system monitor, based on torsmo
4  *
5  * Any original torsmo code is licensed under the BSD license
6  *
7  * All code written since the fork of torsmo is licensed under the GPL
8  *
9  * Please see COPYING for details
10  *
11  * Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen
12  * Copyright (c) 2005-2009 Brenden Matthews, Philip Kovacs, et. al.
13  *      (see AUTHORS)
14  * All rights reserved.
15  *
16  * This program is free software: you can redistribute it and/or modify
17  * it under the terms of the GNU General Public License as published by
18  * the Free Software Foundation, either version 3 of the License, or
19  * (at your option) any later version.
20  *
21  * This program is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24  * GNU General Public License for more details.
25  * You should have received a copy of the GNU General Public License
26  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
27  *
28  */
29 #ifndef _TEXT_OBJECT_H
30 #define _TEXT_OBJECT_H
31
32 #include "config.h"             /* for the defines */
33 #include "specials.h"           /* enum special_types */
34
35 enum text_object_type {
36         OBJ_read_tcp,
37         OBJ_addr,
38 #if defined(__linux__)
39         OBJ_addrs,
40 #endif /* __linux__ */
41 #ifndef __OpenBSD__
42         OBJ_acpiacadapter,
43         OBJ_adt746xcpu,
44         OBJ_adt746xfan,
45         OBJ_acpifan,
46         OBJ_acpitemp,
47         OBJ_battery,
48         OBJ_battery_time,
49         OBJ_battery_percent,
50         OBJ_battery_bar,
51         OBJ_battery_short,
52 #endif /* !__OpenBSD__ */
53         OBJ_buffers,
54         OBJ_cached,
55         OBJ_color,
56         OBJ_color0,
57         OBJ_color1,
58         OBJ_color2,
59         OBJ_color3,
60         OBJ_color4,
61         OBJ_color5,
62         OBJ_color6,
63         OBJ_color7,
64         OBJ_color8,
65         OBJ_color9,
66         OBJ_conky_version,
67         OBJ_conky_build_date,
68         OBJ_conky_build_arch,
69         OBJ_font,
70         OBJ_cpu,
71         OBJ_cpubar,
72 #ifdef X11
73         OBJ_cpugauge,
74         OBJ_cpugraph,
75         OBJ_loadgraph,
76 #endif /* X11 */
77         OBJ_diskio,
78         OBJ_diskio_read,
79         OBJ_diskio_write,
80 #ifdef X11
81         OBJ_diskiograph,
82         OBJ_diskiograph_read,
83         OBJ_diskiograph_write,
84 #endif /* X11 */
85         OBJ_downspeed,
86         OBJ_downspeedf,
87 #ifdef X11
88         OBJ_downspeedgraph,
89 #endif /* X11 */
90         OBJ_else,
91         OBJ_endif,
92         OBJ_eval,
93         OBJ_image,
94         OBJ_exec,
95         OBJ_execi,
96         OBJ_texeci,
97         OBJ_execbar,
98         OBJ_execibar,
99 #ifdef X11
100         OBJ_execgauge,
101         OBJ_execgraph,
102         OBJ_execigraph,
103         OBJ_execigauge,
104 #endif /* X11 */
105         OBJ_execp,
106         OBJ_execpi,
107         OBJ_freq,
108         OBJ_freq_g,
109         OBJ_fs_bar,
110         OBJ_fs_bar_free,
111         OBJ_fs_free,
112         OBJ_fs_free_perc,
113         OBJ_fs_size,
114         OBJ_fs_type,
115         OBJ_fs_used,
116         OBJ_fs_used_perc,
117         OBJ_goto,
118         OBJ_tab,
119         OBJ_hr,
120         OBJ_offset,
121         OBJ_voffset,
122         OBJ_alignr,
123         OBJ_alignc,
124         OBJ_i2c,
125         OBJ_platform,
126         OBJ_hwmon,
127 #if defined(__linux__)
128         OBJ_disk_protect,
129         OBJ_i8k_version,
130         OBJ_i8k_bios,
131         OBJ_i8k_serial,
132         OBJ_i8k_cpu_temp,
133         OBJ_i8k_left_fan_status,
134         OBJ_i8k_right_fan_status,
135         OBJ_i8k_left_fan_rpm,
136         OBJ_i8k_right_fan_rpm,
137         OBJ_i8k_ac_status,
138         OBJ_i8k_buttons_status,
139 #if defined(IBM)
140         OBJ_ibm_fan,
141         OBJ_ibm_temps,
142         OBJ_ibm_volume,
143         OBJ_ibm_brightness,
144         OBJ_smapi,
145 #ifdef X11
146         OBJ_smapi_bat_bar,
147 #endif /* X11 */
148         OBJ_smapi_bat_perc,
149         OBJ_smapi_bat_temp,
150         OBJ_smapi_bat_power,
151         OBJ_if_smapi_bat_installed,
152 #endif /* IBM */
153         /* information from sony_laptop kernel module
154          * /sys/devices/platform/sony-laptop */
155         OBJ_sony_fanspeed,
156         OBJ_if_gw,
157         OBJ_ioscheduler,
158         OBJ_gw_iface,
159         OBJ_gw_ip,
160         OBJ_laptop_mode,
161         OBJ_pb_battery,
162         OBJ_voltage_mv,
163         OBJ_voltage_v,
164         OBJ_wireless_essid,
165         OBJ_wireless_mode,
166         OBJ_wireless_bitrate,
167         OBJ_wireless_ap,
168         OBJ_wireless_link_qual,
169         OBJ_wireless_link_qual_max,
170         OBJ_wireless_link_qual_perc,
171         OBJ_wireless_link_bar,
172 #endif /* __linux__ */
173 #if defined(__FreeBSD__) || defined(__linux__)
174         OBJ_if_up,
175 #endif
176         OBJ_if_empty,
177         OBJ_if_match,
178         OBJ_if_existing,
179         OBJ_if_mounted,
180         OBJ_if_running,
181         OBJ_if_updatenr,
182         OBJ_top,
183         OBJ_top_mem,
184         OBJ_top_time,
185 #ifdef IOSTATS
186         OBJ_top_io,
187 #endif
188         OBJ_tail,
189         OBJ_head,
190         OBJ_lines,
191         OBJ_words,
192         OBJ_kernel,
193         OBJ_loadavg,
194         OBJ_machine,
195         OBJ_mails,
196         OBJ_new_mails,
197         OBJ_seen_mails,
198         OBJ_unseen_mails,
199         OBJ_flagged_mails,
200         OBJ_unflagged_mails,
201         OBJ_forwarded_mails,
202         OBJ_unforwarded_mails,
203         OBJ_replied_mails,
204         OBJ_unreplied_mails,
205         OBJ_draft_mails,
206         OBJ_trashed_mails,
207         OBJ_mboxscan,
208         OBJ_mem,
209         OBJ_memeasyfree,
210         OBJ_memfree,
211 #ifdef X11
212         OBJ_memgauge,
213         OBJ_memgraph,
214 #endif /* X11 */
215         OBJ_membar,
216         OBJ_memmax,
217         OBJ_memperc,
218         OBJ_mixer,
219         OBJ_mixerl,
220         OBJ_mixerr,
221 #ifdef X11
222         OBJ_mixerbar,
223         OBJ_mixerlbar,
224         OBJ_mixerrbar,
225 #endif /* X11 */
226         OBJ_if_mixer_mute,
227 #ifdef X11
228         OBJ_monitor,
229         OBJ_monitor_number,
230         OBJ_desktop,
231         OBJ_desktop_number,
232         OBJ_desktop_name,
233 #endif /* X11 */
234         OBJ_nameserver,
235         OBJ_nodename,
236         OBJ_nvidia,
237         OBJ_pre_exec,
238         OBJ_processes,
239         OBJ_running_processes,
240         OBJ_shadecolor,
241         OBJ_outlinecolor,
242         OBJ_stippled_hr,
243         OBJ_swap,
244         OBJ_swapfree,
245         OBJ_swapbar,
246         OBJ_swapmax,
247         OBJ_swapperc,
248         OBJ_sysname,
249         OBJ_text,
250         OBJ_time,
251         OBJ_utime,
252         OBJ_tztime,
253         OBJ_totaldown,
254         OBJ_totalup,
255         OBJ_updates,
256         OBJ_upspeed,
257         OBJ_upspeedf,
258 #ifdef X11
259         OBJ_upspeedgraph,
260 #endif /* X11 */
261         OBJ_uptime,
262         OBJ_uptime_short,
263         OBJ_user_names,
264         OBJ_user_terms,
265         OBJ_user_times,
266         OBJ_user_number,
267         OBJ_imap_messages,
268         OBJ_imap_unseen,
269         OBJ_pop3_unseen,
270         OBJ_pop3_used,
271 #if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
272                 || defined(__OpenBSD__)) && (defined(i386) || defined(__i386__))
273         OBJ_apm_adapter,
274         OBJ_apm_battery_time,
275         OBJ_apm_battery_life,
276 #endif /* __FreeBSD__ __OpenBSD__ */
277 #ifdef __OpenBSD__
278         OBJ_obsd_sensors_temp,
279         OBJ_obsd_sensors_fan,
280         OBJ_obsd_sensors_volt,
281         OBJ_obsd_vendor,
282         OBJ_obsd_product,
283 #endif /* __OpenBSD__ */
284 #ifdef MPD
285         OBJ_mpd_title,
286         OBJ_mpd_artist,
287         OBJ_mpd_album,
288         OBJ_mpd_random,
289         OBJ_mpd_repeat,
290         OBJ_mpd_vol,
291         OBJ_mpd_bitrate,
292         OBJ_mpd_status,
293         OBJ_mpd_bar,
294         OBJ_mpd_elapsed,
295         OBJ_mpd_length,
296         OBJ_mpd_track,
297         OBJ_mpd_name,
298         OBJ_mpd_file,
299         OBJ_mpd_percent,
300         OBJ_mpd_smart,
301         OBJ_if_mpd_playing,
302 #endif /* MPD */
303 #ifdef MOC
304         OBJ_moc_state,
305         OBJ_moc_file,
306         OBJ_moc_title,
307         OBJ_moc_artist,
308         OBJ_moc_song,
309         OBJ_moc_album,
310         OBJ_moc_totaltime,
311         OBJ_moc_timeleft,
312         OBJ_moc_curtime,
313         OBJ_moc_bitrate,
314         OBJ_moc_rate,
315 #endif /* MOC */
316 #ifdef XMMS2
317         OBJ_xmms2_artist,
318         OBJ_xmms2_album,
319         OBJ_xmms2_title,
320         OBJ_xmms2_genre,
321         OBJ_xmms2_comment,
322         OBJ_xmms2_url,
323         OBJ_xmms2_date,
324         OBJ_xmms2_tracknr,
325         OBJ_xmms2_bitrate,
326         OBJ_xmms2_id,
327         OBJ_xmms2_duration,
328         OBJ_xmms2_elapsed,
329         OBJ_xmms2_size,
330         OBJ_xmms2_percent,
331         OBJ_xmms2_status,
332 #ifdef X11
333         OBJ_xmms2_bar,
334 #endif /* X11 */
335         OBJ_xmms2_smart,
336         OBJ_xmms2_playlist,
337         OBJ_xmms2_timesplayed,
338         OBJ_if_xmms2_connected,
339 #endif /* XMMS2 */
340 #ifdef AUDACIOUS
341         OBJ_audacious_status,
342         OBJ_audacious_title,
343         OBJ_audacious_length,
344         OBJ_audacious_length_seconds,
345         OBJ_audacious_position,
346         OBJ_audacious_position_seconds,
347         OBJ_audacious_bitrate,
348         OBJ_audacious_frequency,
349         OBJ_audacious_channels,
350         OBJ_audacious_filename,
351         OBJ_audacious_playlist_length,
352         OBJ_audacious_playlist_position,
353         OBJ_audacious_main_volume,
354 #ifdef X11
355         OBJ_audacious_bar,
356 #endif /* X11 */
357 #endif /* AUDACIOUS */
358 #ifdef BMPX
359         OBJ_bmpx_title,
360         OBJ_bmpx_artist,
361         OBJ_bmpx_album,
362         OBJ_bmpx_track,
363         OBJ_bmpx_uri,
364         OBJ_bmpx_bitrate,
365 #endif /* BMPX */
366 #ifdef EVE
367         OBJ_eve,
368 #endif /* EVE */
369 #ifdef HAVE_CURL
370         OBJ_curl,
371 #endif /* HAVE_CURL */
372 #ifdef RSS
373         OBJ_rss,
374 #endif /* RSS */
375 #ifdef WEATHER
376         OBJ_weather,
377 #endif /* WEATHER */
378 #ifdef XOAP
379         OBJ_weather_forecast,
380 #endif /* XOAP */
381 #ifdef HAVE_LUA
382         OBJ_lua,
383         OBJ_lua_parse,
384         OBJ_lua_bar,
385 #ifdef X11
386         OBJ_lua_graph,
387         OBJ_lua_gauge,
388 #endif /* X11 */
389 #endif /* HAVE_LUA */
390 #ifdef TCP_PORT_MONITOR
391         OBJ_tcp_portmon,
392 #endif /* TCP_PORT_MONITOR */
393 #ifdef HAVE_ICONV
394         OBJ_iconv_start,
395         OBJ_iconv_stop,
396 #endif /* HAVE_ICONV */
397 #ifdef HDDTEMP
398         OBJ_hddtemp,
399 #endif /* HDDTEMP */
400         OBJ_include,
401         OBJ_blink,
402         OBJ_to_bytes,
403         OBJ_scroll,
404         OBJ_combine,
405         OBJ_entropy_avail,
406         OBJ_entropy_perc,
407         OBJ_entropy_poolsize,
408         OBJ_entropy_bar,
409 #ifdef APCUPSD
410         OBJ_apcupsd,
411         OBJ_apcupsd_name,
412         OBJ_apcupsd_model,
413         OBJ_apcupsd_upsmode,
414         OBJ_apcupsd_cable,
415         OBJ_apcupsd_status,
416         OBJ_apcupsd_linev,
417         OBJ_apcupsd_load,
418         OBJ_apcupsd_loadbar,
419 #ifdef X11
420         OBJ_apcupsd_loadgraph,
421         OBJ_apcupsd_loadgauge,
422 #endif /* X11 */
423         OBJ_apcupsd_charge,
424         OBJ_apcupsd_timeleft,
425         OBJ_apcupsd_temp,
426         OBJ_apcupsd_lastxfer,
427 #endif /* APCUPSD */
428 };
429
430 struct text_object {
431         struct text_object *next, *prev;        /* doubly linked list of text objects */
432         struct text_object *sub;                /* for objects parsing text into objects */
433         union {
434                 void *opaque;           /* new style generic per object data */
435                 char *s;                /* some string */
436                 int i;                  /* some integer */
437                 long l;                 /* some long integer */
438
439                 struct {
440                         void *opaque;   /* temporary workaround to not blow stuff */
441                         struct text_object *next;
442                         char *s;
443                         int i;
444                         char *str;
445                 } ifblock;
446         } data;
447
448         void *special_data;
449         int type;
450         long line;
451 };
452
453 /* text object list helpers */
454 int append_object(struct text_object *root, struct text_object *obj);
455
456 /* ifblock helpers
457  *
458  * Opaque is a pointer to the address of the ifblock stack's top object.
459  * Calling clients should pass the address of a defined void pointer which
460  * was initialised to NULL (empty stack).
461  * */
462 int obj_be_ifblock_if(void **opaque, struct text_object *);
463 int obj_be_ifblock_else(void **opaque, struct text_object *);
464 int obj_be_ifblock_endif(void **opaque, struct text_object *);
465 int ifblock_stack_empty(void **opaque);
466
467 #endif /* _TEXT_OBJECT_H */