Blame gst/printf/printf-args.c

Packit a6ee4b
/* Decomposed printf argument list.
Packit a6ee4b
   Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
Packit a6ee4b
Packit a6ee4b
   This program is free software; you can redistribute it and/or modify it
Packit a6ee4b
   under the terms of the GNU Library General Public License as published
Packit a6ee4b
   by the Free Software Foundation; either version 2, or (at your option)
Packit a6ee4b
   any later version.
Packit a6ee4b
Packit a6ee4b
   This program is distributed in the hope that it will be useful,
Packit a6ee4b
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit a6ee4b
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit a6ee4b
   Library General Public License for more details.
Packit a6ee4b
Packit a6ee4b
   You should have received a copy of the GNU Library General Public
Packit a6ee4b
   License along with this program; if not, write to the Free Software
Packit a6ee4b
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
Packit a6ee4b
   USA.  */
Packit a6ee4b
Packit a6ee4b
#ifdef HAVE_CONFIG_H
Packit a6ee4b
# include <config.h>
Packit a6ee4b
#endif
Packit a6ee4b
Packit a6ee4b
#include "gst-printf.h"
Packit a6ee4b
Packit a6ee4b
/* Specification.  */
Packit a6ee4b
#include "printf-args.h"
Packit a6ee4b
Packit a6ee4b
#ifdef STATIC
Packit a6ee4b
STATIC
Packit a6ee4b
#endif
Packit a6ee4b
    int
Packit a6ee4b
printf_fetchargs (va_list args, arguments * a)
Packit a6ee4b
{
Packit a6ee4b
  unsigned int i;
Packit a6ee4b
  argument *ap;
Packit a6ee4b
Packit a6ee4b
  for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
Packit a6ee4b
    switch (ap->type) {
Packit a6ee4b
      case TYPE_SCHAR:
Packit a6ee4b
        ap->a.a_schar = va_arg (args, /*signed char */ int);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_UCHAR:
Packit a6ee4b
        ap->a.a_uchar = va_arg (args, /*unsigned char */ int);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_SHORT:
Packit a6ee4b
        ap->a.a_short = va_arg (args, /*short */ int);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_USHORT:
Packit a6ee4b
        ap->a.a_ushort = va_arg (args, /*unsigned short */ int);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_INT:
Packit a6ee4b
        ap->a.a_int = va_arg (args, int);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_UINT:
Packit a6ee4b
        ap->a.a_uint = va_arg (args, unsigned int);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_LONGINT:
Packit a6ee4b
        ap->a.a_longint = va_arg (args, long int);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_ULONGINT:
Packit a6ee4b
        ap->a.a_ulongint = va_arg (args, unsigned long int);
Packit a6ee4b
        break;
Packit a6ee4b
#ifdef HAVE_LONG_LONG
Packit a6ee4b
      case TYPE_LONGLONGINT:
Packit a6ee4b
        ap->a.a_longlongint = va_arg (args, long long int);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_ULONGLONGINT:
Packit a6ee4b
        ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
Packit a6ee4b
        break;
Packit a6ee4b
#endif
Packit a6ee4b
#ifdef HAVE_INT64_AND_I64
Packit a6ee4b
      case TYPE_INT64:
Packit a6ee4b
        ap->a.a_int64 = va_arg (args, __int64);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_UINT64:
Packit a6ee4b
        ap->a.a_uint64 = va_arg (args, unsigned __int64);
Packit a6ee4b
        break;
Packit a6ee4b
#endif
Packit a6ee4b
      case TYPE_DOUBLE:
Packit a6ee4b
        ap->a.a_double = va_arg (args, double);
Packit a6ee4b
        break;
Packit a6ee4b
#ifdef HAVE_LONG_DOUBLE
Packit a6ee4b
      case TYPE_LONGDOUBLE:
Packit a6ee4b
        ap->a.a_longdouble = va_arg (args, long double);
Packit a6ee4b
        break;
Packit a6ee4b
#endif
Packit a6ee4b
      case TYPE_CHAR:
Packit a6ee4b
        ap->a.a_char = va_arg (args, int);
Packit a6ee4b
        break;
Packit a6ee4b
#ifdef HAVE_WINT_T
Packit a6ee4b
      case TYPE_WIDE_CHAR:
Packit a6ee4b
#ifdef _WIN32
Packit a6ee4b
        ap->a.a_wide_char = va_arg (args, int);
Packit a6ee4b
#else
Packit a6ee4b
        ap->a.a_wide_char = va_arg (args, wint_t);
Packit a6ee4b
#endif
Packit a6ee4b
        break;
Packit a6ee4b
#endif
Packit a6ee4b
      case TYPE_STRING:
Packit a6ee4b
        ap->a.a_string = va_arg (args, const char *);
Packit a6ee4b
        break;
Packit a6ee4b
#ifdef HAVE_WCHAR_T
Packit a6ee4b
      case TYPE_WIDE_STRING:
Packit a6ee4b
        ap->a.a_wide_string = va_arg (args, const wchar_t *);
Packit a6ee4b
        break;
Packit a6ee4b
#endif
Packit a6ee4b
      case TYPE_POINTER:
Packit a6ee4b
      case TYPE_POINTER_EXT:
Packit a6ee4b
        ap->a.a_pointer = va_arg (args, void *);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_COUNT_SCHAR_POINTER:
Packit a6ee4b
        ap->a.a_count_schar_pointer = va_arg (args, signed char *);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_COUNT_SHORT_POINTER:
Packit a6ee4b
        ap->a.a_count_short_pointer = va_arg (args, short *);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_COUNT_INT_POINTER:
Packit a6ee4b
        ap->a.a_count_int_pointer = va_arg (args, int *);
Packit a6ee4b
        break;
Packit a6ee4b
      case TYPE_COUNT_LONGINT_POINTER:
Packit a6ee4b
        ap->a.a_count_longint_pointer = va_arg (args, long int *);
Packit a6ee4b
        break;
Packit a6ee4b
#ifdef HAVE_LONG_LONG
Packit a6ee4b
      case TYPE_COUNT_LONGLONGINT_POINTER:
Packit a6ee4b
        ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
Packit a6ee4b
        break;
Packit a6ee4b
#endif
Packit a6ee4b
      default:
Packit a6ee4b
        /* Unknown type.  */
Packit a6ee4b
        return -1;
Packit a6ee4b
    }
Packit a6ee4b
  return 0;
Packit a6ee4b
}