Docs update, remove malloc from limitations list
[apps/agl-service-can-low-level.git] / extra / pb_syshdr.h
1 /* This is an example of a header file for platforms/compilers that do
2  * not come with stdint.h/stddef.h/stdbool.h/string.h. To use it, define
3  * PB_SYSTEM_HEADER as "pb_syshdr.h", including the quotes, and add the
4  * extra folder to your include path.
5  *
6  * It is very likely that you will need to customize this file to suit
7  * your platform. For any compiler that supports C99, this file should
8  * not be necessary.
9  */
10
11 #ifndef _PB_SYSHDR_H_
12 #define _PB_SYSHDR_H_
13
14 /* stdint.h subset */
15 #ifdef HAVE_STDINT_H
16 #include <stdint.h>
17 #else
18 /* You will need to modify these to match the word size of your platform. */
19 typedef signed char int8_t;
20 typedef unsigned char uint8_t;
21 typedef signed short int16_t;
22 typedef unsigned short uint16_t;
23 typedef signed int int32_t;
24 typedef unsigned int uint32_t;
25 typedef signed long long int64_t;
26 typedef unsigned long long uint64_t;
27 #endif
28
29 /* stddef.h subset */
30 #ifdef HAVE_STDDEF_H
31 #include <stddef.h>
32 #else
33
34 typedef uint32_t size_t;
35 #define offsetof(st, m) ((size_t)(&((st *)0)->m))
36
37 #ifndef NULL
38 #define NULL 0
39 #endif
40
41 #endif
42
43 /* stdbool.h subset */
44 #ifdef HAVE_STDBOOL_H
45 #include <stdbool.h>
46 #else
47
48 #ifndef __cplusplus
49 typedef int bool;
50 #define false 0
51 #define true 1
52 #endif
53
54 #endif
55
56 /* stdlib.h subset */
57 #ifdef PB_ENABLE_MALLOC
58 #ifdef HAVE_STDLIB_H
59 #include <stdlib.h>
60 #else
61 void *realloc(void *ptr, size_t size);
62 void free(void *ptr);
63 #endif
64 #endif
65
66 /* string.h subset */
67 #ifdef HAVE_STRING_H
68 #include <string.h>
69 #else
70
71 /* Implementations are from the Public Domain C Library (PDCLib). */
72 static size_t strlen( const char * s )
73 {
74     size_t rc = 0;
75     while ( s[rc] )
76     {
77         ++rc;
78     }
79     return rc;
80 }
81
82 static void * memcpy( void *s1, const void *s2, size_t n )
83 {
84     char * dest = (char *) s1;
85     const char * src = (const char *) s2;
86     while ( n-- )
87     {
88         *dest++ = *src++;
89     }
90     return s1;
91 }
92
93 static void * memset( void * s, int c, size_t n )
94 {
95     unsigned char * p = (unsigned char *) s;
96     while ( n-- )
97     {
98         *p++ = (unsigned char) c;
99     }
100     return s;
101 }
102 #endif
103
104 #endif