home *** CD-ROM | disk | FTP | other *** search
/ mail.altrad.com / 2015.02.mail.altrad.com.tar / mail.altrad.com / TEST / vlc-2-0-5-win32.exe / sdk / include / vlc / plugins / vlc_probe.h < prev    next >
C/C++ Source or Header  |  2012-12-12  |  2KB  |  70 lines

  1. /*****************************************************************************
  2.  * vlc_probe.h: service probing interface
  3.  *****************************************************************************
  4.  * Copyright (C) 2009 R├⌐mi Denis-Courmont
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify it
  7.  * under the terms of the GNU Lesser General Public License as published by
  8.  * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU Lesser General Public License
  17.  * along with this program; if not, write to the Free Software Foundation,
  18.  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  19.  *****************************************************************************/
  20.  
  21. #ifndef VLC_PROBE_H
  22. # define VLC_PROBE_H 1
  23.  
  24. # include <stdlib.h>
  25.  
  26. /**
  27.  * \file
  28.  * This file defines functions and structures to run-time probe VLC extensions
  29.  */
  30.  
  31. # ifdef __cplusplus
  32. extern "C" {
  33. # endif
  34.  
  35. void *vlc_probe (vlc_object_t *, const char *, size_t *restrict);
  36. #define vlc_probe(obj, cap, pcount) \
  37.         vlc_probe(VLC_OBJECT(obj), cap, pcount)
  38.  
  39. struct vlc_probe_t
  40. {
  41.     VLC_COMMON_MEMBERS
  42.  
  43.     void  *list;
  44.     size_t count;
  45. };
  46.  
  47. typedef struct vlc_probe_t vlc_probe_t;
  48.  
  49. static inline int vlc_probe_add(vlc_probe_t *obj, const void *data,
  50.                                 size_t len)
  51. {
  52.     char *tab = (char *)realloc (obj->list, (obj->count + 1) * len);
  53.  
  54.     if (unlikely(tab == NULL))
  55.         return VLC_ENOMEM;
  56.     memcpy(tab + (obj->count * len), data, len);
  57.     obj->list = tab;
  58.     obj->count++;
  59.     return VLC_SUCCESS;
  60. }
  61.  
  62. # define VLC_PROBE_CONTINUE VLC_EGENERIC
  63. # define VLC_PROBE_STOP     VLC_SUCCESS
  64.  
  65. # ifdef __cplusplus
  66. }
  67. # endif
  68.  
  69. #endif
  70.