list: Decide the entry eliminator of list at its initialization.
[L-SMASH.git] / core / box_default.h
blobf38379876b151bbfca7428b2f980c96940a1d0d9
1 /*****************************************************************************
2 * box_default.h
3 *****************************************************************************
4 * Copyright (C) 2017 L-SMASH project
6 * Authors: Yusuke Nakamura <muken.the.vfrmaniac@gmail.com>
8 * Permission to use, copy, modify, and/or distribute this software for any
9 * purpose with or without fee is hereby granted, provided that the above
10 * copyright notice and this permission notice appear in all copies.
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 *****************************************************************************/
21 /* This file is available under an ISC license. */
23 #define ALLOCATE_BOX( box_name ) \
24 (isom_##box_name##_t *)allocate_box_by_default( &isom_##box_name##_box_default, \
25 sizeof(isom_##box_name##_box_default) )
27 #define DEFINE_BOX_DEFAULT_CONSTANT( box_name ) \
28 extern const isom_##box_name##_t isom_##box_name##_box_default; \
29 static inline isom_##box_name##_t *isom_non_existing_##box_name( void ) \
30 { \
31 return (isom_##box_name##_t *)&isom_##box_name##_box_default; \
34 DEFINE_BOX_DEFAULT_CONSTANT( dummy )
35 DEFINE_BOX_DEFAULT_CONSTANT( unknown )
36 DEFINE_BOX_DEFAULT_CONSTANT( ftyp )
37 DEFINE_BOX_DEFAULT_CONSTANT( ctab )
38 DEFINE_BOX_DEFAULT_CONSTANT( tkhd )
39 DEFINE_BOX_DEFAULT_CONSTANT( clef )
40 DEFINE_BOX_DEFAULT_CONSTANT( prof )
41 DEFINE_BOX_DEFAULT_CONSTANT( enof )
42 DEFINE_BOX_DEFAULT_CONSTANT( tapt )
43 DEFINE_BOX_DEFAULT_CONSTANT( elst )
44 DEFINE_BOX_DEFAULT_CONSTANT( edts )
45 DEFINE_BOX_DEFAULT_CONSTANT( tref_type )
46 DEFINE_BOX_DEFAULT_CONSTANT( tref )
47 DEFINE_BOX_DEFAULT_CONSTANT( mdhd )
48 DEFINE_BOX_DEFAULT_CONSTANT( hdlr )
49 DEFINE_BOX_DEFAULT_CONSTANT( vmhd )
50 DEFINE_BOX_DEFAULT_CONSTANT( smhd )
51 DEFINE_BOX_DEFAULT_CONSTANT( hmhd )
52 DEFINE_BOX_DEFAULT_CONSTANT( nmhd )
53 DEFINE_BOX_DEFAULT_CONSTANT( gmin )
54 DEFINE_BOX_DEFAULT_CONSTANT( text )
55 DEFINE_BOX_DEFAULT_CONSTANT( gmhd )
56 DEFINE_BOX_DEFAULT_CONSTANT( dref_entry )
57 DEFINE_BOX_DEFAULT_CONSTANT( dref )
58 DEFINE_BOX_DEFAULT_CONSTANT( dinf )
59 DEFINE_BOX_DEFAULT_CONSTANT( esds )
60 DEFINE_BOX_DEFAULT_CONSTANT( btrt )
61 DEFINE_BOX_DEFAULT_CONSTANT( glbl )
62 DEFINE_BOX_DEFAULT_CONSTANT( clap )
63 DEFINE_BOX_DEFAULT_CONSTANT( pasp )
64 DEFINE_BOX_DEFAULT_CONSTANT( colr )
65 DEFINE_BOX_DEFAULT_CONSTANT( gama )
66 DEFINE_BOX_DEFAULT_CONSTANT( fiel )
67 DEFINE_BOX_DEFAULT_CONSTANT( cspc )
68 DEFINE_BOX_DEFAULT_CONSTANT( sgbt )
69 DEFINE_BOX_DEFAULT_CONSTANT( stsl )
70 DEFINE_BOX_DEFAULT_CONSTANT( sample_entry )
71 DEFINE_BOX_DEFAULT_CONSTANT( mp4s_entry )
72 DEFINE_BOX_DEFAULT_CONSTANT( visual_entry )
73 DEFINE_BOX_DEFAULT_CONSTANT( frma )
74 DEFINE_BOX_DEFAULT_CONSTANT( enda )
75 DEFINE_BOX_DEFAULT_CONSTANT( mp4a )
76 DEFINE_BOX_DEFAULT_CONSTANT( terminator )
77 DEFINE_BOX_DEFAULT_CONSTANT( wave )
78 DEFINE_BOX_DEFAULT_CONSTANT( chan )
79 DEFINE_BOX_DEFAULT_CONSTANT( srat )
80 DEFINE_BOX_DEFAULT_CONSTANT( audio_entry )
81 DEFINE_BOX_DEFAULT_CONSTANT( hint_entry )
82 DEFINE_BOX_DEFAULT_CONSTANT( metadata_entry )
83 DEFINE_BOX_DEFAULT_CONSTANT( qt_text_entry )
84 DEFINE_BOX_DEFAULT_CONSTANT( ftab )
85 DEFINE_BOX_DEFAULT_CONSTANT( tx3g_entry )
86 DEFINE_BOX_DEFAULT_CONSTANT( stsd )
87 DEFINE_BOX_DEFAULT_CONSTANT( stts )
88 DEFINE_BOX_DEFAULT_CONSTANT( ctts )
89 DEFINE_BOX_DEFAULT_CONSTANT( cslg )
90 DEFINE_BOX_DEFAULT_CONSTANT( stsz )
91 DEFINE_BOX_DEFAULT_CONSTANT( stz2 )
92 DEFINE_BOX_DEFAULT_CONSTANT( stss )
93 DEFINE_BOX_DEFAULT_CONSTANT( stps )
94 DEFINE_BOX_DEFAULT_CONSTANT( sdtp )
95 DEFINE_BOX_DEFAULT_CONSTANT( stsc )
96 DEFINE_BOX_DEFAULT_CONSTANT( stco )
97 DEFINE_BOX_DEFAULT_CONSTANT( sgpd )
98 DEFINE_BOX_DEFAULT_CONSTANT( sbgp )
99 DEFINE_BOX_DEFAULT_CONSTANT( stbl )
100 DEFINE_BOX_DEFAULT_CONSTANT( minf )
101 DEFINE_BOX_DEFAULT_CONSTANT( mdia )
102 DEFINE_BOX_DEFAULT_CONSTANT( mvhd )
103 DEFINE_BOX_DEFAULT_CONSTANT( iods )
104 DEFINE_BOX_DEFAULT_CONSTANT( mdat )
105 DEFINE_BOX_DEFAULT_CONSTANT( skip )
106 DEFINE_BOX_DEFAULT_CONSTANT( chpl )
107 DEFINE_BOX_DEFAULT_CONSTANT( keys )
108 DEFINE_BOX_DEFAULT_CONSTANT( mean )
109 DEFINE_BOX_DEFAULT_CONSTANT( name )
110 DEFINE_BOX_DEFAULT_CONSTANT( data )
111 DEFINE_BOX_DEFAULT_CONSTANT( metaitem )
112 DEFINE_BOX_DEFAULT_CONSTANT( ilst )
113 DEFINE_BOX_DEFAULT_CONSTANT( meta )
114 DEFINE_BOX_DEFAULT_CONSTANT( WLOC )
115 DEFINE_BOX_DEFAULT_CONSTANT( LOOP )
116 DEFINE_BOX_DEFAULT_CONSTANT( SelO )
117 DEFINE_BOX_DEFAULT_CONSTANT( AllF )
118 DEFINE_BOX_DEFAULT_CONSTANT( cprt )
119 DEFINE_BOX_DEFAULT_CONSTANT( udta )
120 DEFINE_BOX_DEFAULT_CONSTANT( mehd )
121 DEFINE_BOX_DEFAULT_CONSTANT( trex )
122 DEFINE_BOX_DEFAULT_CONSTANT( mvex )
123 DEFINE_BOX_DEFAULT_CONSTANT( mfhd )
124 DEFINE_BOX_DEFAULT_CONSTANT( tfhd )
125 DEFINE_BOX_DEFAULT_CONSTANT( tfdt )
126 DEFINE_BOX_DEFAULT_CONSTANT( trun )
127 DEFINE_BOX_DEFAULT_CONSTANT( traf )
128 DEFINE_BOX_DEFAULT_CONSTANT( moof )
129 DEFINE_BOX_DEFAULT_CONSTANT( tfra )
130 DEFINE_BOX_DEFAULT_CONSTANT( mfro )
131 DEFINE_BOX_DEFAULT_CONSTANT( mfra )
132 DEFINE_BOX_DEFAULT_CONSTANT( trak )
133 DEFINE_BOX_DEFAULT_CONSTANT( moov )
134 DEFINE_BOX_DEFAULT_CONSTANT( styp )
135 DEFINE_BOX_DEFAULT_CONSTANT( sidx )
136 DEFINE_BOX_DEFAULT_CONSTANT( file_abstract )
137 DEFINE_BOX_DEFAULT_CONSTANT( root_abstract )
139 void *allocate_box_by_default
141 const void *nonexist_ptr,
142 const size_t data_type_size