tee: Check for the removed pad flag also in the slow pushing path
[platform/upstream/gstreamer.git] / gst / printf / printf-args.h
1 /* Decomposed printf argument list.
2    Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
3
4    This program is free software; you can redistribute it and/or modify it
5    under the terms of the GNU Library General Public License as published
6    by the Free Software Foundation; either version 2, or (at your option)
7    any later version.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Library General Public License for more details.
13
14    You should have received a copy of the GNU Library General Public
15    License along with this program; if not, write to the Free Software
16    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17    USA.  */
18
19 #ifndef _PRINTF_ARGS_H
20 #define _PRINTF_ARGS_H
21
22 /* Get wchar_t.  */
23 #ifdef HAVE_WCHAR_T
24 # include <stddef.h>
25 #endif
26
27 /* Get wint_t.  */
28 #ifdef HAVE_WINT_T
29 # include <wchar.h>
30 #endif
31
32 /* Get va_list.  */
33 #include <stdarg.h>
34
35 #define POINTER_EXT_SIGNIFIER_CHAR '\a'
36
37 /* Argument types */
38 typedef enum
39 {
40   TYPE_NONE,
41   TYPE_SCHAR,
42   TYPE_UCHAR,
43   TYPE_SHORT,
44   TYPE_USHORT,
45   TYPE_INT,
46   TYPE_UINT,
47   TYPE_LONGINT,
48   TYPE_ULONGINT,
49 #ifdef HAVE_LONG_LONG
50   TYPE_LONGLONGINT,
51   TYPE_ULONGLONGINT,
52 #endif
53 #ifdef HAVE_INT64_AND_I64
54   TYPE_INT64,
55   TYPE_UINT64,
56 #endif
57   TYPE_DOUBLE,
58 #ifdef HAVE_LONG_DOUBLE
59   TYPE_LONGDOUBLE,
60 #endif
61   TYPE_CHAR,
62 #ifdef HAVE_WINT_T
63   TYPE_WIDE_CHAR,
64 #endif
65   TYPE_STRING,
66 #ifdef HAVE_WCHAR_T
67   TYPE_WIDE_STRING,
68 #endif
69   TYPE_POINTER,
70   TYPE_POINTER_EXT,
71   TYPE_COUNT_SCHAR_POINTER,
72   TYPE_COUNT_SHORT_POINTER,
73   TYPE_COUNT_INT_POINTER,
74   TYPE_COUNT_LONGINT_POINTER
75 #ifdef HAVE_LONG_LONG
76 , TYPE_COUNT_LONGLONGINT_POINTER
77 #endif
78 } arg_type;
79
80 /* Polymorphic argument */
81 typedef struct
82 {
83   arg_type type;
84   union
85   {
86     signed char                 a_schar;
87     unsigned char               a_uchar;
88     short                       a_short;
89     unsigned short              a_ushort;
90     int                         a_int;
91     unsigned int                a_uint;
92     long int                    a_longint;
93     unsigned long int           a_ulongint;
94 #ifdef HAVE_LONG_LONG
95     long long int               a_longlongint;
96     unsigned long long int      a_ulonglongint;
97 #endif
98 #ifdef HAVE_INT64_AND_I64
99     __int64                     a_int64;
100     unsigned __int64            a_uint64;
101 #endif
102     float                       a_float;
103     double                      a_double;
104 #ifdef HAVE_LONG_DOUBLE
105     long double                 a_longdouble;
106 #endif
107     int                         a_char;
108 #ifdef HAVE_WINT_T
109     wint_t                      a_wide_char;
110 #endif
111     const char*                 a_string;
112 #ifdef HAVE_WCHAR_T
113     const wchar_t*              a_wide_string;
114 #endif
115     void*                       a_pointer;
116     signed char *               a_count_schar_pointer;
117     short *                     a_count_short_pointer;
118     int *                       a_count_int_pointer;
119     long int *                  a_count_longint_pointer;
120 #ifdef HAVE_LONG_LONG
121     long long int *             a_count_longlongint_pointer;
122 #endif
123   }
124   a;
125
126   /* string to replace pointer argument with for TYPE_POINTER_EXT */
127   char *ext_string;
128 }
129 argument;
130
131 typedef struct
132 {
133   unsigned int count;
134   argument *arg;
135 }
136 arguments;
137
138
139 /* Fetch the arguments, putting them into a. */
140 #ifdef STATIC
141 STATIC
142 #else
143 extern
144 #endif
145 int printf_fetchargs (va_list args, arguments *a);
146
147 #endif /* _PRINTF_ARGS_H */