| 2111 | |
| 2112 | |
| 2113 | String String::substr(int inFirst, Dynamic inLen) const |
| 2114 | { |
| 2115 | int len = inLen == null() ? length : inLen->__ToInt(); |
| 2116 | if (inFirst<0) inFirst += length; |
| 2117 | if (inFirst<0) inFirst = 0; |
| 2118 | if (len<0) |
| 2119 | { |
| 2120 | len = length + len - inFirst; |
| 2121 | } |
| 2122 | |
| 2123 | if (len<=0 || inFirst>=length) |
| 2124 | return String::emptyString; |
| 2125 | |
| 2126 | if ((len+inFirst > length) ) len = length - inFirst; |
| 2127 | if (len==0) |
| 2128 | return String::emptyString; |
| 2129 | |
| 2130 | |
| 2131 | #ifdef HX_SMART_STRINGS |
| 2132 | if (isUTF16Encoded()) |
| 2133 | { |
| 2134 | if (len==1) |
| 2135 | return String::fromCharCode(__w[inFirst]); |
| 2136 | return String( GCStringDup(__w+inFirst, len, 0), len ); |
| 2137 | } |
| 2138 | #endif |
| 2139 | |
| 2140 | if (len==1) |
| 2141 | return String::fromCharCode(__s[inFirst]); |
| 2142 | |
| 2143 | return String( GCStringDup(__s+inFirst, len, 0), len ); |
| 2144 | } |
| 2145 | |
| 2146 | String String::substring(int startIndex, Dynamic inEndIndex) const |
| 2147 | { |
no test coverage detected