#include "config.h"
#include <gphoto2/gphoto2-list.h>
#include <gphoto2/gphoto2-port-log.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gphoto2/gphoto2-result.h>
Include dependency graph for gphoto2-list.c:
Defines | |
#define | CHECK_NULL(r) {if (!(r)) return (GP_ERROR_BAD_PARAMETERS);} |
#define | CHECK_RESULT(result) {int r = (result); if (r < 0) return (r);} |
#define | CHECK_LIST(list) |
#define | CAMERALIST_STRUCT_COMPATIBILITY |
#define | MAX_ENTRIES 1024 |
#define | MAX_LIST_STRING_LENGTH 128 |
#define | CHECK_INDEX_RANGE(list, index) |
Functions | |
int | gp_list_new (CameraList **list) |
Creates a new CameraList. | |
int | gp_list_ref (CameraList *list) |
Increments the reference count of the list. | |
int | gp_list_unref (CameraList *list) |
Decrements the reference count of the list . | |
int | gp_list_free (CameraList *list) |
int | gp_list_reset (CameraList *list) |
int | gp_list_append (CameraList *list, const char *name, const char *value) |
int | gp_list_sort (CameraList *list) |
int | gp_list_count (CameraList *list) |
int | gp_list_find_by_name (CameraList *list, int *index, const char *name) |
int | gp_list_get_name (CameraList *list, int index, const char **name) |
int | gp_list_get_value (CameraList *list, int index, const char **value) |
int | gp_list_set_value (CameraList *list, int index, const char *value) |
int | gp_list_set_name (CameraList *list, int index, const char *name) |
int | gp_list_populate (CameraList *list, const char *format, int count) |
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 Lesser General Public License for more details.
You should have received a copy of the GNU Lesser 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.
#define CAMERALIST_STRUCT_COMPATIBILITY |
Whether to preserve binary compatibility for structure internals.
Question: Find out whether any libgphoto2 frontend relies on those internals. Answer: They do, at least by instantiation a "struct CameraList foo;".
Binary compatibility and problems: * fixed string size for name and value * fixed max number of entries * some apps instantiate a "struct CameraList foo;" directly and thus reserve a specific amount of memory * FIXME: Do frontends rely on the memory layout and size of their "struct CameraList" or "struct CameraList *" when accessing its members? They *SHOULD* use access functions.
#define CHECK_INDEX_RANGE | ( | list, | |||
index | ) |
Value:
do { \ if (index < 0 || index >= list->count) { \ return (GP_ERROR_BAD_PARAMETERS); \ } \ } while (0)
#define CHECK_LIST | ( | list | ) |
Value:
do { \ if (NULL == list) { \ return (GP_ERROR_BAD_PARAMETERS); \ } else if (list->ref_count == 0) { \ /* catch calls to already freed list */ \ return (GP_ERROR_BAD_PARAMETERS); \ } \ } while (0)
#define MAX_ENTRIES 1024 |
Internal _CameraList data structure
int gp_list_append | ( | CameraList * | list, | |
const char * | name, | |||
const char * | value | |||
) |
Appends name
and value
to the list
.
list | a CameraList | |
name | the name of the entry to append | |
value | the value of the entry to append |
int gp_list_count | ( | CameraList * | list | ) |
int gp_list_find_by_name | ( | CameraList * | list, | |
int * | index, | |||
const char * | name | |||
) |
Retrieves the index
of an arbitrary entry with name
.
list | a CameraList | |
index | pointer to the result index (may be NULL, only set if found) | |
name | name of the entry |
int gp_list_free | ( | CameraList * | list | ) |
Frees the list
. It is recommended to use gp_list_unref instead.
list | the CameraList to be freed |
int gp_list_get_name | ( | CameraList * | list, | |
int | index, | |||
const char ** | name | |||
) |
Retrieves the name
of entry with index
.
list | a CameraList | |
index | index of the entry | |
name |
int gp_list_get_value | ( | CameraList * | list, | |
int | index, | |||
const char ** | value | |||
) |
Retrieves the value of entry with index
.
list | a CameraList | |
index | index of the entry | |
value |
int gp_list_new | ( | CameraList ** | list | ) |
int gp_list_populate | ( | CameraList * | list, | |
const char * | format, | |||
int | count | |||
) |
Adds count
entries to the list.
list | a CameraList | |
format | the format | |
count | number of entries to be added to the list return a gphoto2 error code |
int gp_list_ref | ( | CameraList * | list | ) |
Increments the reference count of the list.
list | a CameraList |
int gp_list_reset | ( | CameraList * | list | ) |
int gp_list_set_name | ( | CameraList * | list, | |
int | index, | |||
const char * | name | |||
) |
Sets the name of an entry.
list | a CameraList | |
index | index of entry | |
name | name to be set |
int gp_list_set_value | ( | CameraList * | list, | |
int | index, | |||
const char * | value | |||
) |
Sets the value
of an entry.
list | a CameraList | |
index | index of the entry | |
value | the value to be set |
int gp_list_sort | ( | CameraList * | list | ) |
Sorts the list
entries with respect to the names.
list | a CameraList |
int gp_list_unref | ( | CameraList * | list | ) |
Decrements the reference count of the list
.
list | a CameraList |
list
will be freed.