Rudiments
linkedlistutilinlines.h
1 // Copyright (c) 2003 David Muse
2 // See the COPYING file for more information
3 #ifndef RUDIMENTS_LINKEDLISTUTIL_H
4 #define RUDIMENTS_LINKEDLISTUTIL_H
5 
6 #include <rudiments/charstring.h>
7 #include <rudiments/stdio.h>
8 #include <rudiments/private/rudimentsinlines.h>
9 
10 // Ideally we'd use explicit specialization here but old enough
11 // compilers don't support it and this isn't any less efficient.
12 
13 RUDIMENTS_TEMPLATE_INLINE
14 int32_t _linkedlistutil_compare(char *value1, char *value2) {
15  return charstring::compare(value1,value2);
16 }
17 
18 RUDIMENTS_TEMPLATE_INLINE
19 int32_t _linkedlistutil_compare(const char *value1, const char *value2) {
20  return charstring::compare(value1,value2);
21 }
22 
23 template <class valuetype>
24 RUDIMENTS_TEMPLATE_INLINE
25 int32_t _linkedlistutil_compare(valuetype value1, valuetype value2) {
26  if (value1<value2) {
27  return -1;
28  } else if (value1==value2) {
29  return 0;
30  } else {
31  return 1;
32  }
33 }
34 
35 RUDIMENTS_TEMPLATE_INLINE
36 void _linkedlistutil_print(const char *value) {
37  stdoutput.printf("%s",value);
38 }
39 
40 RUDIMENTS_TEMPLATE_INLINE
41 void _linkedlistutil_print(char *value) {
42  stdoutput.printf("%s",value);
43 }
44 
45 RUDIMENTS_TEMPLATE_INLINE
46 void _linkedlistutil_print(char value) {
47  stdoutput.printf("%c",value);
48 }
49 
50 RUDIMENTS_TEMPLATE_INLINE
51 void _linkedlistutil_print(int32_t value) {
52  stdoutput.printf("%d",(int)value);
53 }
54 
55 RUDIMENTS_TEMPLATE_INLINE
56 void _linkedlistutil_print(int16_t value) {
57  stdoutput.printf("%hd",value);
58 }
59 
60 RUDIMENTS_TEMPLATE_INLINE
61 void _linkedlistutil_print(int64_t value) {
62  stdoutput.printf("%lld",(long long)value);
63 }
64 
65 RUDIMENTS_TEMPLATE_INLINE
66 void _linkedlistutil_print(float value) {
67  stdoutput.printf("%f",value);
68 }
69 
70 RUDIMENTS_TEMPLATE_INLINE
71 void _linkedlistutil_print(double value) {
72  stdoutput.printf("%f",value);
73 }
74 
75 template <class valuetype>
76 RUDIMENTS_TEMPLATE_INLINE
77 void _linkedlistutil_print(valuetype value) {
78  stdoutput.printf("%p",value);
79 }
80 
81 #endif