epoc32/include/stdapis/sys/_types.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
child 4 837f303aceeb
equal deleted inserted replaced
1:666f914201fb 2:2fe1408b6811
     1 _types.h
     1 /*-
       
     2  * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
       
     3  * All rights reserved.
       
     4  *
       
     5  * Redistribution and use in source and binary forms, with or without
       
     6  * modification, are permitted provided that the following conditions
       
     7  * are met:
       
     8  * 1. Redistributions of source code must retain the above copyright
       
     9  *    notice, this list of conditions and the following disclaimer.
       
    10  * 2. Redistributions in binary form must reproduce the above copyright
       
    11  *    notice, this list of conditions and the following disclaimer in the
       
    12  *    documentation and/or other materials provided with the distribution.
       
    13  *
       
    14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
       
    15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       
    16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
       
    17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
       
    18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
       
    19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
       
    20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
       
    21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
       
    22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
       
    23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
       
    24  * SUCH DAMAGE.
       
    25  *
       
    26  * $FreeBSD: src/sys/sys/_types.h,v 1.21 2005/03/22 01:19:17 das Exp $
       
    27  */
       
    28 
       
    29 #ifndef _SYS__TYPES_H_
       
    30 #define _SYS__TYPES_H_
       
    31 
       
    32 #include <sys/cdefs.h>
       
    33 #include <machine/_types.h>
       
    34 
       
    35 /*
       
    36  * Standard type definitions.
       
    37  */
       
    38 typedef	__uint32_t	__blksize_t;	/* file block size */
       
    39 typedef	__int64_t	__blkcnt_t;	/* file block count */
       
    40 typedef	__int32_t	__clockid_t;	/* clock_gettime()... */
       
    41 typedef	__uint32_t	__fflags_t;	/* file flags */
       
    42 typedef	__uint64_t	__fsblkcnt_t;
       
    43 typedef	__uint64_t	__fsfilcnt_t;
       
    44 typedef	__uint32_t	__gid_t;
       
    45 typedef	__int64_t	__id_t;		/* can hold a gid_t, pid_t, or uid_t */
       
    46 typedef	__uint32_t	__ino_t;	/* inode number */
       
    47 typedef	long		__key_t;	/* IPC key (for Sys V IPC) */
       
    48 typedef	__int32_t	__lwpid_t;	/* Thread ID (a.k.a. LWP) */
       
    49 typedef	__uint16_t	__mode_t;	/* permissions */
       
    50 typedef	int		__nl_item;
       
    51 typedef	__uint16_t	__nlink_t;	/* link count */
       
    52 typedef	__int64_t	__off_t;	/* file offset */
       
    53 typedef	__int32_t	__pid_t;	/* process [group] */
       
    54 typedef	__int64_t	__rlim_t;	/* resource limit - intentionally */
       
    55 					/* signed, because of legacy code */
       
    56 					/* that uses -1 for RLIM_INFINITY */
       
    57 typedef	__uint8_t	__sa_family_t;
       
    58 typedef	__uint32_t	__socklen_t;
       
    59 typedef	long		__suseconds_t;	/* microseconds (signed) */
       
    60 typedef	__int32_t	__timer_t;	/* timer_gettime()... */
       
    61 typedef	__uint32_t	__uid_t;
       
    62 typedef	unsigned int	__useconds_t;	/* microseconds (unsigned) */
       
    63 
       
    64 /*
       
    65  * Unusual type definitions.
       
    66  */
       
    67 /*
       
    68  * rune_t is declared to be an ``int'' instead of the more natural
       
    69  * ``unsigned long'' or ``long''.  Two things are happening here.  It is not
       
    70  * unsigned so that EOF (-1) can be naturally assigned to it and used.  Also,
       
    71  * it looks like 10646 will be a 31 bit standard.  This means that if your
       
    72  * ints cannot hold 32 bits, you will be in trouble.  The reason an int was
       
    73  * chosen over a long is that the is*() and to*() routines take ints (says
       
    74  * ANSI C), but they use __ct_rune_t instead of int.
       
    75  *
       
    76  * NOTE: rune_t is not covered by ANSI nor other standards, and should not
       
    77  * be instantiated outside of lib/libc/locale.  Use wchar_t.  wchar_t and
       
    78  * rune_t must be the same type.  Also, wint_t must be no narrower than
       
    79  * wchar_t, and should be able to hold all members of the largest
       
    80  * character set plus one extra value (WEOF), and must be at least 16 bits.
       
    81  */
       
    82 typedef	int		__ct_rune_t;	/* arg type for ctype funcs */
       
    83 typedef	__ct_rune_t	__rune_t;	/* rune_t (see above) */
       
    84 #ifndef __SYMBIAN32__
       
    85 typedef	__ct_rune_t	__wchar_t;	/* wchar_t (see above) */
       
    86 #else //__SYMBIAN32__
       
    87 typedef	unsigned short int	__wchar_t;	/* wchar_t (see above) */
       
    88 #endif //__SYMBIAN32__
       
    89 typedef	__ct_rune_t	__wint_t;	/* wint_t (see above) */
       
    90 
       
    91 typedef	__uint32_t	__dev_t;	/* device number */
       
    92 
       
    93 typedef	__uint32_t	__fixpt_t;	/* fixed point number */
       
    94 
       
    95 /*
       
    96  * mbstate_t is an opaque object to keep conversion state during multibyte
       
    97  * stream conversions.
       
    98  */
       
    99 #ifndef __SYMBIAN32__ 
       
   100 typedef union {
       
   101 	char		__mbstate8[128];
       
   102 	__int64_t	_mbstateL;	/* for alignment */
       
   103 } __mbstate_t;
       
   104 #else //__SYMBIAN32__
       
   105 
       
   106 #define MAX_STATE_CHAR_LEN 4
       
   107 
       
   108 typedef struct _mb_state_t
       
   109 {
       
   110   int __count; //int  iState;
       
   111   
       
   112   union
       
   113   {
       
   114     int __wch;
       
   115     char __wchb[MAX_STATE_CHAR_LEN];
       
   116     short lead;
       
   117   } __value;		/* Value so far.  */
       
   118 } __mbstate_t;
       
   119 #endif //__SYMBIAN32__
       
   120 #endif /* !_SYS__TYPES_H_ */