iwyu: //aos/vision/...

The full include-list for aos/vision/image/image_stream.h:
<chrono>                               // for time_point
<functional>                           // for _Placeholder, bind, _1, _2, placeholders
<memory>                               // for unique_ptr
<string>                               // for string
<string_view>                          // for basic_string_view
<utility>                              // for move
"aos/time/time.h"                      // for monotonic_clock
"aos/vision/events/epoll_events.h"     // for EpollEvent
"aos/vision/image/camera_params.pb.h"  // for CameraParams
"aos/vision/image/image_types.h"       // for DataRef
"aos/vision/image/reader.h"            // for Reader

The full include-list for aos/vision/image/image_dataset.cc:
"aos/vision/image/image_dataset.h"
<stdlib.h>                        // for exit
<cstdio>                          // for size_t, fprintf, stderr
<fstream>                         // for ios, operator|, basic_istream::seekg, basic_istream::read, basic_istream::tellg, ifstream
"aos/vision/image/image_types.h"  // for DataRef

The full include-list for aos/vision/image/reader.h:
<linux/videodev2.h>                    // for v4l2_buffer
<cinttypes>                            // for int32_t, uint32_t
<functional>                           // for function
<string>                               // for string
"aos/time/time.h"                      // for monotonic_clock
"aos/vision/image/camera_params.pb.h"  // for CameraParams
"aos/vision/image/image_types.h"       // for ImageFormat, DataRef
namespace camera { struct Reader::Buffer; }  // lines 54-54

The full include-list for aos/vision/image/reader.cc:
"aos/vision/image/reader.h"
<fcntl.h>                  // for open, O_NONBLOCK, O_RDWR
<linux/v4l2-controls.h>    // for V4L2_CID_EXPOSURE_ABSOLUTE, V4L2_CID_BRIGHTNESS, V4L2_CID_EXPOSURE_AUTO, V4L2_CID_GAIN, v4l2_exposure_auto_type
<sys/mman.h>               // for mmap, MAP_FAILED, MAP_SHARED, PROT_READ, PROT_WRITE
<sys/stat.h>               // for stat, S_ISCHR
<cerrno>                   // for errno, EINVAL, EAGAIN
<cstdio>                   // for size_t, NULL
<cstdlib>                  // for calloc
<cstring>                  // for memset, strerror
<utility>                  // for move
"aos/logging/logging.h"    // for FATAL, AOS_LOG, AOS_PLOG, DEBUG, WARNING, INFO, ERROR
"aos/time/time.h"          // for monotonic_clock
"aos/vision/image/V4L2.h"  // for xioctl

The full include-list for aos/vision/image/jpeg_routines.h:
"aos/vision/image/image_types.h"  // for DataRef, ImageFormat, ImageValue, PixelRef

The full include-list for aos/vision/image/jpeg_routines.cc:
"aos/vision/image/jpeg_routines.h"
<csetjmp>                        // for longjmp, jmp_buf, setjmp
<cstdint>                        // for uint8_t
<cstdio>                         // for fflush, printf, stdout, NULL, size_t
<cstring>                        // for memcpy
"aos/logging/logging.h"          // for FATAL, AOS_LOG
"third_party/libjpeg/jpeglib.h"  // for jpeg_decompress_struct, UINT8, jpeg_destroy_decompress, jpeg_error_mgr, jpeg_mem_src, jpeg_read_header, jpeg_std_error, j_decompress_ptr, jpeg_alloc_huff_table, jpeg_common_struct, jpeg_finish_decompress, jpeg_read_scanlines, jpeg_start_decompress, JCS_RGB, JHUFF_TBL, TRUE, j_common_ptr, jpeg_create_decompress, JMSG_LENGTH_MAX

