Rudiments
|
00001 // Copyright (c) 2003 David Muse 00002 // See the COPYING file for more information. 00003 00004 #ifndef EXCLUDE_RUDIMENTS_TEMPLATE_IMPLEMENTATIONS 00005 00006 #include <rudiments/charstring.h> 00007 00008 #include <stdio.h> 00009 00010 #include <rudiments/private/rudimentsinlines.h> 00011 00012 #ifdef RUDIMENTS_NAMESPACE 00013 namespace rudiments { 00014 #endif 00015 00016 template <class datatype> 00017 RUDIMENTS_TEMPLATE_INLINE 00018 int32_t linkedlistutil<datatype>::compare(datatype data1, 00019 datatype data2) const { 00020 if (data1<data2) { 00021 return -1; 00022 } else if (data1==data2) { 00023 return 0; 00024 } else { 00025 return 1; 00026 } 00027 } 00028 00029 RUDIMENTS_EXPLICIT_SPECIALIZATION 00030 RUDIMENTS_TEMPLATE_INLINE 00031 void linkedlistutil<char *>::print(char *data) const { 00032 printf("%s",data); 00033 } 00034 00035 RUDIMENTS_EXPLICIT_SPECIALIZATION 00036 RUDIMENTS_TEMPLATE_INLINE 00037 void linkedlistutil<const char *>::print(const char *data) const { 00038 printf("%s",data); 00039 } 00040 00041 RUDIMENTS_EXPLICIT_SPECIALIZATION 00042 RUDIMENTS_TEMPLATE_INLINE 00043 int32_t linkedlistutil<char *>::compare(char *data1, char *data2) const { 00044 return charstring::compare(data1,data2); 00045 } 00046 00047 RUDIMENTS_EXPLICIT_SPECIALIZATION 00048 RUDIMENTS_TEMPLATE_INLINE 00049 int32_t linkedlistutil<const char *>::compare(const char *data1, 00050 const char *data2) const { 00051 return charstring::compare(data1,data2); 00052 } 00053 00054 RUDIMENTS_EXPLICIT_SPECIALIZATION 00055 RUDIMENTS_TEMPLATE_INLINE 00056 void linkedlistutil<char>::print(char data) const { 00057 printf("%c",data); 00058 } 00059 00060 RUDIMENTS_EXPLICIT_SPECIALIZATION 00061 RUDIMENTS_TEMPLATE_INLINE 00062 void linkedlistutil<int32_t>::print(int32_t data) const { 00063 printf("%d",(int)data); 00064 } 00065 00066 RUDIMENTS_EXPLICIT_SPECIALIZATION 00067 RUDIMENTS_TEMPLATE_INLINE 00068 void linkedlistutil<int16_t>::print(int16_t data) const { 00069 printf("%hd",data); 00070 } 00071 00072 RUDIMENTS_EXPLICIT_SPECIALIZATION 00073 RUDIMENTS_TEMPLATE_INLINE 00074 void linkedlistutil<int64_t>::print(int64_t data) const { 00075 printf("%lld",(long long)data); 00076 } 00077 00078 RUDIMENTS_EXPLICIT_SPECIALIZATION 00079 RUDIMENTS_TEMPLATE_INLINE 00080 void linkedlistutil<float>::print(float data) const { 00081 printf("%f",data); 00082 } 00083 00084 RUDIMENTS_EXPLICIT_SPECIALIZATION 00085 RUDIMENTS_TEMPLATE_INLINE 00086 void linkedlistutil<double>::print(double data) const { 00087 printf("%f",data); 00088 } 00089 00090 template <class datatype> 00091 RUDIMENTS_TEMPLATE_INLINE 00092 void linkedlistutil<datatype>::print(datatype data) const { 00093 printf("%p",data); 00094 } 00095 00096 #ifdef RUDIMENTS_NAMESPACE 00097 } 00098 #endif 00099 00100 #endif