1 /*
2 * LASH
3 *
4 * Copyright (C) 2002 Robert Ham <rah@bash.sh>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21 #include <stdlib.h>
22
23 #include <lash/types.h>
24 #include <lash/internal.h>
25 #include <lash/list.h>
26 #include <lash/event.h>
27
28 lash_event_t *
lash_event_new()29 lash_event_new()
30 {
31 lash_event_t *event;
32
33 event = lash_malloc0(sizeof(lash_event_t));
34 uuid_clear(event->client_id);
35 return event;
36 }
37
38 lash_event_t *
lash_event_new_with_type(enum LASH_Event_Type type)39 lash_event_new_with_type(enum LASH_Event_Type type)
40 {
41 lash_event_t *event;
42
43 event = lash_event_new();
44 lash_event_set_type(event, type);
45 return event;
46 }
47
48 lash_event_t *
lash_event_new_with_all(enum LASH_Event_Type type,const char * string)49 lash_event_new_with_all(enum LASH_Event_Type type, const char *string)
50 {
51 lash_event_t *event;
52
53 event = lash_event_new();
54 lash_event_set_type(event, type);
55 lash_event_set_string(event, string);
56 return event;
57 }
58
59 void
lash_event_free(lash_event_t * event)60 lash_event_free(lash_event_t * event)
61 {
62 event->type = 0;
63 lash_event_set_string(event, NULL);
64 lash_event_set_project(event, NULL);
65 }
66
67 void
lash_event_destroy(lash_event_t * event)68 lash_event_destroy(lash_event_t * event)
69 {
70 lash_event_free(event);
71 free(event);
72 }
73
74 enum LASH_Event_Type
lash_event_get_type(const lash_event_t * event)75 lash_event_get_type(const lash_event_t * event)
76 {
77 return event->type;
78 }
79
80 void
lash_event_set_type(lash_event_t * event,enum LASH_Event_Type type)81 lash_event_set_type(lash_event_t * event, enum LASH_Event_Type type)
82 {
83 event->type = type;
84 }
85
86 const char *
lash_event_get_string(const lash_event_t * event)87 lash_event_get_string(const lash_event_t * event)
88 {
89 return event->string;
90 }
91
92 void
lash_event_set_string(lash_event_t * event,const char * string)93 lash_event_set_string(lash_event_t * event, const char *string)
94 {
95 set_string_property(event->string, string);
96 }
97
98 const char *
lash_event_get_project(const lash_event_t * event)99 lash_event_get_project(const lash_event_t * event)
100 {
101 return event->project;
102 }
103
104 void
lash_event_set_project(lash_event_t * event,const char * project)105 lash_event_set_project(lash_event_t * event, const char *project)
106 {
107 set_string_property(event->project, project);
108 }
109
110 void
lash_event_get_client_id(const lash_event_t * event,uuid_t id)111 lash_event_get_client_id(const lash_event_t * event, uuid_t id)
112 {
113 uuid_copy(id, event->client_id);
114 }
115
116 void
lash_event_set_client_id(lash_event_t * event,uuid_t id)117 lash_event_set_client_id(lash_event_t * event, uuid_t id)
118 {
119 uuid_copy(event->client_id, id);
120 }
121
122 void
lash_event_set_alsa_client_id(lash_event_t * event,unsigned char alsa_id)123 lash_event_set_alsa_client_id(lash_event_t * event, unsigned char alsa_id)
124 {
125 char id[2];
126
127 lash_str_set_alsa_client_id(id, alsa_id);
128
129 lash_event_set_type(event, LASH_Alsa_Client_ID);
130 lash_event_set_string(event, id);
131 }
132
133 unsigned char
lash_event_get_alsa_client_id(const lash_event_t * event)134 lash_event_get_alsa_client_id(const lash_event_t * event)
135 {
136 return lash_str_get_alsa_client_id(lash_event_get_string(event));
137 }
138
139 void
lash_str_set_alsa_client_id(char * str,unsigned char alsa_id)140 lash_str_set_alsa_client_id(char *str, unsigned char alsa_id)
141 {
142 str[0] = (char)alsa_id;
143 str[1] = '\0';
144 }
145
146 unsigned
147 char
lash_str_get_alsa_client_id(const char * str)148 lash_str_get_alsa_client_id(const char *str)
149 {
150 return (unsigned char)*str;
151 }
152
153 /* EOF */
154