00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef MAGICKCORE_STRING_PRIVATE_H
00019 #define MAGICKCORE_STRING_PRIVATE_H
00020
00021 #include "MagickCore/locale_.h"
00022
00023 #if defined(__cplusplus) || defined(c_plusplus)
00024 extern "C" {
00025 #endif
00026
00027 static inline double SiPrefixToDoubleInterval(const char *string,
00028 const double interval)
00029 {
00030 char
00031 *q;
00032
00033 double
00034 value;
00035
00036 value=InterpretSiPrefixValue(string,&q);
00037 if (*q == '%')
00038 value*=interval/100.0;
00039 return(value);
00040 }
00041
00042 static inline double StringToDouble(const char *magick_restrict string,
00043 char **magick_restrict sentinal)
00044 {
00045 return(InterpretLocaleValue(string,sentinal));
00046 }
00047
00048 static inline double StringToDoubleInterval(const char *string,
00049 const double interval)
00050 {
00051 char
00052 *q;
00053
00054 double
00055 value;
00056
00057 value=InterpretLocaleValue(string,&q);
00058 if (*q == '%')
00059 value*=interval/100.0;
00060 return(value);
00061 }
00062
00063 static inline int StringToInteger(const char *magick_restrict value)
00064 {
00065 return((int) strtol(value,(char **) NULL,10));
00066 }
00067
00068 static inline long StringToLong(const char *magick_restrict value)
00069 {
00070 return(strtol(value,(char **) NULL,10));
00071 }
00072
00073 static inline MagickSizeType StringToMagickSizeType(const char *string,
00074 const double interval)
00075 {
00076 double
00077 value;
00078
00079 value=SiPrefixToDoubleInterval(string,interval);
00080 if (value >= (double) MagickULLConstant(~0))
00081 return(MagickULLConstant(~0));
00082 return((MagickSizeType) value);
00083 }
00084
00085 static inline size_t StringToSizeType(const char *string,
00086 const double interval)
00087 {
00088 double
00089 value;
00090
00091 value=SiPrefixToDoubleInterval(string,interval);
00092 if (value >= (double) MagickULLConstant(~0))
00093 return((size_t) MagickULLConstant(~0));
00094 return((size_t) value);
00095 }
00096
00097 static inline unsigned long StringToUnsignedLong(
00098 const char *magick_restrict value)
00099 {
00100 return(strtoul(value,(char **) NULL,10));
00101 }
00102
00103 #if defined(__cplusplus) || defined(c_plusplus)
00104 }
00105 #endif
00106
00107 #endif