#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:

Data Structures | |
| struct | _CameraList |
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.
1.5.1