mirror of
				https://github.com/Zygo/bees.git
				synced 2025-11-03 11:40:34 +01:00 
			
		
		
		
	hexdump: be a little more lock-friendly
hexdump processes a vector as a contiguous sequence of bytes, regardless of V's value type, so hexdump should get a pointer and use uint8_t to read the data. Some vector types have a lock and some atomics in their operator[], so let's avoid hammering those. Signed-off-by: Zygo Blaxell <bees@furryterror.org>
This commit is contained in:
		@@ -12,12 +12,14 @@ namespace crucible {
 | 
				
			|||||||
	ostream &
 | 
						ostream &
 | 
				
			||||||
	hexdump(ostream &os, const V &v)
 | 
						hexdump(ostream &os, const V &v)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		os << "V { size = " << v.size() << ", data:\n";
 | 
							const auto v_size = v.size();
 | 
				
			||||||
		for (size_t i = 0; i < v.size(); i += 8) {
 | 
							const uint8_t* const v_data = reinterpret_cast<uint8_t*>(v.data());
 | 
				
			||||||
 | 
							os << "V { size = " << v_size << ", data:\n";
 | 
				
			||||||
 | 
							for (size_t i = 0; i < v_size; i += 8) {
 | 
				
			||||||
			string hex, ascii;
 | 
								string hex, ascii;
 | 
				
			||||||
			for (size_t j = i; j < i + 8; ++j) {
 | 
								for (size_t j = i; j < i + 8; ++j) {
 | 
				
			||||||
				if (j < v.size()) {
 | 
									if (j < v_size) {
 | 
				
			||||||
					uint8_t c = v[j];
 | 
										const uint8_t c = v_data[j];
 | 
				
			||||||
					char buf[8];
 | 
										char buf[8];
 | 
				
			||||||
					sprintf(buf, "%02x ", c);
 | 
										sprintf(buf, "%02x ", c);
 | 
				
			||||||
					hex += buf;
 | 
										hex += buf;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user