EmbeddedUnit
embUnit
stdImpl.c
Go to the documentation of this file.
1
34
#include "
stdImpl.h
"
35
36
char
* stdimpl_strcpy(
char
*dst,
const
char
*src)
37
{
38
char
*start = dst;
39
char
c;
40
do
{
41
c = *src;
42
*dst = c;
43
src++;
44
dst++;
45
}
while
(c);
46
return
start;
47
}
48
49
char
* stdimpl_strcat(
char
*dst,
const
char
*src)
50
{
51
char
*start = dst;
52
char
c;
53
do
{
54
c = *dst;
55
dst++;
56
}
while
(c);
57
dst--;
58
do
{
59
c = *src;
60
*dst = c;
61
src++;
62
dst++;
63
}
while
(c);
64
return
start;
65
}
66
67
char
* stdimpl_strncat(
char
*dst,
const
char
*src,
unsigned
int
count)
68
{
69
char
*start = dst;
70
char
c;
71
do
{
72
c = *dst;
73
dst++;
74
}
while
(c);
75
dst--;
76
if
(count) {
77
do
{
78
c = *src;
79
*dst = c;
80
src++;
81
dst++;
82
count--;
83
}
while
(c && count);
84
*dst =
'\0'
;
85
}
86
return
start;
87
}
88
89
int
stdimpl_strlen(
const
char
*str)
90
{
91
const
char
*estr = str;
92
char
c;
93
do
{
94
c = *estr;
95
estr++;
96
}
while
(c);
97
return
((
int
)(estr - str - 1));
98
}
99
100
int
stdimpl_strcmp(
const
char
*s1,
const
char
*s2)
101
{
102
char
c1,c2;
103
do
{
104
c1 = *s1++;
105
c2 = *s2++;
106
}
while
((c1) && (c2) && (c1==c2));
107
return
c1 - c2;
108
}
109
110
int
stdimpl_memcmp(
const
void
*p1,
const
void
*p2,
int
s)
111
{
112
char
*s1 = (
char
*)p1;
113
char
*s2 = (
char
*)p2;
114
char
c1,c2;
115
do
{
116
c1 = *s1++;
117
c2 = *s2++;
118
s--;
119
}
while
((c1==c2) && s);
120
return
c1 - c2;
121
}
122
123
static
char
* _xtoa(
unsigned
long
v,
char
*
string
,
int
r,
int
is_neg)
124
{
125
char
*start = string;
126
char
buf[33],*p;
127
128
p = buf;
129
130
do
{
131
*p++ =
"0123456789abcdef"
[(v % r) & 0xf];
132
}
while
(v /= r);
133
134
if
(is_neg) {
135
*p++ =
'-'
;
136
}
137
138
do
{
139
*
string
++ = *--p;
140
}
while
(buf != p);
141
142
*
string
=
'\0'
;
143
144
return
start;
145
}
146
147
char
* stdimpl_itoa(
long
v,
char
*
string
,
int
r)
148
{
149
if
((r == 10) && (v < 0)) {
150
return
_xtoa((
unsigned
long
)(-v),
string
, r, 1);
151
}
152
return
_xtoa((
unsigned
long
)(v),
string
, r, 0);
153
}
154
155
char
* stdimpl_utoa(
unsigned
long
v,
char
*
string
,
int
r)
156
{
157
return
_xtoa((
unsigned
long
)(v),
string
, r, 0);
158
}
159
stdImpl.h
Generated by
1.8.13