The full include-list for aos/vision/math/vector.h:
<algorithm>       // for fill_n
<cmath>           // for atan2
<utility>         // for move
"Eigen/Core"      // for StorageOptions, DirectionType, outer_stride_at_compile_time<>::ret, inner_stride_at_compile_time<>::ret, DenseBase<>::IsRowMajor, traits<>::Flags, traits<>::ColsAtCompileTime, traits<>::RowsAtCompileTime, DenseBase<>::ColsAtCompileTime, AccessorLevels, DenseBase<>::RowsAtCompileTime, is_const<>::value, traits<>::MaxColsAtCompileTime, traits<>::MaxRowsAtCompileTime, accessors_level<>::value, GenericNumTraits<>::IsComplex, TraversalType, AlignmentType, is_same<>::value, DenseBase<>::SizeAtCompileTime, is_arithmetic<>::value, UnrollingType, unpacket_traits<>::alignment, DenseBase<>::MaxSizeAtCompileTime, ComparisonName, DenseBase<>::IsVectorAtCompileTime, DenseBase<>::MaxColsAtCompileTime, DenseBase<>::MaxRowsAtCompileTime, packet_traits<>::Vectorizable, Matrix, size_of_xpr_at_compile_time<>::ret, evaluator<>::Flags, DenseBase<>::InnerSizeAtCompileTime, unpacket_traits<>::size, has_ReturnType<>::value, evaluator<>::CoeffReadCost, compute_default_alignment<>::value, compute_matrix_flags<>::ret, functor_traits<>::PacketAccess, size_at_compile_time<>::ret, functor_traits<>::Cost, is_lvalue<>::value, GenericNumTraits<>::ReadCost, evaluator<>::Alignment, MapBase<>::SizeAtCompileTime, binary_evaluator<>::CoeffReadCost, operator*, traits<>::Alignment, GenericNumTraits<>::MulCost, TransformTraits, default_packet_traits::HasMul, binary_evaluator<>::Alignment, binary_evaluator<>::Flags, unary_evaluator<>::Flags, functor_has_linear_access<>::ret, functor_traits<>::IsRepeatable, traits<>::EvaluatorFlags, GenericNumTraits<>::AddCost, blas_traits<>::IsTransposed, default_packet_traits::HasAdd, unary_evaluator<>::CoeffReadCost, call_assignment, Vector3d, unary_evaluator<>::Alignment, cwise_promote_storage_order<>::value, traits<>::InnerStrideAtCompileTime, traits<>::OuterStrideAtCompileTime
"Eigen/Geometry"  // for AngleAxis, MatrixBase::cross, operator*, RotationBase

The full include-list for aos/vision/math/vector_test.cc:
"aos/vision/math/vector.h"
<memory>         // for allocator
"gtest/gtest.h"  // for Message, TestPartResult, EXPECT_EQ, TestInfo, AssertionResult, EXPECT_NEAR, TEST_F, EXPECT_FALSE, EXPECT_TRUE, Test

The full include-list for aos/vision/blob/contour.cc:
"aos/vision/blob/contour.h"
<vector>  // for vector, swap

The full include-list for aos/vision/blob/codec.h:
<stdint.h>                       // for uint16_t, uint32_t, uint64_t
<string.h>                       // for size_t, memcpy
<string>                         // for string
"aos/vision/blob/range_image.h"  // for BlobList

The full include-list for aos/vision/blob/codec.cc:
"aos/vision/blob/codec.h"
<stddef.h>  // for size_t
<utility>   // for move
<vector>    // for vector

The full include-list for aos/vision/blob/transpose.h:
<vector>                         // for vector
"aos/vision/blob/range_image.h"  // for RangeImage

The full include-list for aos/vision/blob/transpose.cc:
"aos/vision/blob/transpose.h"
<algorithm>  // for min, sort
<limits>     // for numeric_limits
<utility>    // for pair, move

The full include-list for aos/vision/blob/threshold.h:
<stdint.h>                        // for uint8_t
<array>                           // for array
<condition_variable>              // for condition_variable
<functional>                      // for function
<mutex>                           // for mutex
<thread>                          // for thread
<type_traits>                     // for is_convertible
<utility>                         // for move
<vector>                          // for vector
"aos/vision/blob/range_image.h"   // for ImageRange, RangeImage
"aos/vision/image/image_types.h"  // for ImageFormat, ImagePtr, PixelRef

The full include-list for aos/vision/blob/threshold_test.cc:
"aos/vision/blob/threshold.h"
<stddef.h>                        // for size_t
<limits>                          // for numeric_limits
<random>                          // for uniform_int_distribution, minstd_rand
<vector>                          // for vector, allocator
"aos/vision/blob/range_image.h"   // for ImageRange, RangeImage
"aos/vision/image/image_types.h"  // for ImageFormat
"gtest/gtest.h"                   // for ASSERT_EQ, Message, TestInfo, TestPartResult, TEST_F, Test

