Changeset 435 for trunk/src/stl/string.cc
- Timestamp:
- 07/22/15 21:00:30 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/stl/string.cc
r402 r435 37 37 } 38 38 39 nv::size_t nv::sint32_to_buffer( sint32 n, char* str ) 40 { 41 char* s = str; 42 uint32 abs = static_cast< uint32 >( n < 0 ? -n : n ); 43 do 44 { 39 nv::size_t nv::sint32_to_buffer( array_ref< char > buffer, sint32 n ) 40 { 41 if ( buffer.size() < 2 ) return 0; 42 char* last = buffer.end() - 1; 43 char* s = buffer.begin(); 44 uint32 abs = static_cast<uint32>( n < 0 ? -n : n ); 45 do 46 { 47 if ( s == last ) { *buffer.begin() = '\0'; return 0; } 45 48 *s++ = static_cast<char>( '0' + ( abs % 10 ) ); 46 49 abs /= 10; 47 50 } while ( abs > 0 ); 48 if ( n < 0 ) *s++ = '-'; 49 *s = '\0'; 50 string_reverse( str, s - 1 ); 51 return static_cast<nv::size_t>( s - str ); 52 } 53 54 nv::size_t nv::sint64_to_buffer( sint64 n, char* str ) 55 { 56 char* s = str; 57 uint64 abs = static_cast< uint64 >( n < 0 ? -n : n ); 58 do 59 { 51 if ( n < 0 ) 52 { 53 if ( s == last ) { *buffer.begin() = '\0'; return 0; } 54 *s++ = '-'; 55 } 56 *s = '\0'; 57 string_reverse( buffer.begin(), s - 1 ); 58 return static_cast<nv::size_t>( s - buffer.begin() ); 59 } 60 61 nv::size_t nv::sint64_to_buffer( array_ref< char > buffer, sint64 n ) 62 { 63 if ( buffer.size() < 2 ) return 0; 64 char* last = buffer.end() - 1; 65 char* s = buffer.begin(); 66 uint64 abs = static_cast<uint64>( n < 0 ? -n : n ); 67 do 68 { 69 if ( s == last ) { *buffer.begin() = '\0'; return 0; } 60 70 *s++ = static_cast<char>( '0' + ( abs % 10 ) ); 61 71 abs /= 10; 62 72 } while ( abs > 0 ); 63 if ( n < 0 ) *s++ = '-'; 64 *s = '\0'; 65 string_reverse( str, s - 1 ); 66 return static_cast<nv::size_t>( s - str ); 67 } 68 69 nv::size_t nv::uint32_to_buffer( uint32 n, char* str ) 70 { 71 char* s = str; 72 do 73 { 73 if ( n < 0 ) 74 { 75 if ( s == last ) { *buffer.begin() = '\0'; return 0; } 76 *s++ = '-'; 77 } 78 *s = '\0'; 79 string_reverse( buffer.begin(), s - 1 ); 80 return static_cast<nv::size_t>( s - buffer.begin() ); 81 } 82 83 nv::size_t nv::uint32_to_buffer( array_ref< char > buffer, uint32 n ) 84 { 85 if ( buffer.size() < 2 ) return 0; 86 char* last = buffer.end() - 1; 87 char* s = buffer.begin(); 88 do 89 { 90 if ( s == last ) { *buffer.begin() = '\0'; return 0; } 74 91 *s++ = static_cast<char>( '0' + ( n % 10 ) ); 75 92 n /= 10; 76 93 } while ( n > 0 ); 77 94 *s = '\0'; 78 string_reverse( str, s - 1 ); 79 return static_cast<nv::size_t>( s - str ); 80 } 81 82 nv::size_t nv::uint64_to_buffer( uint64 n, char* str ) 83 { 84 char* s = str; 85 do 86 { 95 string_reverse( buffer.begin(), s - 1 ); 96 return static_cast<nv::size_t>( s - buffer.begin() ); 97 } 98 99 nv::size_t nv::uint64_to_buffer( array_ref< char > buffer, uint64 n ) 100 { 101 if ( buffer.size() < 2 ) return 0; 102 char* last = buffer.end() - 1; 103 char* s = buffer.begin(); 104 do 105 { 106 if ( s == last ) { *buffer.begin() = '\0'; return 0; } 87 107 *s++ = static_cast<char>( '0' + ( n % 10 ) ); 88 108 n /= 10; 89 109 } while ( n > 0 ); 90 110 *s = '\0'; 91 string_reverse( str, s - 1 );92 return static_cast<nv::size_t>( s - str);93 } 94 95 nv::size_t nv::f32_to_buffer( f32 n, char* str)111 string_reverse( buffer.begin(), s - 1 ); 112 return static_cast<nv::size_t>( s - buffer.begin() ); 113 } 114 115 nv::size_t nv::f32_to_buffer( array_ref< char > buffer, f32 n ) 96 116 { 97 117 #if NV_COMPILER == NV_MSVC 98 int result = sprintf_s( str, 64, "%.*g", 6, n );118 int result = sprintf_s( buffer.data(), buffer.size(), "%.*g", 6, n ); 99 119 #else 100 int result = snprintf( str, 64, "%.*g", 6, n );120 int result = snprintf( buffer.data(), buffer.size(), "%.*g", 6, n ); 101 121 #endif 102 122 return static_cast<nv::size_t>( result > 0 ? result : 0 ); 103 123 } 104 124 105 nv::size_t nv::f64_to_buffer( f64 n, char* str)125 nv::size_t nv::f64_to_buffer( array_ref< char > buffer, f64 n ) 106 126 { 107 127 #if NV_COMPILER == NV_MSVC 108 int result = sprintf_s( str, 64, "%.*g", 6, n );128 int result = sprintf_s( buffer.data(), buffer.size(), "%.*g", 6, n ); 109 129 #else 110 int result = snprintf( str, 64, "%.*g", 6, n );130 int result = snprintf( buffer.data(), buffer.size(), "%.*g", 6, n ); 111 131 #endif 112 132 return static_cast<nv::size_t>( result > 0 ? result : 0 );
Note: See TracChangeset
for help on using the changeset viewer.