maug
Quick and dirty C mini-augmentation library.
Loading...
Searching...
No Matches
mmem.h
Go to the documentation of this file.
1
2#ifndef MMEM_H
3#define MMEM_H
4
10
11#if defined( MAUG_OS_PALM )
12
13/* TODO */
14# pragma message( "warning: not implemented!" )
15
16#elif defined( MAUG_OS_DOS_REAL )
17
18typedef void* MAUG_MHANDLE;
19
20/* TODO: These need refinement/tuning for DOS low-memory/segments! */
21# define maug_malloc( nmemb, sz ) (void*)malloc( (sz) * (nmemb) )
22
27# define maug_mrealloc( handle, nmemb, sz ) \
28 (void*)realloc( handle, (sz) * (nmemb) )
29
30# define maug_mzero( ptr, sz ) memset( ptr, '\0', sz )
31
32# define maug_mcpy( ptr_dest, ptr_src, sz ) memcpy( ptr_dest, ptr_src, sz )
33
34# define maug_mfree( handle ) free( handle ); handle = NULL;
35
36# define maug_mlock( handle, ptr ) ptr = handle; handle = NULL;
37
38# define maug_munlock( handle, ptr ) handle = ptr; ptr = NULL;
39
40# define maug_strncpy( dest, src, len ) strncpy( dest, src, len )
41
42# define maug_strlen( str ) strlen( str )
43
44# define maug_is_locked( handle, ptr ) \
45 (NULL == (handle) && NULL != (ptr))
46
47#else
48
49typedef void* MAUG_MHANDLE;
50
51# define maug_malloc( nmemb, sz ) (void*)malloc( (sz) * (nmemb) )
52
57# define maug_mrealloc( handle, nmemb, sz ) \
58 (void*)realloc( handle, (sz) * (nmemb) )
59
65# define maug_mzero( ptr, sz ) memset( ptr, '\0', sz )
66
67# define maug_mcpy( ptr_dest, ptr_src, sz ) memcpy( ptr_dest, ptr_src, sz )
68
69# define maug_mfree( handle ) free( handle ); handle = NULL;
70
71# define maug_mlock( handle, ptr ) ptr = handle; handle = NULL;
72
73# define maug_munlock( handle, ptr ) handle = ptr; ptr = NULL;
74
75# define maug_strncpy( dest, src, len ) strncpy( dest, src, len )
76
77# define maug_strlen( str ) strlen( str )
78
79# define maug_is_locked( handle, ptr ) \
80 (NULL == (handle) && NULL != (ptr))
81
82#endif
83
84#define maug_mrealloc_test( new_handle, handle, nmemb, sz ) \
85 maug_cleanup_if_lt_overflow( (sz) * (nmemb), sz ); \
86 new_handle = maug_mrealloc( handle, nmemb, sz ); \
87 maug_cleanup_if_null_alloc( MAUG_MHANDLE, new_handle ); \
88 handle = new_handle;
89
90char* maug_strchr( const char* str, char c );
91
92char* maug_strrchr( const char* str, char c );
93 /* maug_mem */
95
96#ifdef MMEM_C
97
98char* maug_strchr( const char* str, char c ) {
99 size_t str_sz = 0,
100 i = 0;
101
102 str_sz = maug_strlen( str );
103
104 for( i = 0 ; str_sz > i ; i++ ) {
105 if( str[i] == c ) {
106 return (char*)&(str[i]);
107 }
108 }
109
110 return NULL;
111}
112
113char* maug_strrchr( const char* str, char c ) {
114 ssize_t str_sz = 0,
115 i = 0;
116
117 str_sz = maug_strlen( str );
118
119 for( i = str_sz ; 0 <= i ; i-- ) {
120 if( str[i] == c ) {
121 return (char*)&(str[i]);
122 }
123 }
124
125 return NULL;
126}
127
128#endif /* MMEM_C */
129
130#endif /* !MMEM_H */
131