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