22 # include <vcl_msvc_warnings.h> 26 #include <vxl_config.h> 31 if (s->
read(bytes,
sizeof bytes) !=
sizeof bytes)
return 0;
32 return vxl_uint_16(bytes[1]) | vxl_uint_16(bytes[0]<<8);
38 if (s->
read(bytes,
sizeof bytes) !=
sizeof bytes)
return 0;
39 return vxl_uint_16(bytes[0]) | vxl_uint_16(bytes[1]<<8);
44 vxl_uint_64 vil_stream_read_big_endian_uint_64(
vil_stream *s)
47 if (s->
read(bytes,
sizeof bytes) !=
sizeof bytes)
return 0;
48 return (vxl_uint_64(bytes[0])<<56) | (vxl_uint_64(bytes[1])<<48) | (vxl_uint_64(bytes[2])<<40) | (vxl_uint_64(bytes[3])<<32)
49 | (vxl_uint_64(bytes[0])<<24) | (vxl_uint_64(bytes[1])<<16) | (vxl_uint_64(bytes[2])<< 8) | vxl_uint_64(bytes[3]);
52 vxl_uint_64 vil_stream_read_little_endian_uint_64(
vil_stream *s)
55 if (s->
read(bytes,
sizeof bytes) !=
sizeof bytes)
return 0;
56 return (vxl_uint_64(bytes[3])<<56) | (vxl_uint_64(bytes[2])<<48) | (vxl_uint_64(bytes[1])<<40) | (vxl_uint_64(bytes[0])<<32)
57 | (vxl_uint_64(bytes[3])<<24) | (vxl_uint_64(bytes[2])<<16) | (vxl_uint_64(bytes[1])<< 8) | vxl_uint_64(bytes[0]);
60 #endif // VXL_HAS_INT_64 65 if (s->
read(bytes,
sizeof bytes) !=
sizeof bytes)
return 0;
66 return (vxl_uint_32(bytes[0])<<24) | (vxl_uint_32(bytes[1])<<16) | (vxl_uint_32(bytes[2])<<8) | (vxl_uint_32(bytes[3]));
72 if (s->
read(bytes,
sizeof bytes) !=
sizeof bytes)
return 0;
73 return (vxl_uint_32(bytes[3])<<24) | (vxl_uint_32(bytes[2])<<16) | (vxl_uint_32(bytes[1])<<8) | (vxl_uint_32(bytes[0]));
79 if (s->
read(bytes,
sizeof bytes) !=
sizeof bytes)
return 0;
80 return (vxl_int_32(bytes[0])<<24) | (vxl_int_32(bytes[1])<<16) | (vxl_int_32(bytes[2])<<8) | (vxl_int_32(bytes[3]));
86 if (s->
read(bytes,
sizeof bytes) !=
sizeof bytes)
return 0;
87 return (vxl_int_32(bytes[3])<<24) | (vxl_int_32(bytes[2])<<16) | (vxl_int_32(bytes[1])<<8) | (vxl_int_32(bytes[0]));
93 static void swap16(
char *a,
unsigned n)
96 for (
unsigned i = 0; i < n * 2; i += 2)
98 c = a[i]; a[i] = a[i+1]; a[i+1] = c;
103 #if VXL_LITTLE_ENDIAN 106 static void swap32(
char *a,
unsigned n)
109 for (
unsigned i = 0; i < n * 4; i += 4)
125 is->
read((
char*)&f,4);
126 #if VXL_LITTLE_ENDIAN 135 vxl_uint_16* data,
unsigned n)
137 assert(
sizeof(
short)==2);
138 is->
read((
char*)data,n*2);
139 #if VXL_LITTLE_ENDIAN 140 swap16((
char*)data,n);
Stream interface for VIL image loaders.
vxl_uint_32 vil_stream_read_big_endian_uint_32(vil_stream *s)
vxl_int_32 vil_stream_read_big_endian_int_32(vil_stream *s)
read numbers from vil_stream
float vil_stream_read_big_endian_float(vil_stream *is)
Reads in a 4-byte big-endian float.
virtual vil_streampos read(void *buf, vil_streampos n)=0
Read n bytes into buf. Returns number of bytes read.
vxl_int_32 vil_stream_read_little_endian_int_32(vil_stream *s)
Stream interface for VIL image loaders.
void vil_stream_read_big_endian_int_16(vil_stream *is, vxl_uint_16 *data, unsigned n)
Reads in n 16 bit unsigned ints.
vxl_uint_32 vil_stream_read_little_endian_uint_32(vil_stream *s)
vxl_uint_16 vil_stream_read_little_endian_uint_16(vil_stream *s)
vxl_uint_16 vil_stream_read_big_endian_uint_16(vil_stream *s)