diff options
Diffstat (limited to 'lib-x86-32/include/cddb/cddb_site.h')
-rw-r--r-- | lib-x86-32/include/cddb/cddb_site.h | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/lib-x86-32/include/cddb/cddb_site.h b/lib-x86-32/include/cddb/cddb_site.h new file mode 100644 index 00000000..9c48ac6c --- /dev/null +++ b/lib-x86-32/include/cddb/cddb_site.h @@ -0,0 +1,248 @@ +/* + $Id: cddb_site.h,v 1.3 2005/06/15 16:08:28 airborne Exp $ + + Copyright (C) 2005 Kris Verbeeck <airborne@advalvas.be> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#ifndef CDDB_SITE_H +#define CDDB_SITE_H 1 + +#ifdef __cplusplus + extern "C" { +#endif + + +#include "cddb/cddb_error.h" + + +/* --- type and structure definitions */ + + +/** + * Enumeration defining the CDDB protocol supported by a specific + * site. + */ +typedef enum { + PROTO_UNKNOWN = 0, /**< Unknown protocol */ + PROTO_CDDBP, /**< FreeDB custom protocol */ + PROTO_HTTP /**< Command tunneling over HTTP */ +} cddb_protocol_t; + +/** + * The CDDB site structure. Contains all information about one + * particular CDDB server. + */ +typedef struct cddb_site_s cddb_site_t; + + +/* --- construction / destruction */ + + +/** + * Creates a new CDDB site structure. + * + * @return The CDDB site structure or NULL if memory allocation failed. + */ +cddb_site_t *cddb_site_new(void); + +/** + * Free all resources associated with the given CDDB site structure. + * + * @param site The CDDB site structure. + */ +cddb_error_t cddb_site_destroy(cddb_site_t *site); + +/** + * Creates a clone of the given site. + * + * @param site The CDDB site structure. + */ +cddb_site_t *cddb_site_clone(cddb_site_t *site); + + +/* --- setters / getters --- */ + + +/** + * Get the site's address. + * + * @param site The CDDB site structure. + * @param address The address of the server upon returning. + * @param port The port of the server upon returning. + * @return Error code: CDDB_ERR_OK or CDDB_ERR_INVALID. + */ +cddb_error_t cddb_site_get_address(const cddb_site_t *site, + const char **address, unsigned int *port); + +/** + * Set the site's address. A copy of the address string is made. So the caller + * should free any memory associated with the input parameter. + * + * @param site The CDDB site structure. + * @param address The address of the server. + * @param port The port of the server. + * @return Error code: CDDB_ERR_OK, CDDB_ERR_INVALID or CDDB_ERR_OUT_OF_MEMORY. + */ +cddb_error_t cddb_site_set_address(cddb_site_t *site, + const char *address, unsigned int port); + +/** + * Get the protocol used by the site. + * + * @see cddb_protocol_t + * + * @param site The CDDB site structure. + * @return The protocol. + */ +cddb_protocol_t cddb_site_get_protocol(const cddb_site_t *site); + +/** + * Set the protocol used by the site. + * + * @see cddb_protocol_t + * + * @param site The CDDB site structure. + * @param proto The protocol. + * @return Error code: CDDB_ERR_OK or CDDB_ERR_INVALID. + */ +cddb_error_t cddb_site_set_protocol(cddb_site_t *site, cddb_protocol_t proto); + +/** + * Get the query path in case the HTTP protocol is used. + * + * @param site The CDDB site structure. + * @param path The query path upon returning. + * @return Error code: CDDB_ERR_OK or CDDB_ERR_INVALID. + */ +cddb_error_t cddb_site_get_query_path(const cddb_site_t *site, + const char **path); + +/** + * Set the query path in case the HTTP protocol is used. A copy of the path + * string is made. So the caller should free any memory associated with the + * input parameter. + * + * @param site The CDDB site structure. + * @param path The query path. A value of NULL deletes the current path. + * @return Error code: CDDB_ERR_OK, CDDB_ERR_INVALID or CDDB_ERR_OUT_OF_MEMORY. + */ +cddb_error_t cddb_site_set_query_path(cddb_site_t *site, const char *path); + +/** + * Get the submit path in case the HTTP protocol is used. + * + * @param site The CDDB site structure. + * @param path The submit path upon returning. + * @return Error code: CDDB_ERR_OK or CDDB_ERR_INVALID. + */ +cddb_error_t cddb_site_get_submit_path(const cddb_site_t *site, + const char **path); + +/** + * Set the submit path in case the HTTP protocol is used. A copy of the path + * string is made. So the caller should free any memory associated with the + * input parameter. + * + * @param site The CDDB site structure. + * @param path The query path. A value of NULL deletes the current path. + * @return Error code: CDDB_ERR_OK, CDDB_ERR_INVALID or CDDB_ERR_OUT_OF_MEMORY. + */ +cddb_error_t cddb_site_set_submit_path(cddb_site_t *site, const char *path); + +/** + * Get the site's location. + * + * @param site The CDDB site structure. + * @param latitude Will contain the server's latitude upon returning. + * A positive number is used for the northern + * hemisphere, a negative one for the southern + * hemisphere. + * @param longitude Will contain the server's longitude upon returning. + * A positive number is used for the eastern + * hemisphere, a negative one for the western + * hemisphere. + * @return Error code: CDDB_ERR_OK or CDDB_ERR_INVALID. + */ +cddb_error_t cddb_site_get_location(const cddb_site_t *site, + float *latitude, float *longitude); + +/** + * Set the site's location. + * + * @param site The CDDB site structure. + * @param latitude The server's latitude. Use a positive number for the + * northern hemisphere, a negative one for the southern + * hemisphere. + * @param longitude The server's longitude. Use a positive number for the + * eastern hemisphere, a negative one for the western + * hemisphere. + * @return Error code: CDDB_ERR_OK or CDDB_ERR_INVALID. + */ +cddb_error_t cddb_site_set_location(cddb_site_t *site, + float latitude, float longitude); + +/** + * Get a description of the site. + * + * @param site The CDDB site structure. + * @param desc The description upon returning. + * @return Error code: CDDB_ERR_OK or CDDB_ERR_INVALID. + */ +cddb_error_t cddb_site_get_description(const cddb_site_t *site, + const char **desc); + +/** + * Set a description for the site. A copy of the description string is made. + * So the caller should free any memory associated with the input parameter. + * + * @param site The CDDB site structure. + * @param desc The description. A value of NULL deletes the current + * description. + * @return Error code: CDDB_ERR_OK, CDDB_ERR_INVALID or CDDB_ERR_OUT_OF_MEMORY. + */ +cddb_error_t cddb_site_set_description(cddb_site_t *site, const char *desc); + + +/* --- miscellaneous */ + + +/** + * Parses one line of data as returned by the sites command and + * populates the given structure. + * + * @param site The CDDB site structure. + * @param line The result line. + * @return True in case of success or false on failure. + */ +int cddb_site_parse(cddb_site_t *site, const char *line); + +/** + * Prints information about the site on stdout. This is just a + * debugging routine to display the structure's content. + * + * @param site The CDDB site structure. + * @return Error code: CDDB_ERR_OK or CDDB_ERR_INVALID. + */ +cddb_error_t cddb_site_print(const cddb_site_t *site); + + +#ifdef __cplusplus + } +#endif + +#endif /* CDDB_SITE_H */ |