1834 static inline STRING LEFT__STRING__STRING__##TYPENAME(EN_ENO_PARAMS, STRING IN, TYPENAME L){\ |
1834 static inline STRING LEFT__STRING__STRING__##TYPENAME(EN_ENO_PARAMS, STRING IN, TYPENAME L){\ |
1835 STRING res;\ |
1835 STRING res;\ |
1836 TEST_EN_COND(STRING, L < 0)\ |
1836 TEST_EN_COND(STRING, L < 0)\ |
1837 res = __INIT_STRING;\ |
1837 res = __INIT_STRING;\ |
1838 L = L < (TYPENAME)IN.len ? L : (TYPENAME)IN.len;\ |
1838 L = L < (TYPENAME)IN.len ? L : (TYPENAME)IN.len;\ |
1839 memcpy(&res.body, &IN.body, L);\ |
1839 memcpy(&res.body, &IN.body, (size_t)L);\ |
1840 res.len = L;\ |
1840 res.len = (__strlen_t)L;\ |
1841 return res;\ |
1841 return res;\ |
1842 } |
1842 } |
1843 __ANY_INT(__left) |
1843 __ANY_INT(__left) |
1844 |
1844 |
1845 |
1845 |
1851 static inline STRING RIGHT__STRING__STRING__##TYPENAME(EN_ENO_PARAMS, STRING IN, TYPENAME L){\ |
1851 static inline STRING RIGHT__STRING__STRING__##TYPENAME(EN_ENO_PARAMS, STRING IN, TYPENAME L){\ |
1852 STRING res;\ |
1852 STRING res;\ |
1853 TEST_EN_COND(STRING, L < 0)\ |
1853 TEST_EN_COND(STRING, L < 0)\ |
1854 res = __INIT_STRING;\ |
1854 res = __INIT_STRING;\ |
1855 L = L < (TYPENAME)IN.len ? L : (TYPENAME)IN.len;\ |
1855 L = L < (TYPENAME)IN.len ? L : (TYPENAME)IN.len;\ |
1856 memcpy(&res.body, &IN.body[(TYPENAME)IN.len - L], L);\ |
1856 memcpy(&res.body, &IN.body[(TYPENAME)IN.len - L], (size_t)L);\ |
1857 res.len = L;\ |
1857 res.len = (__strlen_t)L;\ |
1858 return res;\ |
1858 return res;\ |
1859 } |
1859 } |
1860 __ANY_INT(__right) |
1860 __ANY_INT(__right) |
1861 |
1861 |
1862 |
1862 |
1870 TEST_EN_COND(STRING, L < 0 || P < 0)\ |
1870 TEST_EN_COND(STRING, L < 0 || P < 0)\ |
1871 res = __INIT_STRING;\ |
1871 res = __INIT_STRING;\ |
1872 if(P <= (TYPENAME)IN.len){\ |
1872 if(P <= (TYPENAME)IN.len){\ |
1873 P -= 1; /* now can be used as [index]*/\ |
1873 P -= 1; /* now can be used as [index]*/\ |
1874 L = L + P <= (TYPENAME)IN.len ? L : (TYPENAME)IN.len - P;\ |
1874 L = L + P <= (TYPENAME)IN.len ? L : (TYPENAME)IN.len - P;\ |
1875 memcpy(&res.body, &IN.body[P] , L);\ |
1875 memcpy(&res.body, &IN.body[P] , (size_t)L);\ |
1876 res.len = L;\ |
1876 res.len = (__strlen_t)L;\ |
1877 }\ |
1877 }\ |
1878 return res;\ |
1878 return res;\ |
1879 } |
1879 } |
1880 __ANY_INT(__mid) |
1880 __ANY_INT(__mid) |
1881 |
1881 |
1935 } |
1935 } |
1936 |
1936 |
1937 #define __iec_(TYPENAME) \ |
1937 #define __iec_(TYPENAME) \ |
1938 static inline STRING INSERT__STRING__STRING__STRING__##TYPENAME(EN_ENO_PARAMS, STRING str1, STRING str2, TYPENAME P){\ |
1938 static inline STRING INSERT__STRING__STRING__STRING__##TYPENAME(EN_ENO_PARAMS, STRING str1, STRING str2, TYPENAME P){\ |
1939 TEST_EN_COND(STRING, P < 0)\ |
1939 TEST_EN_COND(STRING, P < 0)\ |
1940 return (STRING)__insert(str1,str2,P);\ |
1940 return (STRING)__insert(str1,str2,(__strlen_t)P);\ |
1941 } |
1941 } |
1942 __ANY_INT(__iec_) |
1942 __ANY_INT(__iec_) |
1943 #undef __iec_ |
1943 #undef __iec_ |
1944 |
1944 |
1945 |
1945 |
1966 } |
1966 } |
1967 |
1967 |
1968 #define __iec_(TYPENAME) \ |
1968 #define __iec_(TYPENAME) \ |
1969 static inline STRING DELETE__STRING__STRING__##TYPENAME##__##TYPENAME(EN_ENO_PARAMS, STRING str, TYPENAME L, TYPENAME P){\ |
1969 static inline STRING DELETE__STRING__STRING__##TYPENAME##__##TYPENAME(EN_ENO_PARAMS, STRING str, TYPENAME L, TYPENAME P){\ |
1970 TEST_EN_COND(STRING, L < 0 || P < 0)\ |
1970 TEST_EN_COND(STRING, L < 0 || P < 0)\ |
1971 return (STRING)__delete(str,L,P);\ |
1971 return (STRING)__delete(str,(__strlen_t)L,(__strlen_t)P);\ |
1972 } |
1972 } |
1973 __ANY_INT(__iec_) |
1973 __ANY_INT(__iec_) |
1974 #undef __iec_ |
1974 #undef __iec_ |
1975 |
1975 |
1976 |
1976 |
2007 } |
2007 } |
2008 |
2008 |
2009 #define __iec_(TYPENAME) \ |
2009 #define __iec_(TYPENAME) \ |
2010 static inline STRING REPLACE__STRING__STRING__STRING__##TYPENAME##__##TYPENAME(EN_ENO_PARAMS, STRING str1, STRING str2, TYPENAME L, TYPENAME P){\ |
2010 static inline STRING REPLACE__STRING__STRING__STRING__##TYPENAME##__##TYPENAME(EN_ENO_PARAMS, STRING str1, STRING str2, TYPENAME L, TYPENAME P){\ |
2011 TEST_EN_COND(STRING, L < 0 || P < 0)\ |
2011 TEST_EN_COND(STRING, L < 0 || P < 0)\ |
2012 return (STRING)__replace(str1,str2,L,P);\ |
2012 return (STRING)__replace(str1,str2,(__strlen_t)L,(__strlen_t)P);\ |
2013 } |
2013 } |
2014 __ANY_INT(__iec_) |
2014 __ANY_INT(__iec_) |
2015 #undef __iec_ |
2015 #undef __iec_ |
2016 |
2016 |
2017 /****************/ |
2017 /****************/ |
2103 |
2103 |
2104 /*** MULTIME ***/ |
2104 /*** MULTIME ***/ |
2105 #define __iec_(TYPENAME)\ |
2105 #define __iec_(TYPENAME)\ |
2106 static inline TIME MULTIME__TIME__TIME__##TYPENAME(EN_ENO_PARAMS, TIME IN1, TYPENAME IN2){\ |
2106 static inline TIME MULTIME__TIME__TIME__##TYPENAME(EN_ENO_PARAMS, TIME IN1, TYPENAME IN2){\ |
2107 TEST_EN(TIME)\ |
2107 TEST_EN(TIME)\ |
2108 return __time_mul(IN1, IN2);\ |
2108 return __time_mul(IN1, (LREAL)IN2);\ |
2109 } |
2109 } |
2110 __ANY_NUM(__iec_) |
2110 __ANY_NUM(__iec_) |
2111 #undef __iec_ |
2111 #undef __iec_ |
2112 |
2112 |
2113 /*** MUL ***/ |
2113 /*** MUL ***/ |
2114 #define __iec_(TYPENAME)\ |
2114 #define __iec_(TYPENAME)\ |
2115 static inline TIME MUL__TIME__TIME__##TYPENAME(EN_ENO_PARAMS, TIME IN1, TYPENAME IN2){\ |
2115 static inline TIME MUL__TIME__TIME__##TYPENAME(EN_ENO_PARAMS, TIME IN1, TYPENAME IN2){\ |
2116 TEST_EN(TIME)\ |
2116 TEST_EN(TIME)\ |
2117 return __time_mul(IN1, IN2);\ |
2117 return __time_mul(IN1, (LREAL)IN2);\ |
2118 } |
2118 } |
2119 __ANY_NUM(__iec_) |
2119 __ANY_NUM(__iec_) |
2120 #undef __iec_ |
2120 #undef __iec_ |
2121 |
2121 |
2122 /*** DIVTIME ***/ |
2122 /*** DIVTIME ***/ |
2123 #define __iec_(TYPENAME)\ |
2123 #define __iec_(TYPENAME)\ |
2124 static inline TIME DIVTIME__TIME__TIME__##TYPENAME(EN_ENO_PARAMS, TIME IN1, TYPENAME IN2){\ |
2124 static inline TIME DIVTIME__TIME__TIME__##TYPENAME(EN_ENO_PARAMS, TIME IN1, TYPENAME IN2){\ |
2125 TEST_EN(TIME)\ |
2125 TEST_EN(TIME)\ |
2126 return __time_div(IN1, IN2);\ |
2126 return __time_div(IN1, (LREAL)IN2);\ |
2127 } |
2127 } |
2128 __ANY_NUM(__iec_) |
2128 __ANY_NUM(__iec_) |
2129 #undef __iec_ |
2129 #undef __iec_ |
2130 |
2130 |
2131 /*** DIV ***/ |
2131 /*** DIV ***/ |
2132 #define __iec_(TYPENAME)\ |
2132 #define __iec_(TYPENAME)\ |
2133 static inline TIME DIV__TIME__TIME__##TYPENAME(EN_ENO_PARAMS, TIME IN1, TYPENAME IN2){\ |
2133 static inline TIME DIV__TIME__TIME__##TYPENAME(EN_ENO_PARAMS, TIME IN1, TYPENAME IN2){\ |
2134 TEST_EN(TIME)\ |
2134 TEST_EN(TIME)\ |
2135 return __time_div(IN1, IN2);\ |
2135 return __time_div(IN1, (LREAL)IN2);\ |
2136 } |
2136 } |
2137 __ANY_NUM(__iec_) |
2137 __ANY_NUM(__iec_) |
2138 #undef __iec_ |
2138 #undef __iec_ |
2139 |
2139 |
2140 /*** CONCAT_DATE_TOD ***/ |
2140 /*** CONCAT_DATE_TOD ***/ |