The full include-list for aos/vision/blob/codec.h:
<stdint.h>                       // for uint16_t, uint32_t, uint64_t
<string.h>                       // for size_t, memcpy
<string>                         // for string
"aos/vision/blob/range_image.h"  // for BlobList

The full include-list for aos/vision/blob/codec_test.cc:
"aos/vision/blob/codec.h"
<stddef.h>       // for size_t
<algorithm>      // for max
<utility>        // for move
<vector>         // for vector
"gtest/gtest.h"  // for Test, EXPECT_EQ, Message, TestInfo, TestPartResult, TEST

The full include-list for aos/vision/blob/find_blob.cc:
"aos/vision/blob/find_blob.h"
<utility>                         // for move, swap
<vector>                          // for vector, swap
"aos/vision/blob/disjoint_set.h"  // for DisjointSet

The full include-list for aos/vision/blob/move_scale.h:
<vector>                          // for vector
"aos/vision/blob/range_image.h"   // for RangeImage
"aos/vision/image/image_types.h"  // for ImageBBox

The full include-list for aos/vision/blob/move_scale.cc:
"aos/vision/blob/move_scale.h"
<algorithm>  // for max, min
<utility>    // for move

The full include-list for aos/vision/blob/transpose.h:
<vector>                         // for vector
"aos/vision/blob/range_image.h"  // for RangeImage

The full include-list for aos/vision/blob/transpose_test.cc:
"aos/vision/blob/transpose.h"
<string>                        // for allocator
"aos/vision/blob/test_utils.h"  // for LoadFromTestData
"gtest/gtest.h"                 // for Test, TestInfo, EXPECT_EQ, Message, TEST, TestPartResult

The full include-list for aos/vision/blob/threshold.h:
<stdint.h>                        // for uint8_t
<array>                           // for array
<condition_variable>              // for condition_variable
<functional>                      // for function
<mutex>                           // for mutex
<thread>                          // for thread
<type_traits>                     // for is_convertible
<utility>                         // for move
<vector>                          // for vector
"aos/vision/blob/range_image.h"   // for ImageRange, RangeImage
"aos/vision/image/image_types.h"  // for ImageFormat, ImagePtr, PixelRef

The full include-list for aos/vision/blob/threshold.cc:
"aos/vision/blob/threshold.h"
<string.h>               // for memcpy
"aos/logging/logging.h"  // for AOS_CHECK_EQ

The full include-list for aos/vision/blob/hierarchical_contour_merge.cc:
"aos/vision/blob/hierarchical_contour_merge.h"
<stdint.h>                        // for int64_t
<algorithm>                       // for max
<cmath>                           // for sqrt
<queue>                           // for priority_queue
<utility>                         // for pair
"aos/vision/blob/disjoint_set.h"  // for DisjointSet

The full include-list for aos/vision/blob/test_utils.cc:
"aos/vision/blob/test_utils.h"
<utility>  // for move
<vector>   // for vector

The full include-list for aos/vision/blob/range_image.h:
<iosfwd>                          // for ostream
<string>                          // for string
<utility>                         // for move
<vector>                          // for vector, operator==
"aos/vision/image/image_types.h"  // for ImageFormat

The full include-list for aos/vision/blob/range_image.cc:
"aos/vision/blob/range_image.h"
<stdio.h>    // for printf
<algorithm>  // for reverse, sort
<ostream>    // for operator<<, basic_ostream::operator<<, basic_ostream, ostream

The full include-list for aos/vision/events/epoll_events.h:
<sys/epoll.h>             // for EPOLLIN
<chrono>                  // for duration, operator<=>, operator-, time_point, duration_cast, milliseconds, seconds
<climits>                 // for INT_MAX
<compare>                 // for operator<, operator<=, strong_ordering, operator>
<cstdint>                 // for uint32_t
<vector>                  // for vector
"aos/scoped/scoped_fd.h"  // for ScopedFD
"aos/time/time.h"         // for monotonic_clock
namespace aos::events { class EpollLoop; }  // lines 16-16

The full include-list for aos/vision/events/epoll_events.cc:
"aos/vision/events/epoll_events.h"
<sys/epoll.h>            // for epoll_event, epoll_ctl, epoll_create1, epoll_wait, EPOLLERR, EPOLLIN, EPOLLPRI, EPOLL_CTL_ADD, EPOLL_CTL_DEL
<cstring>                // for NULL, size_t
<vector>                 // for vector
"aos/logging/logging.h"  // for AOS_PCHECK, FATAL, AOS_CHECK, AOS_LOG

