/src/vlc/include/vlc_arrays.h
Line | Count | Source (jump to first uncovered line) |
1 | | /***************************************************************************** |
2 | | * vlc_arrays.h : Arrays and data structures handling |
3 | | ***************************************************************************** |
4 | | * Copyright (C) 1999-2004 VLC authors and VideoLAN |
5 | | * |
6 | | * Authors: Samuel Hocevar <sam@zoy.org> |
7 | | * Clément Stenac <zorglub@videolan.org> |
8 | | * |
9 | | * This program is free software; you can redistribute it and/or modify it |
10 | | * under the terms of the GNU Lesser General Public License as published by |
11 | | * the Free Software Foundation; either version 2.1 of the License, or |
12 | | * (at your option) any later version. |
13 | | * |
14 | | * This program is distributed in the hope that it will be useful, |
15 | | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
17 | | * GNU Lesser General Public License for more details. |
18 | | * |
19 | | * You should have received a copy of the GNU Lesser General Public License |
20 | | * along with this program; if not, write to the Free Software Foundation, |
21 | | * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. |
22 | | *****************************************************************************/ |
23 | | |
24 | | #ifndef VLC_ARRAYS_H_ |
25 | | #define VLC_ARRAYS_H_ |
26 | | |
27 | | #include <vlc_common.h> |
28 | | |
29 | | /** |
30 | | * \file |
31 | | * This file defines functions, structures and macros for handling arrays in vlc |
32 | | */ |
33 | | |
34 | | /* realloc() that never fails *if* downsizing */ |
35 | | static inline void *realloc_down( void *ptr, size_t size ) |
36 | 0 | { |
37 | 0 | void *ret = realloc( ptr, size ); |
38 | 0 | return ret ? ret : ptr; |
39 | 0 | } Unexecuted instantiation: demux-run.c:realloc_down Unexecuted instantiation: common.c:realloc_down Unexecuted instantiation: decoder.c:realloc_down Unexecuted instantiation: core.c:realloc_down Unexecuted instantiation: error.c:realloc_down Unexecuted instantiation: asf.c:realloc_down Unexecuted instantiation: avi.c:realloc_down Unexecuted instantiation: es.c:realloc_down Unexecuted instantiation: flac.c:realloc_down Unexecuted instantiation: xiph_metadata.c:realloc_down Unexecuted instantiation: mp4.c:realloc_down Unexecuted instantiation: heif.c:realloc_down Unexecuted instantiation: sap.c:realloc_down Unexecuted instantiation: subtitle.c:realloc_down Unexecuted instantiation: ttml.c:realloc_down Unexecuted instantiation: encttml.c:realloc_down Unexecuted instantiation: substtml.c:realloc_down Unexecuted instantiation: genttml.c:realloc_down Unexecuted instantiation: subsvtt.c:realloc_down Unexecuted instantiation: ogg.c:realloc_down Unexecuted instantiation: matroska_segment.cpp:realloc_down(void*, unsigned long) Unexecuted instantiation: chapters.cpp:realloc_down(void*, unsigned long) Unexecuted instantiation: chapter_command.cpp:realloc_down(void*, unsigned long) Unexecuted instantiation: subsusf.c:realloc_down Unexecuted instantiation: libvlc.c:realloc_down Unexecuted instantiation: media_tree.c:realloc_down Unexecuted instantiation: modules.c:realloc_down Unexecuted instantiation: entry.c:realloc_down Unexecuted instantiation: dialog.c:realloc_down Unexecuted instantiation: interface.c:realloc_down Unexecuted instantiation: item.c:realloc_down Unexecuted instantiation: access.c:realloc_down Unexecuted instantiation: demux.c:realloc_down Unexecuted instantiation: input.c:realloc_down Unexecuted instantiation: meta.c:realloc_down Unexecuted instantiation: parse.c:realloc_down Unexecuted instantiation: player.c:realloc_down Unexecuted instantiation: stream.c:realloc_down Unexecuted instantiation: stream_extractor.c:realloc_down Unexecuted instantiation: stream_filter.c:realloc_down Unexecuted instantiation: stream_memory.c:realloc_down Unexecuted instantiation: subtitles.c:realloc_down Unexecuted instantiation: video_output.c:realloc_down Unexecuted instantiation: strings.c:realloc_down Unexecuted instantiation: epg.c:realloc_down Unexecuted instantiation: exit.c:realloc_down Unexecuted instantiation: variables.c:realloc_down Unexecuted instantiation: httpcookies.c:realloc_down Unexecuted instantiation: specific.c:realloc_down Unexecuted instantiation: stream_output.c:realloc_down Unexecuted instantiation: vlm.c:realloc_down Unexecuted instantiation: vlm_event.c:realloc_down Unexecuted instantiation: vlmshell.c:realloc_down Unexecuted instantiation: fetcher.c:realloc_down Unexecuted instantiation: es_out.c:realloc_down Unexecuted instantiation: es_out_timeshift.c:realloc_down |
40 | | |
41 | | /** |
42 | | * This wrapper around realloc() will free the input pointer when |
43 | | * realloc() returns NULL. The use case ptr = realloc(ptr, newsize) will |
44 | | * cause a memory leak when ptr pointed to a heap allocation before, |
45 | | * leaving the buffer allocated but unreferenced. vlc_realloc() is a |
46 | | * drop-in replacement for that use case (and only that use case). |
47 | | */ |
48 | | static inline void *realloc_or_free( void *p, size_t sz ) |
49 | 186 | { |
50 | 186 | void *n = realloc(p,sz); |
51 | 186 | if( !n ) |
52 | 0 | free(p); |
53 | 186 | return n; |
54 | 186 | } Unexecuted instantiation: demux-run.c:realloc_or_free Unexecuted instantiation: common.c:realloc_or_free Unexecuted instantiation: decoder.c:realloc_or_free Unexecuted instantiation: core.c:realloc_or_free Unexecuted instantiation: error.c:realloc_or_free Unexecuted instantiation: asf.c:realloc_or_free Unexecuted instantiation: avi.c:realloc_or_free Unexecuted instantiation: es.c:realloc_or_free Unexecuted instantiation: flac.c:realloc_or_free Unexecuted instantiation: xiph_metadata.c:realloc_or_free Unexecuted instantiation: mp4.c:realloc_or_free Unexecuted instantiation: heif.c:realloc_or_free Unexecuted instantiation: sap.c:realloc_or_free Unexecuted instantiation: subtitle.c:realloc_or_free Unexecuted instantiation: ttml.c:realloc_or_free Unexecuted instantiation: encttml.c:realloc_or_free Unexecuted instantiation: substtml.c:realloc_or_free Unexecuted instantiation: genttml.c:realloc_or_free Unexecuted instantiation: subsvtt.c:realloc_or_free Unexecuted instantiation: ogg.c:realloc_or_free Unexecuted instantiation: matroska_segment.cpp:realloc_or_free(void*, unsigned long) Unexecuted instantiation: chapters.cpp:realloc_or_free(void*, unsigned long) Unexecuted instantiation: chapter_command.cpp:realloc_or_free(void*, unsigned long) Unexecuted instantiation: subsusf.c:realloc_or_free Unexecuted instantiation: libvlc.c:realloc_or_free Unexecuted instantiation: media_tree.c:realloc_or_free Unexecuted instantiation: modules.c:realloc_or_free Line | Count | Source | 49 | 186 | { | 50 | 186 | void *n = realloc(p,sz); | 51 | 186 | if( !n ) | 52 | 0 | free(p); | 53 | 186 | return n; | 54 | 186 | } |
Unexecuted instantiation: dialog.c:realloc_or_free Unexecuted instantiation: interface.c:realloc_or_free Unexecuted instantiation: item.c:realloc_or_free Unexecuted instantiation: access.c:realloc_or_free Unexecuted instantiation: demux.c:realloc_or_free Unexecuted instantiation: input.c:realloc_or_free Unexecuted instantiation: meta.c:realloc_or_free Unexecuted instantiation: parse.c:realloc_or_free Unexecuted instantiation: player.c:realloc_or_free Unexecuted instantiation: stream.c:realloc_or_free Unexecuted instantiation: stream_extractor.c:realloc_or_free Unexecuted instantiation: stream_filter.c:realloc_or_free Unexecuted instantiation: stream_memory.c:realloc_or_free Unexecuted instantiation: subtitles.c:realloc_or_free Unexecuted instantiation: video_output.c:realloc_or_free Unexecuted instantiation: strings.c:realloc_or_free Unexecuted instantiation: epg.c:realloc_or_free Unexecuted instantiation: exit.c:realloc_or_free Unexecuted instantiation: variables.c:realloc_or_free Unexecuted instantiation: httpcookies.c:realloc_or_free Unexecuted instantiation: specific.c:realloc_or_free Unexecuted instantiation: stream_output.c:realloc_or_free Unexecuted instantiation: vlm.c:realloc_or_free Unexecuted instantiation: vlm_event.c:realloc_or_free Unexecuted instantiation: vlmshell.c:realloc_or_free Unexecuted instantiation: fetcher.c:realloc_or_free Unexecuted instantiation: es_out.c:realloc_or_free Unexecuted instantiation: es_out_timeshift.c:realloc_or_free |
55 | | |
56 | | #define TAB_INIT( count, tab ) \ |
57 | 0 | do { \ |
58 | 0 | (count) = 0; \ |
59 | 0 | (tab) = NULL; \ |
60 | 0 | } while(0) |
61 | | |
62 | | #define TAB_CLEAN( count, tab ) \ |
63 | 0 | do { \ |
64 | 0 | free( tab ); \ |
65 | 0 | (count)= 0; \ |
66 | 0 | (tab)= NULL; \ |
67 | 0 | } while(0) |
68 | | |
69 | | #define TAB_APPEND_CAST( cast, count, tab, p ) \ |
70 | 0 | do { \ |
71 | 0 | if( (count) > 0 ) \ |
72 | 0 | (tab) = cast realloc( tab, sizeof( *(tab) ) * ( (count) + 1 ) ); \ |
73 | 0 | else \ |
74 | 0 | (tab) = cast malloc( sizeof( *(tab) ) ); \ |
75 | 0 | if( !(tab) ) abort(); \ |
76 | 0 | (tab)[count] = (p); \ |
77 | 0 | (count)++; \ |
78 | 0 | } while(0) |
79 | | |
80 | | #define TAB_APPEND( count, tab, p ) \ |
81 | 0 | TAB_APPEND_CAST( , count, tab, p ) |
82 | | |
83 | | #define TAB_FIND( count, tab, p, idx ) \ |
84 | 0 | do { \ |
85 | 0 | for( (idx) = 0; (idx) < (count); (idx)++ ) \ |
86 | 0 | if( (tab)[(idx)] == (p) ) \ |
87 | 0 | break; \ |
88 | 0 | if( (idx) >= (count) ) \ |
89 | 0 | (idx) = -1; \ |
90 | 0 | } while(0) |
91 | | |
92 | | |
93 | | #define TAB_ERASE( count, tab, index ) \ |
94 | 0 | do { \ |
95 | 0 | if( (count) > 1 ) \ |
96 | 0 | memmove( (tab) + (index), \ |
97 | 0 | (tab) + (index) + 1, \ |
98 | 0 | ((count) - (index) - 1 ) * sizeof( *(tab) ) );\ |
99 | 0 | (count)--; \ |
100 | 0 | if( (count) == 0 ) \ |
101 | 0 | { \ |
102 | 0 | free( tab ); \ |
103 | 0 | (tab) = NULL; \ |
104 | 0 | } \ |
105 | 0 | } while(0) |
106 | | |
107 | | #define TAB_REMOVE( count, tab, p ) \ |
108 | 0 | do { \ |
109 | 0 | int i_index; \ |
110 | 0 | TAB_FIND( count, tab, p, i_index ); \ |
111 | 0 | if( i_index >= 0 ) \ |
112 | 0 | TAB_ERASE( count, tab, i_index ); \ |
113 | 0 | } while(0) |
114 | | |
115 | 0 | #define TAB_INSERT_CAST( cast, count, tab, p, index ) do { \ |
116 | 0 | if( (count) > 0 ) \ |
117 | 0 | (tab) = cast realloc( tab, sizeof( *(tab) ) * ( (count) + 1 ) ); \ |
118 | 0 | else \ |
119 | 0 | (tab) = cast malloc( sizeof( *(tab) ) ); \ |
120 | 0 | if( !(tab) ) abort(); \ |
121 | 0 | if( (count) - (index) > 0 ) \ |
122 | 0 | memmove( (tab) + (index) + 1, \ |
123 | 0 | (tab) + (index), \ |
124 | 0 | ((count) - (index)) * sizeof( *(tab) ) );\ |
125 | 0 | (tab)[(index)] = (p); \ |
126 | 0 | (count)++; \ |
127 | 0 | } while(0) |
128 | | |
129 | | #define TAB_INSERT( count, tab, p, index ) \ |
130 | 0 | TAB_INSERT_CAST( , count, tab, p, index ) |
131 | | |
132 | | /** |
133 | | * Binary search in a sorted array. The key must be comparable by < and > |
134 | | * \param entries array of entries |
135 | | * \param count number of entries |
136 | | * \param elem key to check within an entry (like .id, or ->i_id) |
137 | | * \param zetype type of the key |
138 | | * \param key value of the key |
139 | | * \param answer index of answer within the array. -1 if not found |
140 | | */ |
141 | | #define BSEARCH( entries, count, elem, zetype, key, answer ) \ |
142 | | do { \ |
143 | | int low = 0, high = count - 1; \ |
144 | | answer = -1; \ |
145 | | while( low <= high ) {\ |
146 | | int mid = ((unsigned int)low + (unsigned int)high) >> 1;\ |
147 | | zetype mid_val = entries[mid] elem;\ |
148 | | if( mid_val < key ) \ |
149 | | low = mid + 1; \ |
150 | | else if ( mid_val > key ) \ |
151 | | high = mid -1; \ |
152 | | else \ |
153 | | { \ |
154 | | answer = mid; break; \ |
155 | | }\ |
156 | | } \ |
157 | | } while(0) |
158 | | |
159 | | |
160 | | /************************************************************************ |
161 | | * Dynamic arrays with progressive allocation |
162 | | ************************************************************************/ |
163 | | |
164 | | /* Internal functions */ |
165 | 0 | #define _ARRAY_ALLOC(array, newsize) { \ |
166 | 0 | (array).i_alloc = newsize; \ |
167 | 0 | (array).p_elems = vlc_reallocarray( (array).p_elems, (array).i_alloc, \ |
168 | 0 | sizeof(*(array).p_elems) ); \ |
169 | 0 | if( !(array).p_elems ) abort(); \ |
170 | 0 | } |
171 | | |
172 | 0 | #define _ARRAY_GROW1(array) { \ |
173 | 0 | if( (array).i_alloc < 10 ) \ |
174 | 0 | _ARRAY_ALLOC(array, 10 ) \ |
175 | 0 | else if( (array).i_alloc == (array).i_size ) \ |
176 | 0 | _ARRAY_ALLOC(array, (int)((array).i_alloc * 1.5) ) \ |
177 | 0 | } |
178 | | |
179 | | /* API */ |
180 | 0 | #define DECL_ARRAY(type) struct { \ |
181 | 0 | int i_alloc; \ |
182 | 0 | int i_size; \ |
183 | 0 | type *p_elems; \ |
184 | 0 | } |
185 | | |
186 | | #define TYPEDEF_ARRAY(type, name) typedef DECL_ARRAY(type) name; |
187 | | |
188 | | #define ARRAY_INIT(array) \ |
189 | 0 | do { \ |
190 | 0 | (array).i_alloc = 0; \ |
191 | 0 | (array).i_size = 0; \ |
192 | 0 | (array).p_elems = NULL; \ |
193 | 0 | } while(0) |
194 | | |
195 | | #define ARRAY_RESET(array) \ |
196 | | do { \ |
197 | | (array).i_alloc = 0; \ |
198 | | (array).i_size = 0; \ |
199 | | free( (array).p_elems ); (array).p_elems = NULL; \ |
200 | | } while(0) |
201 | | |
202 | | #define ARRAY_APPEND(array, elem) \ |
203 | 0 | do { \ |
204 | 0 | _ARRAY_GROW1(array); \ |
205 | 0 | (array).p_elems[(array).i_size] = elem; \ |
206 | 0 | (array).i_size++; \ |
207 | 0 | } while(0) |
208 | | |
209 | | #define ARRAY_INSERT(array,elem,pos) \ |
210 | | do { \ |
211 | | _ARRAY_GROW1(array); \ |
212 | | if( (array).i_size - (pos) ) { \ |
213 | | memmove( (array).p_elems + (pos) + 1, (array).p_elems + (pos), \ |
214 | | ((array).i_size-(pos)) * sizeof(*(array).p_elems) ); \ |
215 | | } \ |
216 | | (array).p_elems[pos] = elem; \ |
217 | | (array).i_size++; \ |
218 | | } while(0) |
219 | | |
220 | | #define _ARRAY_SHRINK(array) { \ |
221 | | if( (array).i_size > 10 && (array).i_size < (int)((array).i_alloc / 1.5) ) { \ |
222 | | _ARRAY_ALLOC(array, (array).i_size + 5); \ |
223 | | } \ |
224 | | } |
225 | | |
226 | | #define ARRAY_FIND(array, p, idx) \ |
227 | | TAB_FIND((array).i_size, (array).p_elems, p, idx) |
228 | | |
229 | | #define ARRAY_REMOVE(array,pos) \ |
230 | | do { \ |
231 | | if( (array).i_size - (pos) - 1 ) \ |
232 | | { \ |
233 | | memmove( (array).p_elems + (pos), (array).p_elems + (pos) + 1, \ |
234 | | ( (array).i_size - (pos) - 1 ) *sizeof(*(array).p_elems) );\ |
235 | | } \ |
236 | | (array).i_size--; \ |
237 | | _ARRAY_SHRINK(array); \ |
238 | | } while(0) |
239 | | |
240 | | #define ARRAY_VAL(array, pos) array.p_elems[pos] |
241 | | |
242 | | #define ARRAY_BSEARCH(array, elem, zetype, key, answer) \ |
243 | | BSEARCH( (array).p_elems, (array).i_size, elem, zetype, key, answer) |
244 | | |
245 | | /* append ##item to index variable name to avoid variable shadowing warnings for |
246 | | * nested loops */ |
247 | | #define ARRAY_FOREACH(item, array) \ |
248 | | for (int array_index_##item = 0; \ |
249 | | array_index_##item < (array).i_size && \ |
250 | | ((item) = (array).p_elems[array_index_##item], 1); \ |
251 | | ++array_index_##item) |
252 | | |
253 | | |
254 | | /************************************************************************ |
255 | | * Dynamic arrays with progressive allocation (Preferred API) |
256 | | ************************************************************************/ |
257 | | typedef struct vlc_array_t |
258 | | { |
259 | | size_t i_count; |
260 | | void ** pp_elems; |
261 | | } vlc_array_t; |
262 | | |
263 | | static inline void vlc_array_init( vlc_array_t * p_array ) |
264 | 2 | { |
265 | 2 | p_array->i_count = 0; |
266 | 2 | p_array->pp_elems = NULL; |
267 | 2 | } Unexecuted instantiation: demux-run.c:vlc_array_init Unexecuted instantiation: common.c:vlc_array_init Unexecuted instantiation: decoder.c:vlc_array_init Unexecuted instantiation: core.c:vlc_array_init Unexecuted instantiation: error.c:vlc_array_init Unexecuted instantiation: asf.c:vlc_array_init Unexecuted instantiation: avi.c:vlc_array_init Unexecuted instantiation: es.c:vlc_array_init Unexecuted instantiation: flac.c:vlc_array_init Unexecuted instantiation: xiph_metadata.c:vlc_array_init Unexecuted instantiation: mp4.c:vlc_array_init Unexecuted instantiation: heif.c:vlc_array_init Unexecuted instantiation: sap.c:vlc_array_init Unexecuted instantiation: subtitle.c:vlc_array_init Unexecuted instantiation: ttml.c:vlc_array_init Unexecuted instantiation: encttml.c:vlc_array_init Unexecuted instantiation: substtml.c:vlc_array_init Unexecuted instantiation: genttml.c:vlc_array_init Unexecuted instantiation: subsvtt.c:vlc_array_init Unexecuted instantiation: ogg.c:vlc_array_init Unexecuted instantiation: matroska_segment.cpp:vlc_array_init(vlc_array_t*) Unexecuted instantiation: chapters.cpp:vlc_array_init(vlc_array_t*) Unexecuted instantiation: chapter_command.cpp:vlc_array_init(vlc_array_t*) Unexecuted instantiation: subsusf.c:vlc_array_init Unexecuted instantiation: libvlc.c:vlc_array_init Unexecuted instantiation: media_tree.c:vlc_array_init Unexecuted instantiation: modules.c:vlc_array_init Unexecuted instantiation: entry.c:vlc_array_init Line | Count | Source | 264 | 2 | { | 265 | 2 | p_array->i_count = 0; | 266 | 2 | p_array->pp_elems = NULL; | 267 | 2 | } |
Unexecuted instantiation: interface.c:vlc_array_init Unexecuted instantiation: item.c:vlc_array_init Unexecuted instantiation: access.c:vlc_array_init Unexecuted instantiation: demux.c:vlc_array_init Unexecuted instantiation: input.c:vlc_array_init Unexecuted instantiation: meta.c:vlc_array_init Unexecuted instantiation: parse.c:vlc_array_init Unexecuted instantiation: player.c:vlc_array_init Unexecuted instantiation: stream.c:vlc_array_init Unexecuted instantiation: stream_extractor.c:vlc_array_init Unexecuted instantiation: stream_filter.c:vlc_array_init Unexecuted instantiation: stream_memory.c:vlc_array_init Unexecuted instantiation: subtitles.c:vlc_array_init Unexecuted instantiation: video_output.c:vlc_array_init Unexecuted instantiation: strings.c:vlc_array_init Unexecuted instantiation: epg.c:vlc_array_init Unexecuted instantiation: exit.c:vlc_array_init Unexecuted instantiation: variables.c:vlc_array_init Unexecuted instantiation: httpcookies.c:vlc_array_init Unexecuted instantiation: specific.c:vlc_array_init Unexecuted instantiation: stream_output.c:vlc_array_init Unexecuted instantiation: vlm.c:vlc_array_init Unexecuted instantiation: vlm_event.c:vlc_array_init Unexecuted instantiation: vlmshell.c:vlc_array_init Unexecuted instantiation: fetcher.c:vlc_array_init Unexecuted instantiation: es_out.c:vlc_array_init Unexecuted instantiation: es_out_timeshift.c:vlc_array_init |
268 | | |
269 | | static inline void vlc_array_clear( vlc_array_t * p_array ) |
270 | 0 | { |
271 | 0 | free( p_array->pp_elems ); |
272 | 0 | vlc_array_init( p_array ); |
273 | 0 | } Unexecuted instantiation: demux-run.c:vlc_array_clear Unexecuted instantiation: common.c:vlc_array_clear Unexecuted instantiation: decoder.c:vlc_array_clear Unexecuted instantiation: core.c:vlc_array_clear Unexecuted instantiation: error.c:vlc_array_clear Unexecuted instantiation: asf.c:vlc_array_clear Unexecuted instantiation: avi.c:vlc_array_clear Unexecuted instantiation: es.c:vlc_array_clear Unexecuted instantiation: flac.c:vlc_array_clear Unexecuted instantiation: xiph_metadata.c:vlc_array_clear Unexecuted instantiation: mp4.c:vlc_array_clear Unexecuted instantiation: heif.c:vlc_array_clear Unexecuted instantiation: sap.c:vlc_array_clear Unexecuted instantiation: subtitle.c:vlc_array_clear Unexecuted instantiation: ttml.c:vlc_array_clear Unexecuted instantiation: encttml.c:vlc_array_clear Unexecuted instantiation: substtml.c:vlc_array_clear Unexecuted instantiation: genttml.c:vlc_array_clear Unexecuted instantiation: subsvtt.c:vlc_array_clear Unexecuted instantiation: ogg.c:vlc_array_clear Unexecuted instantiation: matroska_segment.cpp:vlc_array_clear(vlc_array_t*) Unexecuted instantiation: chapters.cpp:vlc_array_clear(vlc_array_t*) Unexecuted instantiation: chapter_command.cpp:vlc_array_clear(vlc_array_t*) Unexecuted instantiation: subsusf.c:vlc_array_clear Unexecuted instantiation: libvlc.c:vlc_array_clear Unexecuted instantiation: media_tree.c:vlc_array_clear Unexecuted instantiation: modules.c:vlc_array_clear Unexecuted instantiation: entry.c:vlc_array_clear Unexecuted instantiation: dialog.c:vlc_array_clear Unexecuted instantiation: interface.c:vlc_array_clear Unexecuted instantiation: item.c:vlc_array_clear Unexecuted instantiation: access.c:vlc_array_clear Unexecuted instantiation: demux.c:vlc_array_clear Unexecuted instantiation: input.c:vlc_array_clear Unexecuted instantiation: meta.c:vlc_array_clear Unexecuted instantiation: parse.c:vlc_array_clear Unexecuted instantiation: player.c:vlc_array_clear Unexecuted instantiation: stream.c:vlc_array_clear Unexecuted instantiation: stream_extractor.c:vlc_array_clear Unexecuted instantiation: stream_filter.c:vlc_array_clear Unexecuted instantiation: stream_memory.c:vlc_array_clear Unexecuted instantiation: subtitles.c:vlc_array_clear Unexecuted instantiation: video_output.c:vlc_array_clear Unexecuted instantiation: strings.c:vlc_array_clear Unexecuted instantiation: epg.c:vlc_array_clear Unexecuted instantiation: exit.c:vlc_array_clear Unexecuted instantiation: variables.c:vlc_array_clear Unexecuted instantiation: httpcookies.c:vlc_array_clear Unexecuted instantiation: specific.c:vlc_array_clear Unexecuted instantiation: stream_output.c:vlc_array_clear Unexecuted instantiation: vlm.c:vlc_array_clear Unexecuted instantiation: vlm_event.c:vlc_array_clear Unexecuted instantiation: vlmshell.c:vlc_array_clear Unexecuted instantiation: fetcher.c:vlc_array_clear Unexecuted instantiation: es_out.c:vlc_array_clear Unexecuted instantiation: es_out_timeshift.c:vlc_array_clear |
274 | | |
275 | | /* Read */ |
276 | | static inline size_t vlc_array_count( const vlc_array_t * p_array ) |
277 | 0 | { |
278 | 0 | return p_array->i_count; |
279 | 0 | } Unexecuted instantiation: demux-run.c:vlc_array_count Unexecuted instantiation: common.c:vlc_array_count Unexecuted instantiation: decoder.c:vlc_array_count Unexecuted instantiation: core.c:vlc_array_count Unexecuted instantiation: error.c:vlc_array_count Unexecuted instantiation: asf.c:vlc_array_count Unexecuted instantiation: avi.c:vlc_array_count Unexecuted instantiation: es.c:vlc_array_count Unexecuted instantiation: flac.c:vlc_array_count Unexecuted instantiation: xiph_metadata.c:vlc_array_count Unexecuted instantiation: mp4.c:vlc_array_count Unexecuted instantiation: heif.c:vlc_array_count Unexecuted instantiation: sap.c:vlc_array_count Unexecuted instantiation: subtitle.c:vlc_array_count Unexecuted instantiation: ttml.c:vlc_array_count Unexecuted instantiation: encttml.c:vlc_array_count Unexecuted instantiation: substtml.c:vlc_array_count Unexecuted instantiation: genttml.c:vlc_array_count Unexecuted instantiation: subsvtt.c:vlc_array_count Unexecuted instantiation: ogg.c:vlc_array_count Unexecuted instantiation: matroska_segment.cpp:vlc_array_count(vlc_array_t const*) Unexecuted instantiation: chapters.cpp:vlc_array_count(vlc_array_t const*) Unexecuted instantiation: chapter_command.cpp:vlc_array_count(vlc_array_t const*) Unexecuted instantiation: subsusf.c:vlc_array_count Unexecuted instantiation: libvlc.c:vlc_array_count Unexecuted instantiation: media_tree.c:vlc_array_count Unexecuted instantiation: modules.c:vlc_array_count Unexecuted instantiation: entry.c:vlc_array_count Unexecuted instantiation: dialog.c:vlc_array_count Unexecuted instantiation: interface.c:vlc_array_count Unexecuted instantiation: item.c:vlc_array_count Unexecuted instantiation: access.c:vlc_array_count Unexecuted instantiation: demux.c:vlc_array_count Unexecuted instantiation: input.c:vlc_array_count Unexecuted instantiation: meta.c:vlc_array_count Unexecuted instantiation: parse.c:vlc_array_count Unexecuted instantiation: player.c:vlc_array_count Unexecuted instantiation: stream.c:vlc_array_count Unexecuted instantiation: stream_extractor.c:vlc_array_count Unexecuted instantiation: stream_filter.c:vlc_array_count Unexecuted instantiation: stream_memory.c:vlc_array_count Unexecuted instantiation: subtitles.c:vlc_array_count Unexecuted instantiation: video_output.c:vlc_array_count Unexecuted instantiation: strings.c:vlc_array_count Unexecuted instantiation: epg.c:vlc_array_count Unexecuted instantiation: exit.c:vlc_array_count Unexecuted instantiation: variables.c:vlc_array_count Unexecuted instantiation: httpcookies.c:vlc_array_count Unexecuted instantiation: specific.c:vlc_array_count Unexecuted instantiation: stream_output.c:vlc_array_count Unexecuted instantiation: vlm.c:vlc_array_count Unexecuted instantiation: vlm_event.c:vlc_array_count Unexecuted instantiation: vlmshell.c:vlc_array_count Unexecuted instantiation: fetcher.c:vlc_array_count Unexecuted instantiation: es_out.c:vlc_array_count Unexecuted instantiation: es_out_timeshift.c:vlc_array_count |
280 | | |
281 | | #ifndef __cplusplus |
282 | | # define vlc_array_item_at_index(ar, idx) \ |
283 | 0 | _Generic((ar), \ |
284 | 0 | const vlc_array_t *: ((ar)->pp_elems[idx]), \ |
285 | 0 | vlc_array_t *: ((ar)->pp_elems[idx])) |
286 | | #else |
287 | | static inline void *vlc_array_item_at_index( vlc_array_t *ar, size_t idx ) |
288 | 0 | { |
289 | 0 | return ar->pp_elems[idx]; |
290 | 0 | } Unexecuted instantiation: matroska_segment.cpp:vlc_array_item_at_index(vlc_array_t*, unsigned long) Unexecuted instantiation: chapters.cpp:vlc_array_item_at_index(vlc_array_t*, unsigned long) Unexecuted instantiation: chapter_command.cpp:vlc_array_item_at_index(vlc_array_t*, unsigned long) |
291 | | |
292 | | static inline const void *vlc_array_item_at_index( const vlc_array_t *ar, |
293 | | size_t idx ) |
294 | 0 | { |
295 | 0 | return ar->pp_elems[idx]; |
296 | 0 | } Unexecuted instantiation: matroska_segment.cpp:vlc_array_item_at_index(vlc_array_t const*, unsigned long) Unexecuted instantiation: chapters.cpp:vlc_array_item_at_index(vlc_array_t const*, unsigned long) Unexecuted instantiation: chapter_command.cpp:vlc_array_item_at_index(vlc_array_t const*, unsigned long) |
297 | | #endif |
298 | | |
299 | | static inline ssize_t vlc_array_index_of_item( const vlc_array_t *ar, |
300 | | const void *elem ) |
301 | 0 | { |
302 | 0 | for( size_t i = 0; i < ar->i_count; i++ ) |
303 | 0 | { |
304 | 0 | if( ar->pp_elems[i] == elem ) |
305 | 0 | return i; |
306 | 0 | } |
307 | 0 | return -1; |
308 | 0 | } Unexecuted instantiation: demux-run.c:vlc_array_index_of_item Unexecuted instantiation: common.c:vlc_array_index_of_item Unexecuted instantiation: decoder.c:vlc_array_index_of_item Unexecuted instantiation: core.c:vlc_array_index_of_item Unexecuted instantiation: error.c:vlc_array_index_of_item Unexecuted instantiation: asf.c:vlc_array_index_of_item Unexecuted instantiation: avi.c:vlc_array_index_of_item Unexecuted instantiation: es.c:vlc_array_index_of_item Unexecuted instantiation: flac.c:vlc_array_index_of_item Unexecuted instantiation: xiph_metadata.c:vlc_array_index_of_item Unexecuted instantiation: mp4.c:vlc_array_index_of_item Unexecuted instantiation: heif.c:vlc_array_index_of_item Unexecuted instantiation: sap.c:vlc_array_index_of_item Unexecuted instantiation: subtitle.c:vlc_array_index_of_item Unexecuted instantiation: ttml.c:vlc_array_index_of_item Unexecuted instantiation: encttml.c:vlc_array_index_of_item Unexecuted instantiation: substtml.c:vlc_array_index_of_item Unexecuted instantiation: genttml.c:vlc_array_index_of_item Unexecuted instantiation: subsvtt.c:vlc_array_index_of_item Unexecuted instantiation: ogg.c:vlc_array_index_of_item Unexecuted instantiation: matroska_segment.cpp:vlc_array_index_of_item(vlc_array_t const*, void const*) Unexecuted instantiation: chapters.cpp:vlc_array_index_of_item(vlc_array_t const*, void const*) Unexecuted instantiation: chapter_command.cpp:vlc_array_index_of_item(vlc_array_t const*, void const*) Unexecuted instantiation: subsusf.c:vlc_array_index_of_item Unexecuted instantiation: libvlc.c:vlc_array_index_of_item Unexecuted instantiation: media_tree.c:vlc_array_index_of_item Unexecuted instantiation: modules.c:vlc_array_index_of_item Unexecuted instantiation: entry.c:vlc_array_index_of_item Unexecuted instantiation: dialog.c:vlc_array_index_of_item Unexecuted instantiation: interface.c:vlc_array_index_of_item Unexecuted instantiation: item.c:vlc_array_index_of_item Unexecuted instantiation: access.c:vlc_array_index_of_item Unexecuted instantiation: demux.c:vlc_array_index_of_item Unexecuted instantiation: input.c:vlc_array_index_of_item Unexecuted instantiation: meta.c:vlc_array_index_of_item Unexecuted instantiation: parse.c:vlc_array_index_of_item Unexecuted instantiation: player.c:vlc_array_index_of_item Unexecuted instantiation: stream.c:vlc_array_index_of_item Unexecuted instantiation: stream_extractor.c:vlc_array_index_of_item Unexecuted instantiation: stream_filter.c:vlc_array_index_of_item Unexecuted instantiation: stream_memory.c:vlc_array_index_of_item Unexecuted instantiation: subtitles.c:vlc_array_index_of_item Unexecuted instantiation: video_output.c:vlc_array_index_of_item Unexecuted instantiation: strings.c:vlc_array_index_of_item Unexecuted instantiation: epg.c:vlc_array_index_of_item Unexecuted instantiation: exit.c:vlc_array_index_of_item Unexecuted instantiation: variables.c:vlc_array_index_of_item Unexecuted instantiation: httpcookies.c:vlc_array_index_of_item Unexecuted instantiation: specific.c:vlc_array_index_of_item Unexecuted instantiation: stream_output.c:vlc_array_index_of_item Unexecuted instantiation: vlm.c:vlc_array_index_of_item Unexecuted instantiation: vlm_event.c:vlc_array_index_of_item Unexecuted instantiation: vlmshell.c:vlc_array_index_of_item Unexecuted instantiation: fetcher.c:vlc_array_index_of_item Unexecuted instantiation: es_out.c:vlc_array_index_of_item Unexecuted instantiation: es_out_timeshift.c:vlc_array_index_of_item |
309 | | |
310 | | /* Write */ |
311 | | static inline int vlc_array_insert( vlc_array_t *ar, void *elem, int idx ) |
312 | 0 | { |
313 | 0 | void **pp = (void **)realloc( ar->pp_elems, |
314 | 0 | sizeof( void * ) * (ar->i_count + 1) ); |
315 | 0 | if( unlikely(pp == NULL) ) |
316 | 0 | return -1; |
317 | 0 |
|
318 | 0 | size_t tail = ar->i_count - idx; |
319 | 0 | if( tail > 0 ) |
320 | 0 | memmove( pp + idx + 1, pp + idx, sizeof( void * ) * tail ); |
321 | 0 |
|
322 | 0 | pp[idx] = elem; |
323 | 0 | ar->i_count++; |
324 | 0 | ar->pp_elems = pp; |
325 | 0 | return 0; |
326 | 0 | } Unexecuted instantiation: demux-run.c:vlc_array_insert Unexecuted instantiation: common.c:vlc_array_insert Unexecuted instantiation: decoder.c:vlc_array_insert Unexecuted instantiation: core.c:vlc_array_insert Unexecuted instantiation: error.c:vlc_array_insert Unexecuted instantiation: asf.c:vlc_array_insert Unexecuted instantiation: avi.c:vlc_array_insert Unexecuted instantiation: es.c:vlc_array_insert Unexecuted instantiation: flac.c:vlc_array_insert Unexecuted instantiation: xiph_metadata.c:vlc_array_insert Unexecuted instantiation: mp4.c:vlc_array_insert Unexecuted instantiation: heif.c:vlc_array_insert Unexecuted instantiation: sap.c:vlc_array_insert Unexecuted instantiation: subtitle.c:vlc_array_insert Unexecuted instantiation: ttml.c:vlc_array_insert Unexecuted instantiation: encttml.c:vlc_array_insert Unexecuted instantiation: substtml.c:vlc_array_insert Unexecuted instantiation: genttml.c:vlc_array_insert Unexecuted instantiation: subsvtt.c:vlc_array_insert Unexecuted instantiation: ogg.c:vlc_array_insert Unexecuted instantiation: matroska_segment.cpp:vlc_array_insert(vlc_array_t*, void*, int) Unexecuted instantiation: chapters.cpp:vlc_array_insert(vlc_array_t*, void*, int) Unexecuted instantiation: chapter_command.cpp:vlc_array_insert(vlc_array_t*, void*, int) Unexecuted instantiation: subsusf.c:vlc_array_insert Unexecuted instantiation: libvlc.c:vlc_array_insert Unexecuted instantiation: media_tree.c:vlc_array_insert Unexecuted instantiation: modules.c:vlc_array_insert Unexecuted instantiation: entry.c:vlc_array_insert Unexecuted instantiation: dialog.c:vlc_array_insert Unexecuted instantiation: interface.c:vlc_array_insert Unexecuted instantiation: item.c:vlc_array_insert Unexecuted instantiation: access.c:vlc_array_insert Unexecuted instantiation: demux.c:vlc_array_insert Unexecuted instantiation: input.c:vlc_array_insert Unexecuted instantiation: meta.c:vlc_array_insert Unexecuted instantiation: parse.c:vlc_array_insert Unexecuted instantiation: player.c:vlc_array_insert Unexecuted instantiation: stream.c:vlc_array_insert Unexecuted instantiation: stream_extractor.c:vlc_array_insert Unexecuted instantiation: stream_filter.c:vlc_array_insert Unexecuted instantiation: stream_memory.c:vlc_array_insert Unexecuted instantiation: subtitles.c:vlc_array_insert Unexecuted instantiation: video_output.c:vlc_array_insert Unexecuted instantiation: strings.c:vlc_array_insert Unexecuted instantiation: epg.c:vlc_array_insert Unexecuted instantiation: exit.c:vlc_array_insert Unexecuted instantiation: variables.c:vlc_array_insert Unexecuted instantiation: httpcookies.c:vlc_array_insert Unexecuted instantiation: specific.c:vlc_array_insert Unexecuted instantiation: stream_output.c:vlc_array_insert Unexecuted instantiation: vlm.c:vlc_array_insert Unexecuted instantiation: vlm_event.c:vlc_array_insert Unexecuted instantiation: vlmshell.c:vlc_array_insert Unexecuted instantiation: fetcher.c:vlc_array_insert Unexecuted instantiation: es_out.c:vlc_array_insert Unexecuted instantiation: es_out_timeshift.c:vlc_array_insert |
327 | | |
328 | | static inline void vlc_array_insert_or_abort( vlc_array_t *ar, void *elem, int idx ) |
329 | 0 | { |
330 | 0 | if( vlc_array_insert( ar, elem, idx ) ) |
331 | 0 | abort(); |
332 | 0 | } Unexecuted instantiation: demux-run.c:vlc_array_insert_or_abort Unexecuted instantiation: common.c:vlc_array_insert_or_abort Unexecuted instantiation: decoder.c:vlc_array_insert_or_abort Unexecuted instantiation: core.c:vlc_array_insert_or_abort Unexecuted instantiation: error.c:vlc_array_insert_or_abort Unexecuted instantiation: asf.c:vlc_array_insert_or_abort Unexecuted instantiation: avi.c:vlc_array_insert_or_abort Unexecuted instantiation: es.c:vlc_array_insert_or_abort Unexecuted instantiation: flac.c:vlc_array_insert_or_abort Unexecuted instantiation: xiph_metadata.c:vlc_array_insert_or_abort Unexecuted instantiation: mp4.c:vlc_array_insert_or_abort Unexecuted instantiation: heif.c:vlc_array_insert_or_abort Unexecuted instantiation: sap.c:vlc_array_insert_or_abort Unexecuted instantiation: subtitle.c:vlc_array_insert_or_abort Unexecuted instantiation: ttml.c:vlc_array_insert_or_abort Unexecuted instantiation: encttml.c:vlc_array_insert_or_abort Unexecuted instantiation: substtml.c:vlc_array_insert_or_abort Unexecuted instantiation: genttml.c:vlc_array_insert_or_abort Unexecuted instantiation: subsvtt.c:vlc_array_insert_or_abort Unexecuted instantiation: ogg.c:vlc_array_insert_or_abort Unexecuted instantiation: matroska_segment.cpp:vlc_array_insert_or_abort(vlc_array_t*, void*, int) Unexecuted instantiation: chapters.cpp:vlc_array_insert_or_abort(vlc_array_t*, void*, int) Unexecuted instantiation: chapter_command.cpp:vlc_array_insert_or_abort(vlc_array_t*, void*, int) Unexecuted instantiation: subsusf.c:vlc_array_insert_or_abort Unexecuted instantiation: libvlc.c:vlc_array_insert_or_abort Unexecuted instantiation: media_tree.c:vlc_array_insert_or_abort Unexecuted instantiation: modules.c:vlc_array_insert_or_abort Unexecuted instantiation: entry.c:vlc_array_insert_or_abort Unexecuted instantiation: dialog.c:vlc_array_insert_or_abort Unexecuted instantiation: interface.c:vlc_array_insert_or_abort Unexecuted instantiation: item.c:vlc_array_insert_or_abort Unexecuted instantiation: access.c:vlc_array_insert_or_abort Unexecuted instantiation: demux.c:vlc_array_insert_or_abort Unexecuted instantiation: input.c:vlc_array_insert_or_abort Unexecuted instantiation: meta.c:vlc_array_insert_or_abort Unexecuted instantiation: parse.c:vlc_array_insert_or_abort Unexecuted instantiation: player.c:vlc_array_insert_or_abort Unexecuted instantiation: stream.c:vlc_array_insert_or_abort Unexecuted instantiation: stream_extractor.c:vlc_array_insert_or_abort Unexecuted instantiation: stream_filter.c:vlc_array_insert_or_abort Unexecuted instantiation: stream_memory.c:vlc_array_insert_or_abort Unexecuted instantiation: subtitles.c:vlc_array_insert_or_abort Unexecuted instantiation: video_output.c:vlc_array_insert_or_abort Unexecuted instantiation: strings.c:vlc_array_insert_or_abort Unexecuted instantiation: epg.c:vlc_array_insert_or_abort Unexecuted instantiation: exit.c:vlc_array_insert_or_abort Unexecuted instantiation: variables.c:vlc_array_insert_or_abort Unexecuted instantiation: httpcookies.c:vlc_array_insert_or_abort Unexecuted instantiation: specific.c:vlc_array_insert_or_abort Unexecuted instantiation: stream_output.c:vlc_array_insert_or_abort Unexecuted instantiation: vlm.c:vlc_array_insert_or_abort Unexecuted instantiation: vlm_event.c:vlc_array_insert_or_abort Unexecuted instantiation: vlmshell.c:vlc_array_insert_or_abort Unexecuted instantiation: fetcher.c:vlc_array_insert_or_abort Unexecuted instantiation: es_out.c:vlc_array_insert_or_abort Unexecuted instantiation: es_out_timeshift.c:vlc_array_insert_or_abort |
333 | | |
334 | | static inline int vlc_array_append( vlc_array_t *ar, void *elem ) |
335 | 0 | { |
336 | 0 | void **pp = (void **)realloc( ar->pp_elems, |
337 | 0 | sizeof( void * ) * (ar->i_count + 1) ); |
338 | 0 | if( unlikely(pp == NULL) ) |
339 | 0 | return -1; |
340 | | |
341 | 0 | pp[ar->i_count++] = elem; |
342 | 0 | ar->pp_elems = pp; |
343 | 0 | return 0; |
344 | 0 | } Unexecuted instantiation: demux-run.c:vlc_array_append Unexecuted instantiation: common.c:vlc_array_append Unexecuted instantiation: decoder.c:vlc_array_append Unexecuted instantiation: core.c:vlc_array_append Unexecuted instantiation: error.c:vlc_array_append Unexecuted instantiation: asf.c:vlc_array_append Unexecuted instantiation: avi.c:vlc_array_append Unexecuted instantiation: es.c:vlc_array_append Unexecuted instantiation: flac.c:vlc_array_append Unexecuted instantiation: xiph_metadata.c:vlc_array_append Unexecuted instantiation: mp4.c:vlc_array_append Unexecuted instantiation: heif.c:vlc_array_append Unexecuted instantiation: sap.c:vlc_array_append Unexecuted instantiation: subtitle.c:vlc_array_append Unexecuted instantiation: ttml.c:vlc_array_append Unexecuted instantiation: encttml.c:vlc_array_append Unexecuted instantiation: substtml.c:vlc_array_append Unexecuted instantiation: genttml.c:vlc_array_append Unexecuted instantiation: subsvtt.c:vlc_array_append Unexecuted instantiation: ogg.c:vlc_array_append Unexecuted instantiation: matroska_segment.cpp:vlc_array_append(vlc_array_t*, void*) Unexecuted instantiation: chapters.cpp:vlc_array_append(vlc_array_t*, void*) Unexecuted instantiation: chapter_command.cpp:vlc_array_append(vlc_array_t*, void*) Unexecuted instantiation: subsusf.c:vlc_array_append Unexecuted instantiation: libvlc.c:vlc_array_append Unexecuted instantiation: media_tree.c:vlc_array_append Unexecuted instantiation: modules.c:vlc_array_append Unexecuted instantiation: entry.c:vlc_array_append Unexecuted instantiation: dialog.c:vlc_array_append Unexecuted instantiation: interface.c:vlc_array_append Unexecuted instantiation: item.c:vlc_array_append Unexecuted instantiation: access.c:vlc_array_append Unexecuted instantiation: demux.c:vlc_array_append Unexecuted instantiation: input.c:vlc_array_append Unexecuted instantiation: meta.c:vlc_array_append Unexecuted instantiation: parse.c:vlc_array_append Unexecuted instantiation: player.c:vlc_array_append Unexecuted instantiation: stream.c:vlc_array_append Unexecuted instantiation: stream_extractor.c:vlc_array_append Unexecuted instantiation: stream_filter.c:vlc_array_append Unexecuted instantiation: stream_memory.c:vlc_array_append Unexecuted instantiation: subtitles.c:vlc_array_append Unexecuted instantiation: video_output.c:vlc_array_append Unexecuted instantiation: strings.c:vlc_array_append Unexecuted instantiation: epg.c:vlc_array_append Unexecuted instantiation: exit.c:vlc_array_append Unexecuted instantiation: variables.c:vlc_array_append Unexecuted instantiation: httpcookies.c:vlc_array_append Unexecuted instantiation: specific.c:vlc_array_append Unexecuted instantiation: stream_output.c:vlc_array_append Unexecuted instantiation: vlm.c:vlc_array_append Unexecuted instantiation: vlm_event.c:vlc_array_append Unexecuted instantiation: vlmshell.c:vlc_array_append Unexecuted instantiation: fetcher.c:vlc_array_append Unexecuted instantiation: es_out.c:vlc_array_append Unexecuted instantiation: es_out_timeshift.c:vlc_array_append |
345 | | |
346 | | static inline void vlc_array_append_or_abort( vlc_array_t *ar, void *elem ) |
347 | 0 | { |
348 | 0 | if( vlc_array_append( ar, elem ) != 0 ) |
349 | 0 | abort(); |
350 | 0 | } Unexecuted instantiation: demux-run.c:vlc_array_append_or_abort Unexecuted instantiation: common.c:vlc_array_append_or_abort Unexecuted instantiation: decoder.c:vlc_array_append_or_abort Unexecuted instantiation: core.c:vlc_array_append_or_abort Unexecuted instantiation: error.c:vlc_array_append_or_abort Unexecuted instantiation: asf.c:vlc_array_append_or_abort Unexecuted instantiation: avi.c:vlc_array_append_or_abort Unexecuted instantiation: es.c:vlc_array_append_or_abort Unexecuted instantiation: flac.c:vlc_array_append_or_abort Unexecuted instantiation: xiph_metadata.c:vlc_array_append_or_abort Unexecuted instantiation: mp4.c:vlc_array_append_or_abort Unexecuted instantiation: heif.c:vlc_array_append_or_abort Unexecuted instantiation: sap.c:vlc_array_append_or_abort Unexecuted instantiation: subtitle.c:vlc_array_append_or_abort Unexecuted instantiation: ttml.c:vlc_array_append_or_abort Unexecuted instantiation: encttml.c:vlc_array_append_or_abort Unexecuted instantiation: substtml.c:vlc_array_append_or_abort Unexecuted instantiation: genttml.c:vlc_array_append_or_abort Unexecuted instantiation: subsvtt.c:vlc_array_append_or_abort Unexecuted instantiation: ogg.c:vlc_array_append_or_abort Unexecuted instantiation: matroska_segment.cpp:vlc_array_append_or_abort(vlc_array_t*, void*) Unexecuted instantiation: chapters.cpp:vlc_array_append_or_abort(vlc_array_t*, void*) Unexecuted instantiation: chapter_command.cpp:vlc_array_append_or_abort(vlc_array_t*, void*) Unexecuted instantiation: subsusf.c:vlc_array_append_or_abort Unexecuted instantiation: libvlc.c:vlc_array_append_or_abort Unexecuted instantiation: media_tree.c:vlc_array_append_or_abort Unexecuted instantiation: modules.c:vlc_array_append_or_abort Unexecuted instantiation: entry.c:vlc_array_append_or_abort Unexecuted instantiation: dialog.c:vlc_array_append_or_abort Unexecuted instantiation: interface.c:vlc_array_append_or_abort Unexecuted instantiation: item.c:vlc_array_append_or_abort Unexecuted instantiation: access.c:vlc_array_append_or_abort Unexecuted instantiation: demux.c:vlc_array_append_or_abort Unexecuted instantiation: input.c:vlc_array_append_or_abort Unexecuted instantiation: meta.c:vlc_array_append_or_abort Unexecuted instantiation: parse.c:vlc_array_append_or_abort Unexecuted instantiation: player.c:vlc_array_append_or_abort Unexecuted instantiation: stream.c:vlc_array_append_or_abort Unexecuted instantiation: stream_extractor.c:vlc_array_append_or_abort Unexecuted instantiation: stream_filter.c:vlc_array_append_or_abort Unexecuted instantiation: stream_memory.c:vlc_array_append_or_abort Unexecuted instantiation: subtitles.c:vlc_array_append_or_abort Unexecuted instantiation: video_output.c:vlc_array_append_or_abort Unexecuted instantiation: strings.c:vlc_array_append_or_abort Unexecuted instantiation: epg.c:vlc_array_append_or_abort Unexecuted instantiation: exit.c:vlc_array_append_or_abort Unexecuted instantiation: variables.c:vlc_array_append_or_abort Unexecuted instantiation: httpcookies.c:vlc_array_append_or_abort Unexecuted instantiation: specific.c:vlc_array_append_or_abort Unexecuted instantiation: stream_output.c:vlc_array_append_or_abort Unexecuted instantiation: vlm.c:vlc_array_append_or_abort Unexecuted instantiation: vlm_event.c:vlc_array_append_or_abort Unexecuted instantiation: vlmshell.c:vlc_array_append_or_abort Unexecuted instantiation: fetcher.c:vlc_array_append_or_abort Unexecuted instantiation: es_out.c:vlc_array_append_or_abort Unexecuted instantiation: es_out_timeshift.c:vlc_array_append_or_abort |
351 | | |
352 | | static inline void vlc_array_remove( vlc_array_t *ar, size_t idx ) |
353 | 0 | { |
354 | 0 | void **pp = ar->pp_elems; |
355 | 0 | size_t tail = ar->i_count - idx - 1; |
356 | |
|
357 | 0 | if( tail > 0 ) |
358 | 0 | memmove( pp + idx, pp + idx + 1, sizeof( void * ) * tail ); |
359 | |
|
360 | 0 | ar->i_count--; |
361 | |
|
362 | 0 | if( ar->i_count > 0 ) |
363 | 0 | { |
364 | 0 | pp = (void **)realloc( pp, sizeof( void * ) * ar->i_count ); |
365 | 0 | if( likely(pp != NULL) ) |
366 | 0 | ar->pp_elems = pp; |
367 | 0 | } |
368 | 0 | else |
369 | 0 | { |
370 | 0 | free( pp ); |
371 | 0 | ar->pp_elems = NULL; |
372 | 0 | } |
373 | 0 | } Unexecuted instantiation: demux-run.c:vlc_array_remove Unexecuted instantiation: common.c:vlc_array_remove Unexecuted instantiation: decoder.c:vlc_array_remove Unexecuted instantiation: core.c:vlc_array_remove Unexecuted instantiation: error.c:vlc_array_remove Unexecuted instantiation: asf.c:vlc_array_remove Unexecuted instantiation: avi.c:vlc_array_remove Unexecuted instantiation: es.c:vlc_array_remove Unexecuted instantiation: flac.c:vlc_array_remove Unexecuted instantiation: xiph_metadata.c:vlc_array_remove Unexecuted instantiation: mp4.c:vlc_array_remove Unexecuted instantiation: heif.c:vlc_array_remove Unexecuted instantiation: sap.c:vlc_array_remove Unexecuted instantiation: subtitle.c:vlc_array_remove Unexecuted instantiation: ttml.c:vlc_array_remove Unexecuted instantiation: encttml.c:vlc_array_remove Unexecuted instantiation: substtml.c:vlc_array_remove Unexecuted instantiation: genttml.c:vlc_array_remove Unexecuted instantiation: subsvtt.c:vlc_array_remove Unexecuted instantiation: ogg.c:vlc_array_remove Unexecuted instantiation: matroska_segment.cpp:vlc_array_remove(vlc_array_t*, unsigned long) Unexecuted instantiation: chapters.cpp:vlc_array_remove(vlc_array_t*, unsigned long) Unexecuted instantiation: chapter_command.cpp:vlc_array_remove(vlc_array_t*, unsigned long) Unexecuted instantiation: subsusf.c:vlc_array_remove Unexecuted instantiation: libvlc.c:vlc_array_remove Unexecuted instantiation: media_tree.c:vlc_array_remove Unexecuted instantiation: modules.c:vlc_array_remove Unexecuted instantiation: entry.c:vlc_array_remove Unexecuted instantiation: dialog.c:vlc_array_remove Unexecuted instantiation: interface.c:vlc_array_remove Unexecuted instantiation: item.c:vlc_array_remove Unexecuted instantiation: access.c:vlc_array_remove Unexecuted instantiation: demux.c:vlc_array_remove Unexecuted instantiation: input.c:vlc_array_remove Unexecuted instantiation: meta.c:vlc_array_remove Unexecuted instantiation: parse.c:vlc_array_remove Unexecuted instantiation: player.c:vlc_array_remove Unexecuted instantiation: stream.c:vlc_array_remove Unexecuted instantiation: stream_extractor.c:vlc_array_remove Unexecuted instantiation: stream_filter.c:vlc_array_remove Unexecuted instantiation: stream_memory.c:vlc_array_remove Unexecuted instantiation: subtitles.c:vlc_array_remove Unexecuted instantiation: video_output.c:vlc_array_remove Unexecuted instantiation: strings.c:vlc_array_remove Unexecuted instantiation: epg.c:vlc_array_remove Unexecuted instantiation: exit.c:vlc_array_remove Unexecuted instantiation: variables.c:vlc_array_remove Unexecuted instantiation: httpcookies.c:vlc_array_remove Unexecuted instantiation: specific.c:vlc_array_remove Unexecuted instantiation: stream_output.c:vlc_array_remove Unexecuted instantiation: vlm.c:vlc_array_remove Unexecuted instantiation: vlm_event.c:vlc_array_remove Unexecuted instantiation: vlmshell.c:vlc_array_remove Unexecuted instantiation: fetcher.c:vlc_array_remove Unexecuted instantiation: es_out.c:vlc_array_remove Unexecuted instantiation: es_out_timeshift.c:vlc_array_remove |
374 | | |
375 | | |
376 | | /************************************************************************ |
377 | | * Dictionaries |
378 | | ************************************************************************/ |
379 | | |
380 | | /* This function is not intended to be crypto-secure, we only want it to be |
381 | | * fast and not suck too much. This one is pretty fast and did 0 collisions |
382 | | * in wenglish's dictionary. |
383 | | */ |
384 | | static inline size_t DictHash(const char *psz_string, size_t hashsize) |
385 | 0 | { |
386 | 0 | uint64_t i_hash = 0; |
387 | 0 | if( psz_string ) |
388 | 0 | { |
389 | 0 | while( *psz_string ) |
390 | 0 | { |
391 | 0 | i_hash += *psz_string++; |
392 | 0 | i_hash += i_hash << 10; |
393 | 0 | i_hash ^= i_hash >> 8; |
394 | 0 | } |
395 | 0 | } |
396 | 0 | return i_hash % hashsize; |
397 | 0 | } Unexecuted instantiation: demux-run.c:DictHash Unexecuted instantiation: common.c:DictHash Unexecuted instantiation: decoder.c:DictHash Unexecuted instantiation: core.c:DictHash Unexecuted instantiation: error.c:DictHash Unexecuted instantiation: asf.c:DictHash Unexecuted instantiation: avi.c:DictHash Unexecuted instantiation: es.c:DictHash Unexecuted instantiation: flac.c:DictHash Unexecuted instantiation: xiph_metadata.c:DictHash Unexecuted instantiation: mp4.c:DictHash Unexecuted instantiation: heif.c:DictHash Unexecuted instantiation: sap.c:DictHash Unexecuted instantiation: subtitle.c:DictHash Unexecuted instantiation: ttml.c:DictHash Unexecuted instantiation: encttml.c:DictHash Unexecuted instantiation: substtml.c:DictHash Unexecuted instantiation: genttml.c:DictHash Unexecuted instantiation: subsvtt.c:DictHash Unexecuted instantiation: ogg.c:DictHash Unexecuted instantiation: matroska_segment.cpp:DictHash(char const*, unsigned long) Unexecuted instantiation: chapters.cpp:DictHash(char const*, unsigned long) Unexecuted instantiation: chapter_command.cpp:DictHash(char const*, unsigned long) Unexecuted instantiation: subsusf.c:DictHash Unexecuted instantiation: libvlc.c:DictHash Unexecuted instantiation: media_tree.c:DictHash Unexecuted instantiation: modules.c:DictHash Unexecuted instantiation: entry.c:DictHash Unexecuted instantiation: dialog.c:DictHash Unexecuted instantiation: interface.c:DictHash Unexecuted instantiation: item.c:DictHash Unexecuted instantiation: access.c:DictHash Unexecuted instantiation: demux.c:DictHash Unexecuted instantiation: input.c:DictHash Unexecuted instantiation: meta.c:DictHash Unexecuted instantiation: parse.c:DictHash Unexecuted instantiation: player.c:DictHash Unexecuted instantiation: stream.c:DictHash Unexecuted instantiation: stream_extractor.c:DictHash Unexecuted instantiation: stream_filter.c:DictHash Unexecuted instantiation: stream_memory.c:DictHash Unexecuted instantiation: subtitles.c:DictHash Unexecuted instantiation: video_output.c:DictHash Unexecuted instantiation: strings.c:DictHash Unexecuted instantiation: epg.c:DictHash Unexecuted instantiation: exit.c:DictHash Unexecuted instantiation: variables.c:DictHash Unexecuted instantiation: httpcookies.c:DictHash Unexecuted instantiation: specific.c:DictHash Unexecuted instantiation: stream_output.c:DictHash Unexecuted instantiation: vlm.c:DictHash Unexecuted instantiation: vlm_event.c:DictHash Unexecuted instantiation: vlmshell.c:DictHash Unexecuted instantiation: fetcher.c:DictHash Unexecuted instantiation: es_out.c:DictHash Unexecuted instantiation: es_out_timeshift.c:DictHash |
398 | | |
399 | | typedef struct vlc_dictionary_entry_t |
400 | | { |
401 | | char * psz_key; |
402 | | void * p_value; |
403 | | struct vlc_dictionary_entry_t * p_next; |
404 | | } vlc_dictionary_entry_t; |
405 | | |
406 | | typedef struct vlc_dictionary_t |
407 | | { |
408 | | size_t i_size; |
409 | | vlc_dictionary_entry_t ** p_entries; |
410 | | } vlc_dictionary_t; |
411 | | |
412 | | static void * const kVLCDictionaryNotFound = NULL; |
413 | | |
414 | | static inline void vlc_dictionary_init(vlc_dictionary_t * p_dict, size_t i_size) |
415 | 0 | { |
416 | 0 | p_dict->p_entries = NULL; |
417 | |
|
418 | 0 | if( i_size > 0 ) |
419 | 0 | { |
420 | 0 | p_dict->p_entries = (vlc_dictionary_entry_t **)calloc( i_size, sizeof(*p_dict->p_entries) ); |
421 | 0 | if( !p_dict->p_entries ) |
422 | 0 | i_size = 0; |
423 | 0 | } |
424 | 0 | p_dict->i_size = i_size; |
425 | 0 | } Unexecuted instantiation: demux-run.c:vlc_dictionary_init Unexecuted instantiation: common.c:vlc_dictionary_init Unexecuted instantiation: decoder.c:vlc_dictionary_init Unexecuted instantiation: core.c:vlc_dictionary_init Unexecuted instantiation: error.c:vlc_dictionary_init Unexecuted instantiation: asf.c:vlc_dictionary_init Unexecuted instantiation: avi.c:vlc_dictionary_init Unexecuted instantiation: es.c:vlc_dictionary_init Unexecuted instantiation: flac.c:vlc_dictionary_init Unexecuted instantiation: xiph_metadata.c:vlc_dictionary_init Unexecuted instantiation: mp4.c:vlc_dictionary_init Unexecuted instantiation: heif.c:vlc_dictionary_init Unexecuted instantiation: sap.c:vlc_dictionary_init Unexecuted instantiation: subtitle.c:vlc_dictionary_init Unexecuted instantiation: ttml.c:vlc_dictionary_init Unexecuted instantiation: encttml.c:vlc_dictionary_init Unexecuted instantiation: substtml.c:vlc_dictionary_init Unexecuted instantiation: genttml.c:vlc_dictionary_init Unexecuted instantiation: subsvtt.c:vlc_dictionary_init Unexecuted instantiation: ogg.c:vlc_dictionary_init Unexecuted instantiation: matroska_segment.cpp:vlc_dictionary_init(vlc_dictionary_t*, unsigned long) Unexecuted instantiation: chapters.cpp:vlc_dictionary_init(vlc_dictionary_t*, unsigned long) Unexecuted instantiation: chapter_command.cpp:vlc_dictionary_init(vlc_dictionary_t*, unsigned long) Unexecuted instantiation: subsusf.c:vlc_dictionary_init Unexecuted instantiation: libvlc.c:vlc_dictionary_init Unexecuted instantiation: media_tree.c:vlc_dictionary_init Unexecuted instantiation: modules.c:vlc_dictionary_init Unexecuted instantiation: entry.c:vlc_dictionary_init Unexecuted instantiation: dialog.c:vlc_dictionary_init Unexecuted instantiation: interface.c:vlc_dictionary_init Unexecuted instantiation: item.c:vlc_dictionary_init Unexecuted instantiation: access.c:vlc_dictionary_init Unexecuted instantiation: demux.c:vlc_dictionary_init Unexecuted instantiation: input.c:vlc_dictionary_init Unexecuted instantiation: meta.c:vlc_dictionary_init Unexecuted instantiation: parse.c:vlc_dictionary_init Unexecuted instantiation: player.c:vlc_dictionary_init Unexecuted instantiation: stream.c:vlc_dictionary_init Unexecuted instantiation: stream_extractor.c:vlc_dictionary_init Unexecuted instantiation: stream_filter.c:vlc_dictionary_init Unexecuted instantiation: stream_memory.c:vlc_dictionary_init Unexecuted instantiation: subtitles.c:vlc_dictionary_init Unexecuted instantiation: video_output.c:vlc_dictionary_init Unexecuted instantiation: strings.c:vlc_dictionary_init Unexecuted instantiation: epg.c:vlc_dictionary_init Unexecuted instantiation: exit.c:vlc_dictionary_init Unexecuted instantiation: variables.c:vlc_dictionary_init Unexecuted instantiation: httpcookies.c:vlc_dictionary_init Unexecuted instantiation: specific.c:vlc_dictionary_init Unexecuted instantiation: stream_output.c:vlc_dictionary_init Unexecuted instantiation: vlm.c:vlc_dictionary_init Unexecuted instantiation: vlm_event.c:vlc_dictionary_init Unexecuted instantiation: vlmshell.c:vlc_dictionary_init Unexecuted instantiation: fetcher.c:vlc_dictionary_init Unexecuted instantiation: es_out.c:vlc_dictionary_init Unexecuted instantiation: es_out_timeshift.c:vlc_dictionary_init |
426 | | |
427 | | static inline void vlc_dictionary_clear( vlc_dictionary_t * p_dict, |
428 | | void ( * pf_free )( void * p_data, void * p_obj ), |
429 | | void * p_obj ) |
430 | 0 | { |
431 | 0 | if( p_dict->p_entries ) |
432 | 0 | { |
433 | 0 | for (size_t i = 0; i < p_dict->i_size; i++) |
434 | 0 | { |
435 | 0 | vlc_dictionary_entry_t * p_current, * p_next; |
436 | 0 | p_current = p_dict->p_entries[i]; |
437 | 0 | while( p_current ) |
438 | 0 | { |
439 | 0 | p_next = p_current->p_next; |
440 | 0 | if( pf_free != NULL ) |
441 | 0 | ( * pf_free )( p_current->p_value, p_obj ); |
442 | 0 | free( p_current->psz_key ); |
443 | 0 | free( p_current ); |
444 | 0 | p_current = p_next; |
445 | 0 | } |
446 | 0 | } |
447 | 0 | free( p_dict->p_entries ); |
448 | 0 | p_dict->p_entries = NULL; |
449 | 0 | } |
450 | 0 | p_dict->i_size = 0; |
451 | 0 | } Unexecuted instantiation: demux-run.c:vlc_dictionary_clear Unexecuted instantiation: common.c:vlc_dictionary_clear Unexecuted instantiation: decoder.c:vlc_dictionary_clear Unexecuted instantiation: core.c:vlc_dictionary_clear Unexecuted instantiation: error.c:vlc_dictionary_clear Unexecuted instantiation: asf.c:vlc_dictionary_clear Unexecuted instantiation: avi.c:vlc_dictionary_clear Unexecuted instantiation: es.c:vlc_dictionary_clear Unexecuted instantiation: flac.c:vlc_dictionary_clear Unexecuted instantiation: xiph_metadata.c:vlc_dictionary_clear Unexecuted instantiation: mp4.c:vlc_dictionary_clear Unexecuted instantiation: heif.c:vlc_dictionary_clear Unexecuted instantiation: sap.c:vlc_dictionary_clear Unexecuted instantiation: subtitle.c:vlc_dictionary_clear Unexecuted instantiation: ttml.c:vlc_dictionary_clear Unexecuted instantiation: encttml.c:vlc_dictionary_clear Unexecuted instantiation: substtml.c:vlc_dictionary_clear Unexecuted instantiation: genttml.c:vlc_dictionary_clear Unexecuted instantiation: subsvtt.c:vlc_dictionary_clear Unexecuted instantiation: ogg.c:vlc_dictionary_clear Unexecuted instantiation: matroska_segment.cpp:vlc_dictionary_clear(vlc_dictionary_t*, void (*)(void*, void*), void*) Unexecuted instantiation: chapters.cpp:vlc_dictionary_clear(vlc_dictionary_t*, void (*)(void*, void*), void*) Unexecuted instantiation: chapter_command.cpp:vlc_dictionary_clear(vlc_dictionary_t*, void (*)(void*, void*), void*) Unexecuted instantiation: subsusf.c:vlc_dictionary_clear Unexecuted instantiation: libvlc.c:vlc_dictionary_clear Unexecuted instantiation: media_tree.c:vlc_dictionary_clear Unexecuted instantiation: modules.c:vlc_dictionary_clear Unexecuted instantiation: entry.c:vlc_dictionary_clear Unexecuted instantiation: dialog.c:vlc_dictionary_clear Unexecuted instantiation: interface.c:vlc_dictionary_clear Unexecuted instantiation: item.c:vlc_dictionary_clear Unexecuted instantiation: access.c:vlc_dictionary_clear Unexecuted instantiation: demux.c:vlc_dictionary_clear Unexecuted instantiation: input.c:vlc_dictionary_clear Unexecuted instantiation: meta.c:vlc_dictionary_clear Unexecuted instantiation: parse.c:vlc_dictionary_clear Unexecuted instantiation: player.c:vlc_dictionary_clear Unexecuted instantiation: stream.c:vlc_dictionary_clear Unexecuted instantiation: stream_extractor.c:vlc_dictionary_clear Unexecuted instantiation: stream_filter.c:vlc_dictionary_clear Unexecuted instantiation: stream_memory.c:vlc_dictionary_clear Unexecuted instantiation: subtitles.c:vlc_dictionary_clear Unexecuted instantiation: video_output.c:vlc_dictionary_clear Unexecuted instantiation: strings.c:vlc_dictionary_clear Unexecuted instantiation: epg.c:vlc_dictionary_clear Unexecuted instantiation: exit.c:vlc_dictionary_clear Unexecuted instantiation: variables.c:vlc_dictionary_clear Unexecuted instantiation: httpcookies.c:vlc_dictionary_clear Unexecuted instantiation: specific.c:vlc_dictionary_clear Unexecuted instantiation: stream_output.c:vlc_dictionary_clear Unexecuted instantiation: vlm.c:vlc_dictionary_clear Unexecuted instantiation: vlm_event.c:vlc_dictionary_clear Unexecuted instantiation: vlmshell.c:vlc_dictionary_clear Unexecuted instantiation: fetcher.c:vlc_dictionary_clear Unexecuted instantiation: es_out.c:vlc_dictionary_clear Unexecuted instantiation: es_out_timeshift.c:vlc_dictionary_clear |
452 | | |
453 | | static inline int |
454 | | vlc_dictionary_has_key( const vlc_dictionary_t * p_dict, const char * psz_key ) |
455 | 0 | { |
456 | 0 | if( !p_dict->p_entries ) |
457 | 0 | return 0; |
458 | | |
459 | 0 | size_t i_pos = DictHash(psz_key, p_dict->i_size); |
460 | 0 | const vlc_dictionary_entry_t * p_entry = p_dict->p_entries[i_pos]; |
461 | 0 | for( ; p_entry != NULL; p_entry = p_entry->p_next ) |
462 | 0 | { |
463 | 0 | if( !strcmp( psz_key, p_entry->psz_key ) ) |
464 | 0 | break; |
465 | 0 | } |
466 | 0 | return p_entry != NULL; |
467 | 0 | } Unexecuted instantiation: demux-run.c:vlc_dictionary_has_key Unexecuted instantiation: common.c:vlc_dictionary_has_key Unexecuted instantiation: decoder.c:vlc_dictionary_has_key Unexecuted instantiation: core.c:vlc_dictionary_has_key Unexecuted instantiation: error.c:vlc_dictionary_has_key Unexecuted instantiation: asf.c:vlc_dictionary_has_key Unexecuted instantiation: avi.c:vlc_dictionary_has_key Unexecuted instantiation: es.c:vlc_dictionary_has_key Unexecuted instantiation: flac.c:vlc_dictionary_has_key Unexecuted instantiation: xiph_metadata.c:vlc_dictionary_has_key Unexecuted instantiation: mp4.c:vlc_dictionary_has_key Unexecuted instantiation: heif.c:vlc_dictionary_has_key Unexecuted instantiation: sap.c:vlc_dictionary_has_key Unexecuted instantiation: subtitle.c:vlc_dictionary_has_key Unexecuted instantiation: ttml.c:vlc_dictionary_has_key Unexecuted instantiation: encttml.c:vlc_dictionary_has_key Unexecuted instantiation: substtml.c:vlc_dictionary_has_key Unexecuted instantiation: genttml.c:vlc_dictionary_has_key Unexecuted instantiation: subsvtt.c:vlc_dictionary_has_key Unexecuted instantiation: ogg.c:vlc_dictionary_has_key Unexecuted instantiation: matroska_segment.cpp:vlc_dictionary_has_key(vlc_dictionary_t const*, char const*) Unexecuted instantiation: chapters.cpp:vlc_dictionary_has_key(vlc_dictionary_t const*, char const*) Unexecuted instantiation: chapter_command.cpp:vlc_dictionary_has_key(vlc_dictionary_t const*, char const*) Unexecuted instantiation: subsusf.c:vlc_dictionary_has_key Unexecuted instantiation: libvlc.c:vlc_dictionary_has_key Unexecuted instantiation: media_tree.c:vlc_dictionary_has_key Unexecuted instantiation: modules.c:vlc_dictionary_has_key Unexecuted instantiation: entry.c:vlc_dictionary_has_key Unexecuted instantiation: dialog.c:vlc_dictionary_has_key Unexecuted instantiation: interface.c:vlc_dictionary_has_key Unexecuted instantiation: item.c:vlc_dictionary_has_key Unexecuted instantiation: access.c:vlc_dictionary_has_key Unexecuted instantiation: demux.c:vlc_dictionary_has_key Unexecuted instantiation: input.c:vlc_dictionary_has_key Unexecuted instantiation: meta.c:vlc_dictionary_has_key Unexecuted instantiation: parse.c:vlc_dictionary_has_key Unexecuted instantiation: player.c:vlc_dictionary_has_key Unexecuted instantiation: stream.c:vlc_dictionary_has_key Unexecuted instantiation: stream_extractor.c:vlc_dictionary_has_key Unexecuted instantiation: stream_filter.c:vlc_dictionary_has_key Unexecuted instantiation: stream_memory.c:vlc_dictionary_has_key Unexecuted instantiation: subtitles.c:vlc_dictionary_has_key Unexecuted instantiation: video_output.c:vlc_dictionary_has_key Unexecuted instantiation: strings.c:vlc_dictionary_has_key Unexecuted instantiation: epg.c:vlc_dictionary_has_key Unexecuted instantiation: exit.c:vlc_dictionary_has_key Unexecuted instantiation: variables.c:vlc_dictionary_has_key Unexecuted instantiation: httpcookies.c:vlc_dictionary_has_key Unexecuted instantiation: specific.c:vlc_dictionary_has_key Unexecuted instantiation: stream_output.c:vlc_dictionary_has_key Unexecuted instantiation: vlm.c:vlc_dictionary_has_key Unexecuted instantiation: vlm_event.c:vlc_dictionary_has_key Unexecuted instantiation: vlmshell.c:vlc_dictionary_has_key Unexecuted instantiation: fetcher.c:vlc_dictionary_has_key Unexecuted instantiation: es_out.c:vlc_dictionary_has_key Unexecuted instantiation: es_out_timeshift.c:vlc_dictionary_has_key |
468 | | |
469 | | static inline void * |
470 | | vlc_dictionary_value_for_key( const vlc_dictionary_t * p_dict, const char * psz_key ) |
471 | 0 | { |
472 | 0 | if( !p_dict->p_entries ) |
473 | 0 | return kVLCDictionaryNotFound; |
474 | | |
475 | 0 | size_t i_pos = DictHash(psz_key, p_dict->i_size); |
476 | 0 | vlc_dictionary_entry_t * p_entry = p_dict->p_entries[i_pos]; |
477 | |
|
478 | 0 | if( !p_entry ) |
479 | 0 | return kVLCDictionaryNotFound; |
480 | | |
481 | | /* Make sure we return the right item. (Hash collision) */ |
482 | 0 | do { |
483 | 0 | if( !strcmp( psz_key, p_entry->psz_key ) ) |
484 | 0 | return p_entry->p_value; |
485 | 0 | p_entry = p_entry->p_next; |
486 | 0 | } while( p_entry ); |
487 | | |
488 | 0 | return kVLCDictionaryNotFound; |
489 | 0 | } Unexecuted instantiation: demux-run.c:vlc_dictionary_value_for_key Unexecuted instantiation: common.c:vlc_dictionary_value_for_key Unexecuted instantiation: decoder.c:vlc_dictionary_value_for_key Unexecuted instantiation: core.c:vlc_dictionary_value_for_key Unexecuted instantiation: error.c:vlc_dictionary_value_for_key Unexecuted instantiation: asf.c:vlc_dictionary_value_for_key Unexecuted instantiation: avi.c:vlc_dictionary_value_for_key Unexecuted instantiation: es.c:vlc_dictionary_value_for_key Unexecuted instantiation: flac.c:vlc_dictionary_value_for_key Unexecuted instantiation: xiph_metadata.c:vlc_dictionary_value_for_key Unexecuted instantiation: mp4.c:vlc_dictionary_value_for_key Unexecuted instantiation: heif.c:vlc_dictionary_value_for_key Unexecuted instantiation: sap.c:vlc_dictionary_value_for_key Unexecuted instantiation: subtitle.c:vlc_dictionary_value_for_key Unexecuted instantiation: ttml.c:vlc_dictionary_value_for_key Unexecuted instantiation: encttml.c:vlc_dictionary_value_for_key Unexecuted instantiation: substtml.c:vlc_dictionary_value_for_key Unexecuted instantiation: genttml.c:vlc_dictionary_value_for_key Unexecuted instantiation: subsvtt.c:vlc_dictionary_value_for_key Unexecuted instantiation: ogg.c:vlc_dictionary_value_for_key Unexecuted instantiation: matroska_segment.cpp:vlc_dictionary_value_for_key(vlc_dictionary_t const*, char const*) Unexecuted instantiation: chapters.cpp:vlc_dictionary_value_for_key(vlc_dictionary_t const*, char const*) Unexecuted instantiation: chapter_command.cpp:vlc_dictionary_value_for_key(vlc_dictionary_t const*, char const*) Unexecuted instantiation: subsusf.c:vlc_dictionary_value_for_key Unexecuted instantiation: libvlc.c:vlc_dictionary_value_for_key Unexecuted instantiation: media_tree.c:vlc_dictionary_value_for_key Unexecuted instantiation: modules.c:vlc_dictionary_value_for_key Unexecuted instantiation: entry.c:vlc_dictionary_value_for_key Unexecuted instantiation: dialog.c:vlc_dictionary_value_for_key Unexecuted instantiation: interface.c:vlc_dictionary_value_for_key Unexecuted instantiation: item.c:vlc_dictionary_value_for_key Unexecuted instantiation: access.c:vlc_dictionary_value_for_key Unexecuted instantiation: demux.c:vlc_dictionary_value_for_key Unexecuted instantiation: input.c:vlc_dictionary_value_for_key Unexecuted instantiation: meta.c:vlc_dictionary_value_for_key Unexecuted instantiation: parse.c:vlc_dictionary_value_for_key Unexecuted instantiation: player.c:vlc_dictionary_value_for_key Unexecuted instantiation: stream.c:vlc_dictionary_value_for_key Unexecuted instantiation: stream_extractor.c:vlc_dictionary_value_for_key Unexecuted instantiation: stream_filter.c:vlc_dictionary_value_for_key Unexecuted instantiation: stream_memory.c:vlc_dictionary_value_for_key Unexecuted instantiation: subtitles.c:vlc_dictionary_value_for_key Unexecuted instantiation: video_output.c:vlc_dictionary_value_for_key Unexecuted instantiation: strings.c:vlc_dictionary_value_for_key Unexecuted instantiation: epg.c:vlc_dictionary_value_for_key Unexecuted instantiation: exit.c:vlc_dictionary_value_for_key Unexecuted instantiation: variables.c:vlc_dictionary_value_for_key Unexecuted instantiation: httpcookies.c:vlc_dictionary_value_for_key Unexecuted instantiation: specific.c:vlc_dictionary_value_for_key Unexecuted instantiation: stream_output.c:vlc_dictionary_value_for_key Unexecuted instantiation: vlm.c:vlc_dictionary_value_for_key Unexecuted instantiation: vlm_event.c:vlc_dictionary_value_for_key Unexecuted instantiation: vlmshell.c:vlc_dictionary_value_for_key Unexecuted instantiation: fetcher.c:vlc_dictionary_value_for_key Unexecuted instantiation: es_out.c:vlc_dictionary_value_for_key Unexecuted instantiation: es_out_timeshift.c:vlc_dictionary_value_for_key |
490 | | |
491 | | static inline size_t |
492 | | vlc_dictionary_keys_count( const vlc_dictionary_t * p_dict ) |
493 | 0 | { |
494 | 0 | vlc_dictionary_entry_t * p_entry; |
495 | 0 | size_t i, count = 0; |
496 | |
|
497 | 0 | if( !p_dict->p_entries ) |
498 | 0 | return 0; |
499 | | |
500 | 0 | for( i = 0; i < p_dict->i_size; i++ ) |
501 | 0 | { |
502 | 0 | for( p_entry = p_dict->p_entries[i]; p_entry; p_entry = p_entry->p_next ) count++; |
503 | 0 | } |
504 | 0 | return count; |
505 | 0 | } Unexecuted instantiation: demux-run.c:vlc_dictionary_keys_count Unexecuted instantiation: common.c:vlc_dictionary_keys_count Unexecuted instantiation: decoder.c:vlc_dictionary_keys_count Unexecuted instantiation: core.c:vlc_dictionary_keys_count Unexecuted instantiation: error.c:vlc_dictionary_keys_count Unexecuted instantiation: asf.c:vlc_dictionary_keys_count Unexecuted instantiation: avi.c:vlc_dictionary_keys_count Unexecuted instantiation: es.c:vlc_dictionary_keys_count Unexecuted instantiation: flac.c:vlc_dictionary_keys_count Unexecuted instantiation: xiph_metadata.c:vlc_dictionary_keys_count Unexecuted instantiation: mp4.c:vlc_dictionary_keys_count Unexecuted instantiation: heif.c:vlc_dictionary_keys_count Unexecuted instantiation: sap.c:vlc_dictionary_keys_count Unexecuted instantiation: subtitle.c:vlc_dictionary_keys_count Unexecuted instantiation: ttml.c:vlc_dictionary_keys_count Unexecuted instantiation: encttml.c:vlc_dictionary_keys_count Unexecuted instantiation: substtml.c:vlc_dictionary_keys_count Unexecuted instantiation: genttml.c:vlc_dictionary_keys_count Unexecuted instantiation: subsvtt.c:vlc_dictionary_keys_count Unexecuted instantiation: ogg.c:vlc_dictionary_keys_count Unexecuted instantiation: matroska_segment.cpp:vlc_dictionary_keys_count(vlc_dictionary_t const*) Unexecuted instantiation: chapters.cpp:vlc_dictionary_keys_count(vlc_dictionary_t const*) Unexecuted instantiation: chapter_command.cpp:vlc_dictionary_keys_count(vlc_dictionary_t const*) Unexecuted instantiation: subsusf.c:vlc_dictionary_keys_count Unexecuted instantiation: libvlc.c:vlc_dictionary_keys_count Unexecuted instantiation: media_tree.c:vlc_dictionary_keys_count Unexecuted instantiation: modules.c:vlc_dictionary_keys_count Unexecuted instantiation: entry.c:vlc_dictionary_keys_count Unexecuted instantiation: dialog.c:vlc_dictionary_keys_count Unexecuted instantiation: interface.c:vlc_dictionary_keys_count Unexecuted instantiation: item.c:vlc_dictionary_keys_count Unexecuted instantiation: access.c:vlc_dictionary_keys_count Unexecuted instantiation: demux.c:vlc_dictionary_keys_count Unexecuted instantiation: input.c:vlc_dictionary_keys_count Unexecuted instantiation: meta.c:vlc_dictionary_keys_count Unexecuted instantiation: parse.c:vlc_dictionary_keys_count Unexecuted instantiation: player.c:vlc_dictionary_keys_count Unexecuted instantiation: stream.c:vlc_dictionary_keys_count Unexecuted instantiation: stream_extractor.c:vlc_dictionary_keys_count Unexecuted instantiation: stream_filter.c:vlc_dictionary_keys_count Unexecuted instantiation: stream_memory.c:vlc_dictionary_keys_count Unexecuted instantiation: subtitles.c:vlc_dictionary_keys_count Unexecuted instantiation: video_output.c:vlc_dictionary_keys_count Unexecuted instantiation: strings.c:vlc_dictionary_keys_count Unexecuted instantiation: epg.c:vlc_dictionary_keys_count Unexecuted instantiation: exit.c:vlc_dictionary_keys_count Unexecuted instantiation: variables.c:vlc_dictionary_keys_count Unexecuted instantiation: httpcookies.c:vlc_dictionary_keys_count Unexecuted instantiation: specific.c:vlc_dictionary_keys_count Unexecuted instantiation: stream_output.c:vlc_dictionary_keys_count Unexecuted instantiation: vlm.c:vlc_dictionary_keys_count Unexecuted instantiation: vlm_event.c:vlc_dictionary_keys_count Unexecuted instantiation: vlmshell.c:vlc_dictionary_keys_count Unexecuted instantiation: fetcher.c:vlc_dictionary_keys_count Unexecuted instantiation: es_out.c:vlc_dictionary_keys_count Unexecuted instantiation: es_out_timeshift.c:vlc_dictionary_keys_count |
506 | | |
507 | | static inline bool |
508 | | vlc_dictionary_is_empty( const vlc_dictionary_t * p_dict ) |
509 | 0 | { |
510 | 0 | if( p_dict->p_entries ) |
511 | 0 | for (size_t i = 0; i < p_dict->i_size; i++) |
512 | 0 | if( p_dict->p_entries[i] ) |
513 | 0 | return false; |
514 | 0 | return true; |
515 | 0 | } Unexecuted instantiation: demux-run.c:vlc_dictionary_is_empty Unexecuted instantiation: common.c:vlc_dictionary_is_empty Unexecuted instantiation: decoder.c:vlc_dictionary_is_empty Unexecuted instantiation: core.c:vlc_dictionary_is_empty Unexecuted instantiation: error.c:vlc_dictionary_is_empty Unexecuted instantiation: asf.c:vlc_dictionary_is_empty Unexecuted instantiation: avi.c:vlc_dictionary_is_empty Unexecuted instantiation: es.c:vlc_dictionary_is_empty Unexecuted instantiation: flac.c:vlc_dictionary_is_empty Unexecuted instantiation: xiph_metadata.c:vlc_dictionary_is_empty Unexecuted instantiation: mp4.c:vlc_dictionary_is_empty Unexecuted instantiation: heif.c:vlc_dictionary_is_empty Unexecuted instantiation: sap.c:vlc_dictionary_is_empty Unexecuted instantiation: subtitle.c:vlc_dictionary_is_empty Unexecuted instantiation: ttml.c:vlc_dictionary_is_empty Unexecuted instantiation: encttml.c:vlc_dictionary_is_empty Unexecuted instantiation: substtml.c:vlc_dictionary_is_empty Unexecuted instantiation: genttml.c:vlc_dictionary_is_empty Unexecuted instantiation: subsvtt.c:vlc_dictionary_is_empty Unexecuted instantiation: ogg.c:vlc_dictionary_is_empty Unexecuted instantiation: matroska_segment.cpp:vlc_dictionary_is_empty(vlc_dictionary_t const*) Unexecuted instantiation: chapters.cpp:vlc_dictionary_is_empty(vlc_dictionary_t const*) Unexecuted instantiation: chapter_command.cpp:vlc_dictionary_is_empty(vlc_dictionary_t const*) Unexecuted instantiation: subsusf.c:vlc_dictionary_is_empty Unexecuted instantiation: libvlc.c:vlc_dictionary_is_empty Unexecuted instantiation: media_tree.c:vlc_dictionary_is_empty Unexecuted instantiation: modules.c:vlc_dictionary_is_empty Unexecuted instantiation: entry.c:vlc_dictionary_is_empty Unexecuted instantiation: dialog.c:vlc_dictionary_is_empty Unexecuted instantiation: interface.c:vlc_dictionary_is_empty Unexecuted instantiation: item.c:vlc_dictionary_is_empty Unexecuted instantiation: access.c:vlc_dictionary_is_empty Unexecuted instantiation: demux.c:vlc_dictionary_is_empty Unexecuted instantiation: input.c:vlc_dictionary_is_empty Unexecuted instantiation: meta.c:vlc_dictionary_is_empty Unexecuted instantiation: parse.c:vlc_dictionary_is_empty Unexecuted instantiation: player.c:vlc_dictionary_is_empty Unexecuted instantiation: stream.c:vlc_dictionary_is_empty Unexecuted instantiation: stream_extractor.c:vlc_dictionary_is_empty Unexecuted instantiation: stream_filter.c:vlc_dictionary_is_empty Unexecuted instantiation: stream_memory.c:vlc_dictionary_is_empty Unexecuted instantiation: subtitles.c:vlc_dictionary_is_empty Unexecuted instantiation: video_output.c:vlc_dictionary_is_empty Unexecuted instantiation: strings.c:vlc_dictionary_is_empty Unexecuted instantiation: epg.c:vlc_dictionary_is_empty Unexecuted instantiation: exit.c:vlc_dictionary_is_empty Unexecuted instantiation: variables.c:vlc_dictionary_is_empty Unexecuted instantiation: httpcookies.c:vlc_dictionary_is_empty Unexecuted instantiation: specific.c:vlc_dictionary_is_empty Unexecuted instantiation: stream_output.c:vlc_dictionary_is_empty Unexecuted instantiation: vlm.c:vlc_dictionary_is_empty Unexecuted instantiation: vlm_event.c:vlc_dictionary_is_empty Unexecuted instantiation: vlmshell.c:vlc_dictionary_is_empty Unexecuted instantiation: fetcher.c:vlc_dictionary_is_empty Unexecuted instantiation: es_out.c:vlc_dictionary_is_empty Unexecuted instantiation: es_out_timeshift.c:vlc_dictionary_is_empty |
516 | | |
517 | | static inline char ** |
518 | | vlc_dictionary_all_keys( const vlc_dictionary_t * p_dict ) |
519 | 0 | { |
520 | 0 | vlc_dictionary_entry_t * p_entry; |
521 | 0 | char ** ppsz_ret; |
522 | 0 | size_t i, count = vlc_dictionary_keys_count(p_dict); |
523 | |
|
524 | 0 | ppsz_ret = (char**)malloc(sizeof(char *) * (count + 1)); |
525 | 0 | if( unlikely(!ppsz_ret) ) |
526 | 0 | return NULL; |
527 | | |
528 | 0 | count = 0; |
529 | 0 | for( i = 0; i < p_dict->i_size; i++ ) |
530 | 0 | { |
531 | 0 | for( p_entry = p_dict->p_entries[i]; p_entry; p_entry = p_entry->p_next ) |
532 | 0 | ppsz_ret[count++] = strdup( p_entry->psz_key ); |
533 | 0 | } |
534 | 0 | ppsz_ret[count] = NULL; |
535 | 0 | return ppsz_ret; |
536 | 0 | } Unexecuted instantiation: demux-run.c:vlc_dictionary_all_keys Unexecuted instantiation: common.c:vlc_dictionary_all_keys Unexecuted instantiation: decoder.c:vlc_dictionary_all_keys Unexecuted instantiation: core.c:vlc_dictionary_all_keys Unexecuted instantiation: error.c:vlc_dictionary_all_keys Unexecuted instantiation: asf.c:vlc_dictionary_all_keys Unexecuted instantiation: avi.c:vlc_dictionary_all_keys Unexecuted instantiation: es.c:vlc_dictionary_all_keys Unexecuted instantiation: flac.c:vlc_dictionary_all_keys Unexecuted instantiation: xiph_metadata.c:vlc_dictionary_all_keys Unexecuted instantiation: mp4.c:vlc_dictionary_all_keys Unexecuted instantiation: heif.c:vlc_dictionary_all_keys Unexecuted instantiation: sap.c:vlc_dictionary_all_keys Unexecuted instantiation: subtitle.c:vlc_dictionary_all_keys Unexecuted instantiation: ttml.c:vlc_dictionary_all_keys Unexecuted instantiation: encttml.c:vlc_dictionary_all_keys Unexecuted instantiation: substtml.c:vlc_dictionary_all_keys Unexecuted instantiation: genttml.c:vlc_dictionary_all_keys Unexecuted instantiation: subsvtt.c:vlc_dictionary_all_keys Unexecuted instantiation: ogg.c:vlc_dictionary_all_keys Unexecuted instantiation: matroska_segment.cpp:vlc_dictionary_all_keys(vlc_dictionary_t const*) Unexecuted instantiation: chapters.cpp:vlc_dictionary_all_keys(vlc_dictionary_t const*) Unexecuted instantiation: chapter_command.cpp:vlc_dictionary_all_keys(vlc_dictionary_t const*) Unexecuted instantiation: subsusf.c:vlc_dictionary_all_keys Unexecuted instantiation: libvlc.c:vlc_dictionary_all_keys Unexecuted instantiation: media_tree.c:vlc_dictionary_all_keys Unexecuted instantiation: modules.c:vlc_dictionary_all_keys Unexecuted instantiation: entry.c:vlc_dictionary_all_keys Unexecuted instantiation: dialog.c:vlc_dictionary_all_keys Unexecuted instantiation: interface.c:vlc_dictionary_all_keys Unexecuted instantiation: item.c:vlc_dictionary_all_keys Unexecuted instantiation: access.c:vlc_dictionary_all_keys Unexecuted instantiation: demux.c:vlc_dictionary_all_keys Unexecuted instantiation: input.c:vlc_dictionary_all_keys Unexecuted instantiation: meta.c:vlc_dictionary_all_keys Unexecuted instantiation: parse.c:vlc_dictionary_all_keys Unexecuted instantiation: player.c:vlc_dictionary_all_keys Unexecuted instantiation: stream.c:vlc_dictionary_all_keys Unexecuted instantiation: stream_extractor.c:vlc_dictionary_all_keys Unexecuted instantiation: stream_filter.c:vlc_dictionary_all_keys Unexecuted instantiation: stream_memory.c:vlc_dictionary_all_keys Unexecuted instantiation: subtitles.c:vlc_dictionary_all_keys Unexecuted instantiation: video_output.c:vlc_dictionary_all_keys Unexecuted instantiation: strings.c:vlc_dictionary_all_keys Unexecuted instantiation: epg.c:vlc_dictionary_all_keys Unexecuted instantiation: exit.c:vlc_dictionary_all_keys Unexecuted instantiation: variables.c:vlc_dictionary_all_keys Unexecuted instantiation: httpcookies.c:vlc_dictionary_all_keys Unexecuted instantiation: specific.c:vlc_dictionary_all_keys Unexecuted instantiation: stream_output.c:vlc_dictionary_all_keys Unexecuted instantiation: vlm.c:vlc_dictionary_all_keys Unexecuted instantiation: vlm_event.c:vlc_dictionary_all_keys Unexecuted instantiation: vlmshell.c:vlc_dictionary_all_keys Unexecuted instantiation: fetcher.c:vlc_dictionary_all_keys Unexecuted instantiation: es_out.c:vlc_dictionary_all_keys Unexecuted instantiation: es_out_timeshift.c:vlc_dictionary_all_keys |
537 | | |
538 | | static inline void |
539 | | vlc_dictionary_insert_impl_( vlc_dictionary_t * p_dict, const char * psz_key, |
540 | | void * p_value, bool rebuild ) |
541 | 0 | { |
542 | 0 | if( !p_dict->p_entries ) |
543 | 0 | vlc_dictionary_init( p_dict, 1 ); |
544 | |
|
545 | 0 | size_t i_pos = DictHash(psz_key, p_dict->i_size); |
546 | 0 | vlc_dictionary_entry_t * p_entry; |
547 | |
|
548 | 0 | p_entry = (vlc_dictionary_entry_t *)malloc(sizeof(*p_entry)); |
549 | 0 | p_entry->psz_key = strdup( psz_key ); |
550 | 0 | p_entry->p_value = p_value; |
551 | 0 | p_entry->p_next = p_dict->p_entries[i_pos]; |
552 | 0 | p_dict->p_entries[i_pos] = p_entry; |
553 | 0 | if( rebuild ) |
554 | 0 | { |
555 | | /* Count how many items there was */ |
556 | 0 | int count; |
557 | 0 | for( count = 1; p_entry->p_next; count++ ) |
558 | 0 | p_entry = p_entry->p_next; |
559 | 0 | if( count > 3 ) /* XXX: this need tuning */ |
560 | 0 | { |
561 | | /* Here it starts to be not good, rebuild a bigger dictionary */ |
562 | 0 | struct vlc_dictionary_t new_dict; |
563 | 0 | size_t i_new_size = (p_dict->i_size + 2) * 3 / 2; /* XXX: this need tuning */ |
564 | 0 | size_t i; |
565 | 0 | vlc_dictionary_init( &new_dict, i_new_size ); |
566 | 0 | for( i = 0; i < p_dict->i_size; i++ ) |
567 | 0 | { |
568 | 0 | p_entry = p_dict->p_entries[i]; |
569 | 0 | while( p_entry ) |
570 | 0 | { |
571 | 0 | vlc_dictionary_insert_impl_( &new_dict, p_entry->psz_key, |
572 | 0 | p_entry->p_value, |
573 | 0 | false /* To avoid multiple rebuild loop */); |
574 | 0 | p_entry = p_entry->p_next; |
575 | 0 | } |
576 | 0 | } |
577 | |
|
578 | 0 | vlc_dictionary_clear( p_dict, NULL, NULL ); |
579 | 0 | p_dict->i_size = new_dict.i_size; |
580 | 0 | p_dict->p_entries = new_dict.p_entries; |
581 | 0 | } |
582 | 0 | } |
583 | 0 | } Unexecuted instantiation: demux-run.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: common.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: decoder.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: core.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: error.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: asf.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: avi.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: es.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: flac.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: xiph_metadata.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: mp4.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: heif.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: sap.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: subtitle.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: ttml.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: encttml.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: substtml.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: genttml.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: subsvtt.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: ogg.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: matroska_segment.cpp:vlc_dictionary_insert_impl_(vlc_dictionary_t*, char const*, void*, bool) Unexecuted instantiation: chapters.cpp:vlc_dictionary_insert_impl_(vlc_dictionary_t*, char const*, void*, bool) Unexecuted instantiation: chapter_command.cpp:vlc_dictionary_insert_impl_(vlc_dictionary_t*, char const*, void*, bool) Unexecuted instantiation: subsusf.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: libvlc.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: media_tree.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: modules.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: entry.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: dialog.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: interface.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: item.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: access.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: demux.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: input.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: meta.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: parse.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: player.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: stream.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: stream_extractor.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: stream_filter.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: stream_memory.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: subtitles.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: video_output.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: strings.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: epg.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: exit.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: variables.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: httpcookies.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: specific.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: stream_output.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: vlm.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: vlm_event.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: vlmshell.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: fetcher.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: es_out.c:vlc_dictionary_insert_impl_ Unexecuted instantiation: es_out_timeshift.c:vlc_dictionary_insert_impl_ |
584 | | |
585 | | static inline void |
586 | | vlc_dictionary_insert( vlc_dictionary_t * p_dict, const char * psz_key, void * p_value ) |
587 | 0 | { |
588 | 0 | vlc_dictionary_insert_impl_( p_dict, psz_key, p_value, true ); |
589 | 0 | } Unexecuted instantiation: demux-run.c:vlc_dictionary_insert Unexecuted instantiation: common.c:vlc_dictionary_insert Unexecuted instantiation: decoder.c:vlc_dictionary_insert Unexecuted instantiation: core.c:vlc_dictionary_insert Unexecuted instantiation: error.c:vlc_dictionary_insert Unexecuted instantiation: asf.c:vlc_dictionary_insert Unexecuted instantiation: avi.c:vlc_dictionary_insert Unexecuted instantiation: es.c:vlc_dictionary_insert Unexecuted instantiation: flac.c:vlc_dictionary_insert Unexecuted instantiation: xiph_metadata.c:vlc_dictionary_insert Unexecuted instantiation: mp4.c:vlc_dictionary_insert Unexecuted instantiation: heif.c:vlc_dictionary_insert Unexecuted instantiation: sap.c:vlc_dictionary_insert Unexecuted instantiation: subtitle.c:vlc_dictionary_insert Unexecuted instantiation: ttml.c:vlc_dictionary_insert Unexecuted instantiation: encttml.c:vlc_dictionary_insert Unexecuted instantiation: substtml.c:vlc_dictionary_insert Unexecuted instantiation: genttml.c:vlc_dictionary_insert Unexecuted instantiation: subsvtt.c:vlc_dictionary_insert Unexecuted instantiation: ogg.c:vlc_dictionary_insert Unexecuted instantiation: matroska_segment.cpp:vlc_dictionary_insert(vlc_dictionary_t*, char const*, void*) Unexecuted instantiation: chapters.cpp:vlc_dictionary_insert(vlc_dictionary_t*, char const*, void*) Unexecuted instantiation: chapter_command.cpp:vlc_dictionary_insert(vlc_dictionary_t*, char const*, void*) Unexecuted instantiation: subsusf.c:vlc_dictionary_insert Unexecuted instantiation: libvlc.c:vlc_dictionary_insert Unexecuted instantiation: media_tree.c:vlc_dictionary_insert Unexecuted instantiation: modules.c:vlc_dictionary_insert Unexecuted instantiation: entry.c:vlc_dictionary_insert Unexecuted instantiation: dialog.c:vlc_dictionary_insert Unexecuted instantiation: interface.c:vlc_dictionary_insert Unexecuted instantiation: item.c:vlc_dictionary_insert Unexecuted instantiation: access.c:vlc_dictionary_insert Unexecuted instantiation: demux.c:vlc_dictionary_insert Unexecuted instantiation: input.c:vlc_dictionary_insert Unexecuted instantiation: meta.c:vlc_dictionary_insert Unexecuted instantiation: parse.c:vlc_dictionary_insert Unexecuted instantiation: player.c:vlc_dictionary_insert Unexecuted instantiation: stream.c:vlc_dictionary_insert Unexecuted instantiation: stream_extractor.c:vlc_dictionary_insert Unexecuted instantiation: stream_filter.c:vlc_dictionary_insert Unexecuted instantiation: stream_memory.c:vlc_dictionary_insert Unexecuted instantiation: subtitles.c:vlc_dictionary_insert Unexecuted instantiation: video_output.c:vlc_dictionary_insert Unexecuted instantiation: strings.c:vlc_dictionary_insert Unexecuted instantiation: epg.c:vlc_dictionary_insert Unexecuted instantiation: exit.c:vlc_dictionary_insert Unexecuted instantiation: variables.c:vlc_dictionary_insert Unexecuted instantiation: httpcookies.c:vlc_dictionary_insert Unexecuted instantiation: specific.c:vlc_dictionary_insert Unexecuted instantiation: stream_output.c:vlc_dictionary_insert Unexecuted instantiation: vlm.c:vlc_dictionary_insert Unexecuted instantiation: vlm_event.c:vlc_dictionary_insert Unexecuted instantiation: vlmshell.c:vlc_dictionary_insert Unexecuted instantiation: fetcher.c:vlc_dictionary_insert Unexecuted instantiation: es_out.c:vlc_dictionary_insert Unexecuted instantiation: es_out_timeshift.c:vlc_dictionary_insert |
590 | | |
591 | | static inline void |
592 | | vlc_dictionary_remove_value_for_key( const vlc_dictionary_t * p_dict, const char * psz_key, |
593 | | void ( * pf_free )( void * p_data, void * p_obj ), |
594 | | void * p_obj ) |
595 | 0 | { |
596 | 0 | if( !p_dict->p_entries ) |
597 | 0 | return; |
598 | | |
599 | 0 | size_t i_pos = DictHash(psz_key, p_dict->i_size); |
600 | 0 | vlc_dictionary_entry_t * p_entry = p_dict->p_entries[i_pos]; |
601 | 0 | vlc_dictionary_entry_t * p_prev; |
602 | |
|
603 | 0 | if( !p_entry ) |
604 | 0 | return; /* Not found, nothing to do */ |
605 | | |
606 | | /* Hash collision */ |
607 | 0 | p_prev = NULL; |
608 | 0 | do { |
609 | 0 | if( !strcmp( psz_key, p_entry->psz_key ) ) |
610 | 0 | { |
611 | 0 | if( pf_free != NULL ) |
612 | 0 | ( * pf_free )( p_entry->p_value, p_obj ); |
613 | 0 | if( !p_prev ) |
614 | 0 | p_dict->p_entries[i_pos] = p_entry->p_next; |
615 | 0 | else |
616 | 0 | p_prev->p_next = p_entry->p_next; |
617 | 0 | free( p_entry->psz_key ); |
618 | 0 | free( p_entry ); |
619 | 0 | return; |
620 | 0 | } |
621 | 0 | p_prev = p_entry; |
622 | 0 | p_entry = p_entry->p_next; |
623 | 0 | } while( p_entry ); |
624 | | |
625 | | /* No key was found */ |
626 | 0 | } Unexecuted instantiation: demux-run.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: common.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: decoder.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: core.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: error.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: asf.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: avi.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: es.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: flac.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: xiph_metadata.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: mp4.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: heif.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: sap.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: subtitle.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: ttml.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: encttml.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: substtml.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: genttml.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: subsvtt.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: ogg.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: matroska_segment.cpp:vlc_dictionary_remove_value_for_key(vlc_dictionary_t const*, char const*, void (*)(void*, void*), void*) Unexecuted instantiation: chapters.cpp:vlc_dictionary_remove_value_for_key(vlc_dictionary_t const*, char const*, void (*)(void*, void*), void*) Unexecuted instantiation: chapter_command.cpp:vlc_dictionary_remove_value_for_key(vlc_dictionary_t const*, char const*, void (*)(void*, void*), void*) Unexecuted instantiation: subsusf.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: libvlc.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: media_tree.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: modules.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: entry.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: dialog.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: interface.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: item.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: access.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: demux.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: input.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: meta.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: parse.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: player.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: stream.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: stream_extractor.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: stream_filter.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: stream_memory.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: subtitles.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: video_output.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: strings.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: epg.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: exit.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: variables.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: httpcookies.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: specific.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: stream_output.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: vlm.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: vlm_event.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: vlmshell.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: fetcher.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: es_out.c:vlc_dictionary_remove_value_for_key Unexecuted instantiation: es_out_timeshift.c:vlc_dictionary_remove_value_for_key |
627 | | |
628 | | #ifdef __cplusplus |
629 | | // C++ helpers |
630 | | template <typename T> |
631 | | void vlc_delete_all( T &container ) |
632 | 0 | { |
633 | 0 | typename T::iterator it = container.begin(); |
634 | 0 | while ( it != container.end() ) |
635 | 0 | { |
636 | 0 | delete *it; |
637 | 0 | ++it; |
638 | 0 | } |
639 | 0 | container.clear(); |
640 | 0 | } Unexecuted instantiation: void vlc_delete_all<std::__1::vector<mkv::chapter_edition_c*, std::__1::allocator<mkv::chapter_edition_c*> > >(std::__1::vector<mkv::chapter_edition_c*, std::__1::allocator<mkv::chapter_edition_c*> >&) Unexecuted instantiation: void vlc_delete_all<std::__1::vector<mkv::chapter_translation_c*, std::__1::allocator<mkv::chapter_translation_c*> > >(std::__1::vector<mkv::chapter_translation_c*, std::__1::allocator<mkv::chapter_translation_c*> >&) Unexecuted instantiation: void vlc_delete_all<std::__1::vector<libmatroska::KaxSegmentFamily*, std::__1::allocator<libmatroska::KaxSegmentFamily*> > >(std::__1::vector<libmatroska::KaxSegmentFamily*, std::__1::allocator<libmatroska::KaxSegmentFamily*> >&) Unexecuted instantiation: void vlc_delete_all<std::__1::vector<mkv::chapter_codec_cmds_c*, std::__1::allocator<mkv::chapter_codec_cmds_c*> > >(std::__1::vector<mkv::chapter_codec_cmds_c*, std::__1::allocator<mkv::chapter_codec_cmds_c*> >&) Unexecuted instantiation: void vlc_delete_all<std::__1::vector<mkv::chapter_item_c*, std::__1::allocator<mkv::chapter_item_c*> > >(std::__1::vector<mkv::chapter_item_c*, std::__1::allocator<mkv::chapter_item_c*> >&) |
641 | | |
642 | | #endif |
643 | | |
644 | | #endif |