liblscp  0.5.6
common.h
Go to the documentation of this file.
1 // common.h
2 //
3 /****************************************************************************
4  liblscp - LinuxSampler Control Protocol API
5  Copyright (C) 2004-2007, rncbc aka Rui Nuno Capela. All rights reserved.
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Lesser General Public
9  License as published by the Free Software Foundation; either
10  version 2.1 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Lesser General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License along
18  with this program; if not, write to the Free Software Foundation, Inc.,
19  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 
21 *****************************************************************************/
22 
23 #ifndef __LSCP_COMMON_H
24 #define __LSCP_COMMON_H
25 
26 #include "lscp/client.h"
27 #include "lscp/device.h"
28 
29 
30 // Case unsensitive comparison substitutes.
31 #if defined(WIN32)
32 #define strcasecmp stricmp
33 #define strncasecmp strnicmp
34 #endif
35 
36 //-------------------------------------------------------------------------
37 // Client opaque descriptor struct.
38 
40 {
41  // Client socket stuff.
43  void * pvData;
46  // Subscribed events.
48  // Client struct persistent caches.
49  char ** audio_drivers;
50  char ** midi_drivers;
52  int * midi_devices;
53  char ** engines;
54  int * channels;
55  int * fxsends;
57  int * midi_maps;
58  char * midi_map_name;
59  // Client struct volatile caches.
75  // Result and error status.
76  char * pszResult;
77  int iErrno;
78  // Stream buffers status.
81  // Transaction call timeout (msecs).
82  int iTimeout;
85  // Flag last transaction timedout.
87 };
88 
89 
90 //-------------------------------------------------------------------------
91 // Local client request executive.
92 
93 lscp_status_t lscp_client_recv (lscp_client_t *pClient, char *pchBuffer, int *pcchBuffer, int iTimeout);
94 lscp_status_t lscp_client_call (lscp_client_t *pClient, const char *pszQuery, int iResult);
95 void lscp_client_set_result (lscp_client_t *pClient, char *pszResult, int iErrno);
96 
97 //-------------------------------------------------------------------------
98 // General utility function prototypes.
99 
100 char * lscp_strtok (char *pchBuffer, const char *pszSeps, char **ppch);
101 char * lscp_ltrim (char *psz);
102 char * lscp_unquote (char **ppsz, int dup);
103 void lscp_unquote_dup (char **ppszDst, char **ppszSrc);
104 
105 char ** lscp_szsplit_create (const char *pszCsv, const char *pszSeps);
106 void lscp_szsplit_destroy (char **ppszSplit);
107 #ifdef LSCP_SZSPLIT_COUNT
108 int lscp_szsplit_count (char **ppszSplit);
109 int lscp_szsplit_size (char **ppszSplit);
110 #endif
111 
112 int * lscp_isplit_create (const char *pszCsv, const char *pszSeps);
113 void lscp_isplit_destroy (int *piSplit);
114 #ifdef LSCP_ISPLIT_COUNT
115 int lscp_isplit_count (int *piSplit);
116 int lscp_isplit_size (int *piSplit);
117 #endif
118 
119 lscp_param_t * lscp_psplit_create (const char *pszCsv, const char *pszSep1, const char *pszSep2);
120 void lscp_psplit_destroy (lscp_param_t *ppSplit);
121 #ifdef LSCP_PSPLIT_COUNT
122 int lscp_psplit_count (lscp_param_t *ppSplit);
123 int lscp_psplit_size (lscp_param_t *ppSplit);
124 #endif
125 
126 void lscp_plist_alloc (lscp_param_t **ppList);
127 void lscp_plist_free (lscp_param_t **ppList);
128 void lscp_plist_append (lscp_param_t **ppList, const char *pszKey, const char *pszValue);
129 #ifdef LSCP_PLIST_COUNT
130 int lscp_plist_count (lscp_param_t **ppList);
131 int lscp_plist_size (lscp_param_t **ppList);
132 #endif
133 
136 #ifdef LSCP_MIDI_INSTRUMENTS_COUNT
137 int lscp_midi_instruments_count (lscp_midi_instrument_t *pInstrs);
138 int lscp_midi_instruments_size (lscp_midi_instrument_t *pInstrs);
139 #endif
140 
141 
142 //-------------------------------------------------------------------------
143 // Server struct helper functions.
144 
145 void lscp_server_info_init (lscp_server_info_t *pServerInfo);
146 void lscp_server_info_free (lscp_server_info_t *pServerInfo);
147 void lscp_server_info_reset (lscp_server_info_t *pServerInfo);
148 
149 //-------------------------------------------------------------------------
150 // Engine struct helper functions.
151 
152 void lscp_engine_info_init (lscp_engine_info_t *pEngineInfo);
153 void lscp_engine_info_free (lscp_engine_info_t *pEngineInfo);
154 void lscp_engine_info_reset (lscp_engine_info_t *pEngineInfo);
155 
156 //-------------------------------------------------------------------------
157 // Channel struct helper functions.
158 
159 void lscp_channel_info_init (lscp_channel_info_t *pChannelInfo);
160 void lscp_channel_info_free (lscp_channel_info_t *pChannelInfo);
161 void lscp_channel_info_reset (lscp_channel_info_t *pChannelInfo);
162 
163 //-------------------------------------------------------------------------
164 // Driver struct helper functions.
165 
166 void lscp_driver_info_init (lscp_driver_info_t *pDriverInfo);
167 void lscp_driver_info_free (lscp_driver_info_t *pDriverInfo);
168 void lscp_driver_info_reset (lscp_driver_info_t *pDriverInfo);
169 
170 //-------------------------------------------------------------------------
171 // Device struct helper functions.
172 
173 void lscp_device_info_init (lscp_device_info_t *pDeviceInfo);
174 void lscp_device_info_free (lscp_device_info_t *pDeviceInfo);
175 void lscp_device_info_reset (lscp_device_info_t *pDeviceInfo);
176 
177 //-------------------------------------------------------------------------
178 // Device channel/port struct helper functions.
179 
183 
184 //-------------------------------------------------------------------------
185 // Parameter struct helper functions.
186 
187 void lscp_param_info_init (lscp_param_info_t *pParamInfo);
188 void lscp_param_info_free (lscp_param_info_t *pParamInfo);
189 void lscp_param_info_reset (lscp_param_info_t *pParamInfo);
190 
191 //-------------------------------------------------------------------------
192 // Concatenate a parameter list (key='value'...) into a string.
193 
194 int lscp_param_concat (char *pszBuffer, int cchMaxBuffer, lscp_param_t *pParams);
195 
196 //-------------------------------------------------------------------------
197 // Effect struct helper functions.
198 
199 void lscp_fxsend_info_init (lscp_fxsend_info_t *pFxSendInfo);
200 void lscp_fxsend_info_free (lscp_fxsend_info_t *pFxSendInfo);
201 void lscp_fxsend_info_reset (lscp_fxsend_info_t *pFxSendInfo);
202 
203 //-------------------------------------------------------------------------
204 // MIDI instrument info struct helper functions.
205 
209 
210 
211 #endif // __LSCP_COMMON_H
212 
213 // end of common.h