The full include-list for aos/vision/events/udp.h:
<string>                  // for string
"aos/macros.h"            // for DISALLOW_COPY_AND_ASSIGN
"aos/scoped/scoped_fd.h"  // for ScopedFD

The full include-list for aos/vision/events/udp.h:
<string>                  // for string
"aos/macros.h"            // for DISALLOW_COPY_AND_ASSIGN
"aos/scoped/scoped_fd.h"  // for ScopedFD

The full include-list for aos/vision/events/udp.cc:
"aos/vision/events/udp.h"
<arpa/inet.h>     // for htons, htonl, inet_aton
<netinet/in.h>    // for sockaddr_in, IPPROTO_UDP, INADDR_ANY, in_addr
<sys/socket.h>    // for socket, AF_INET, bind, connect, recv, send, SOCK_DGRAM, sockaddr
<cstring>         // for memset
<ostream>         // for basic_ostream, operator<<
"glog/logging.h"  // for ErrnoLogMessage, PCHECK, CHECK, COMPACT_GOOGLE_LOG_FATAL, LogMessageFatal

The full include-list for aos/vision/events/tcp_client.h:
<string>                            // for string
"aos/vision/events/epoll_events.h"  // for EpollEvent

The full include-list for aos/vision/events/tcp_client.cc:
"aos/vision/events/tcp_client.h"
<arpa/inet.h>            // for htons
<fcntl.h>                // for fcntl, F_GETFL, F_SETFL, O_NONBLOCK
<netdb.h>                // for gethostbyname, hostent, h_addr
<netinet/in.h>           // for sockaddr_in, in_addr
<strings.h>              // for bcopy, bzero
<sys/socket.h>           // for connect, socket, AF_INET, SOCK_STREAM
<cstdio>                 // for fprintf, NULL, stderr
<cstdlib>                // for exit
"aos/logging/logging.h"  // for AOS_PCHECK

The full include-list for aos/vision/events/tcp_server.h:
<memory>                                   // for unique_ptr
"aos/vision/events/epoll_events.h"         // for EpollEvent
"aos/vision/events/intrusive_free_list.h"  // for intrusive_free_list
namespace aos::events { class SocketConnection; }  // lines 17-17

The full include-list for aos/vision/events/tcp_server.cc:
"aos/vision/events/tcp_server.h"
<arpa/inet.h>            // for htonl, htons
<fcntl.h>                // for fcntl, F_GETFL, F_SETFL, O_NONBLOCK
<netinet/in.h>           // for sockaddr_in, INADDR_ANY, in_addr
<stdint.h>               // for uint16_t
<strings.h>              // for bzero
<sys/socket.h>           // for accept, bind, listen, setsockopt, socket, AF_INET, sockaddr, SOCK_STREAM, SOL_SOCKET, SOMAXCONN, SO_REUSEADDR, socklen_t
<unistd.h>               // for close
<cerrno>                 // for errno, EAGAIN, EWOULDBLOCK
"aos/logging/logging.h"  // for AOS_PCHECK, INFO, WARNING, AOS_LOG, AOS_PLOG

The full include-list for aos/vision/tools/camera_primer.cc:
<stdio.h>                              // for fprintf, stderr
<stdlib.h>                             // for exit
<string>                               // for allocator, string
"aos/time/time.h"                      // for monotonic_clock
"aos/vision/events/epoll_events.h"     // for EpollLoop
"aos/vision/image/camera_params.pb.h"  // for CameraParams
"aos/vision/image/image_stream.h"      // for ImageStreamEvent
"aos/vision/image/image_types.h"       // for DataRef

Signed-off-by: Stephan Pleines <pleines.stephan@gmail.com>
Change-Id: I9963e201e6a25ec0f84d1ef544d784b772520abd
diff --git a/aos/vision/blob/threshold.cc b/aos/vision/blob/threshold.cc
index 5403bbd..d25ab44 100644
--- a/aos/vision/blob/threshold.cc
+++ b/aos/vision/blob/threshold.cc
@@ -1,5 +1,7 @@
 #include "aos/vision/blob/threshold.h"
 
+#include <string.h>
+
 #include "aos/logging/logging.h"
 
 namespace aos::vision {