/*
- libc-extension.cc -- compensate for lacking libc functions.
+ This file is part of LilyPond, the GNU music typesetter.
- source file of the flowerlib
-
- (c) 1997--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Copyright (C) 1997--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
+
+ LilyPond is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ LilyPond is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
*/
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cctype>
+#include <cassert>
+
+using namespace std;
#include "libc-extension.hh"
char *p = start + n;
while (--p >= start)
{
- *p = tolower (*p); /* a macro on some compilers */
+ *p = (char)tolower (*p); /* a macro on some compilers */
}
return start;
}
char *p = start + n;
while (--p >= start)
{
- *p = toupper (*p); /* a macro on some compilers */
+ *p = (char)toupper (*p); /* a macro on some compilers */
}
return start;
}
-/*
- There are some strange problems with round() on early glibcs.
-*/
-double
-my_round (double x)
-{
- return floor (x -0.5)+ 1.0;
-}
-
-#ifndef isinf
-#if !HAVE_ISINF
-int
-isinf (double x)
-{
- return x && (x == x/ 2);
-}
-#endif
-#endif
-
#if !HAVE_MEMMEM
/** locate a substring. #memmem# finds the first occurrence of
unsigned char *
_memmem (unsigned char const *haystack, int haystack_len,
- unsigned char const *needle, int needle_len)
+ unsigned char const *needle, int needle_len)
{
unsigned char const *end_haystack = haystack + haystack_len - needle_len + 1;
unsigned char const *end_needle = needle + needle_len;
unsigned char const *subneedle = needle;
unsigned char const *subhaystack = haystack;
while (subneedle < end_needle)
- if (*subneedle++ != *subhaystack++)
- goto next;
+ if (*subneedle++ != *subhaystack++)
+ goto next;
/* Completed the needle. Gotcha. */
return (unsigned char *) haystack;
- next:
+next:
haystack++;
}
return 0;
void *
memmem (void const *haystack, int haystack_len,
- void const *needle, int needle_len)
+ void const *needle, int needle_len)
{
unsigned char const *haystack_byte_c = (unsigned char const *)haystack;
unsigned char const *needle_byte_c = (unsigned char const *)needle;
while (q > p)
{
if (*--q == c)
- return (unsigned char *)q;
+ return (unsigned char *)q;
}
return 0;
}
return byte;
}
+/*
+ There are some strange problems with round() on early glibcs.
+*/
+double
+my_round (double x)
+{
+ return floor (x - 0.5) + 1.0;
+}
+
+/* namespace std { */
+
+#ifndef isinf
+#if !HAVE_ISINF
+int
+isinf (double x)
+{
+ return x && (x == x / 2);
+}
+#endif
+#endif
+
#if ! HAVE_SNPRINTF
int
snprintf (char *str, size_t n, char const *format, ...)
}
#endif
+/* } namespace std */