Merge "iwyu: //aos/vision/..."
diff --git a/aos/vision/blob/codec.cc b/aos/vision/blob/codec.cc
index be11281..d3ab72d 100644
--- a/aos/vision/blob/codec.cc
+++ b/aos/vision/blob/codec.cc
@@ -1,5 +1,10 @@
#include "aos/vision/blob/codec.h"
+#include <stddef.h>
+
+#include <utility>
+#include <vector>
+
namespace aos::vision {
size_t CalculateSize(const BlobList &blob_list) {
diff --git a/aos/vision/blob/codec.h b/aos/vision/blob/codec.h
index 5872b44..1656b4a 100644
--- a/aos/vision/blob/codec.h
+++ b/aos/vision/blob/codec.h
@@ -1,6 +1,9 @@
#ifndef _AOS_VISION_BLOB_CODEC_H_
#define _AOS_VISION_BLOB_CODEC_H_
+#include <stdint.h>
+#include <string.h>
+
#include <string>
#include "aos/vision/blob/range_image.h"
diff --git a/aos/vision/blob/codec_test.cc b/aos/vision/blob/codec_test.cc
index 889dfbb..3d483a4 100644
--- a/aos/vision/blob/codec_test.cc
+++ b/aos/vision/blob/codec_test.cc
@@ -1,6 +1,10 @@
#include "aos/vision/blob/codec.h"
+#include <stddef.h>
+
#include <algorithm>
+#include <utility>
+#include <vector>
#include "gtest/gtest.h"
diff --git a/aos/vision/blob/contour.cc b/aos/vision/blob/contour.cc
index 5e82d4c..a789b77 100644
--- a/aos/vision/blob/contour.cc
+++ b/aos/vision/blob/contour.cc
@@ -1,5 +1,7 @@
#include "aos/vision/blob/contour.h"
+#include <vector>
+
namespace aos::vision {
namespace {
diff --git a/aos/vision/blob/find_blob.cc b/aos/vision/blob/find_blob.cc
index 8ee8e92..29b1640 100644
--- a/aos/vision/blob/find_blob.cc
+++ b/aos/vision/blob/find_blob.cc
@@ -1,5 +1,8 @@
#include "aos/vision/blob/find_blob.h"
+#include <utility>
+#include <vector>
+
#include "aos/vision/blob/disjoint_set.h"
namespace aos::vision {
diff --git a/aos/vision/blob/hierarchical_contour_merge.cc b/aos/vision/blob/hierarchical_contour_merge.cc
index 06c34d4..c5d3eb9 100644
--- a/aos/vision/blob/hierarchical_contour_merge.cc
+++ b/aos/vision/blob/hierarchical_contour_merge.cc
@@ -1,7 +1,11 @@
#include "aos/vision/blob/hierarchical_contour_merge.h"
+#include <stdint.h>
+
+#include <algorithm>
#include <cmath>
#include <queue>
+#include <utility>
#include "aos/vision/blob/disjoint_set.h"
diff --git a/aos/vision/blob/move_scale.cc b/aos/vision/blob/move_scale.cc
index 45337fc..ac2c30a 100644
--- a/aos/vision/blob/move_scale.cc
+++ b/aos/vision/blob/move_scale.cc
@@ -1,5 +1,8 @@
#include "aos/vision/blob/move_scale.h"
+#include <algorithm>
+#include <utility>
+
namespace aos::vision {
RangeImage MoveScale(const RangeImage &img, int dx, int dy, int scale) {
diff --git a/aos/vision/blob/move_scale.h b/aos/vision/blob/move_scale.h
index 94a9e9d..4f38bcf 100644
--- a/aos/vision/blob/move_scale.h
+++ b/aos/vision/blob/move_scale.h
@@ -1,7 +1,6 @@
#ifndef AOS_VISION_BLOB_MOVE_SCALE_H_
#define AOS_VISION_BLOB_MOVE_SCALE_H_
-#include <limits>
#include <vector>
#include "aos/vision/blob/range_image.h"
diff --git a/aos/vision/blob/range_image.cc b/aos/vision/blob/range_image.cc
index 92f77cc..ef9cc19 100644
--- a/aos/vision/blob/range_image.cc
+++ b/aos/vision/blob/range_image.cc
@@ -1,7 +1,9 @@
#include "aos/vision/blob/range_image.h"
+#include <stdio.h>
+
#include <algorithm>
-#include <cmath>
+#include <ostream>
namespace aos::vision {
namespace {
diff --git a/aos/vision/blob/range_image.h b/aos/vision/blob/range_image.h
index 10e801f..3e8c35c 100644
--- a/aos/vision/blob/range_image.h
+++ b/aos/vision/blob/range_image.h
@@ -1,6 +1,9 @@
#ifndef _AOS_VISION_BLOB_RANGE_IMAGE_H_
#define _AOS_VISION_BLOB_RANGE_IMAGE_H_
+#include <iosfwd>
+#include <string>
+#include <utility>
#include <vector>
#include "aos/vision/image/image_types.h"
diff --git a/aos/vision/blob/test_utils.cc b/aos/vision/blob/test_utils.cc
index 0e7240f..54d5fe6 100644
--- a/aos/vision/blob/test_utils.cc
+++ b/aos/vision/blob/test_utils.cc
@@ -1,5 +1,8 @@
#include "aos/vision/blob/test_utils.h"
+#include <utility>
+#include <vector>
+
namespace aos::vision {
RangeImage LoadFromTestData(int mini, const char *data) {
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 {
diff --git a/aos/vision/blob/threshold.h b/aos/vision/blob/threshold.h
index 95330c5..effd321 100644
--- a/aos/vision/blob/threshold.h
+++ b/aos/vision/blob/threshold.h
@@ -1,11 +1,16 @@
#ifndef AOS_VISION_BLOB_THRESHOLD_H_
#define AOS_VISION_BLOB_THRESHOLD_H_
+#include <stdint.h>
+
#include <array>
#include <condition_variable>
#include <functional>
#include <mutex>
#include <thread>
+#include <type_traits>
+#include <utility>
+#include <vector>
#include "aos/vision/blob/range_image.h"
#include "aos/vision/image/image_types.h"
diff --git a/aos/vision/blob/threshold_test.cc b/aos/vision/blob/threshold_test.cc
index 4b23f3e..4ec519c 100644
--- a/aos/vision/blob/threshold_test.cc
+++ b/aos/vision/blob/threshold_test.cc
@@ -1,9 +1,11 @@
#include "aos/vision/blob/threshold.h"
+#include <stddef.h>
+
+#include <limits>
#include <random>
#include <vector>
-#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "aos/vision/blob/range_image.h"
diff --git a/aos/vision/blob/transpose.cc b/aos/vision/blob/transpose.cc
index b59e8c5..25fd207 100644
--- a/aos/vision/blob/transpose.cc
+++ b/aos/vision/blob/transpose.cc
@@ -2,6 +2,7 @@
#include <algorithm>
#include <limits>
+#include <utility>
namespace aos::vision {
diff --git a/aos/vision/blob/transpose.h b/aos/vision/blob/transpose.h
index d2b609e..e2ff8b4 100644
--- a/aos/vision/blob/transpose.h
+++ b/aos/vision/blob/transpose.h
@@ -1,6 +1,8 @@
#ifndef AOS_VISION_BLOB_TRANSPOSE_H_
#define AOS_VISION_BLOB_TRANSPOSE_H_
+#include <vector>
+
#include "aos/vision/blob/range_image.h"
namespace aos::vision {
diff --git a/aos/vision/blob/transpose_test.cc b/aos/vision/blob/transpose_test.cc
index a4a9705..9eb9bac 100644
--- a/aos/vision/blob/transpose_test.cc
+++ b/aos/vision/blob/transpose_test.cc
@@ -1,6 +1,5 @@
#include "aos/vision/blob/transpose.h"
-#include <algorithm>
#include <string>
#include "gtest/gtest.h"
diff --git a/aos/vision/events/epoll_events.cc b/aos/vision/events/epoll_events.cc
index 1a5ad7e..ce3e5af 100644
--- a/aos/vision/events/epoll_events.cc
+++ b/aos/vision/events/epoll_events.cc
@@ -1,9 +1,6 @@
#include "aos/vision/events/epoll_events.h"
-#include <fcntl.h>
#include <sys/epoll.h>
-#include <sys/socket.h>
-#include <sys/types.h>
#include <cstring>
#include <vector>
diff --git a/aos/vision/events/epoll_events.h b/aos/vision/events/epoll_events.h
index e3eeb85..e78db53 100644
--- a/aos/vision/events/epoll_events.h
+++ b/aos/vision/events/epoll_events.h
@@ -3,9 +3,10 @@
#include <sys/epoll.h>
+#include <chrono>
#include <climits>
+#include <compare>
#include <cstdint>
-#include <memory>
#include <vector>
#include "aos/scoped/scoped_fd.h"
diff --git a/aos/vision/events/tcp_client.cc b/aos/vision/events/tcp_client.cc
index 65b646c..3c64add 100644
--- a/aos/vision/events/tcp_client.cc
+++ b/aos/vision/events/tcp_client.cc
@@ -4,14 +4,11 @@
#include <fcntl.h>
#include <netdb.h>
#include <netinet/in.h>
+#include <strings.h>
#include <sys/socket.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <cerrno>
#include <cstdio>
#include <cstdlib>
-#include <cstring>
#include "aos/logging/logging.h"
diff --git a/aos/vision/events/tcp_client.h b/aos/vision/events/tcp_client.h
index 16d7265..e89e0fe 100644
--- a/aos/vision/events/tcp_client.h
+++ b/aos/vision/events/tcp_client.h
@@ -1,7 +1,6 @@
#ifndef _AOS_VISION_DEBUG_TCP_CLIENT_H_
#define _AOS_VISION_DEBUG_TCP_CLIENT_H_
-#include <memory>
#include <string>
#include "aos/vision/events/epoll_events.h"
diff --git a/aos/vision/events/tcp_server.cc b/aos/vision/events/tcp_server.cc
index fa2a369..38e2874 100644
--- a/aos/vision/events/tcp_server.cc
+++ b/aos/vision/events/tcp_server.cc
@@ -2,17 +2,13 @@
#include <arpa/inet.h>
#include <fcntl.h>
-#include <netdb.h>
#include <netinet/in.h>
-#include <sys/epoll.h>
+#include <stdint.h>
+#include <strings.h>
#include <sys/socket.h>
-#include <sys/types.h>
#include <unistd.h>
#include <cerrno>
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
#include "aos/logging/logging.h"
diff --git a/aos/vision/events/tcp_server.h b/aos/vision/events/tcp_server.h
index 49a5a8c..b901077 100644
--- a/aos/vision/events/tcp_server.h
+++ b/aos/vision/events/tcp_server.h
@@ -2,19 +2,21 @@
#define _AOS_VISION_EVENTS_TCP_SERVER_H_
#include <memory>
-#include <vector>
#include "aos/vision/events/epoll_events.h"
#include "aos/vision/events/intrusive_free_list.h"
namespace aos::events {
+// IWYU pragma: begin_keep
// Non-templatized base class of TCP server.
// TCPServer implements Construct which specializes the client connection
// based on the specific use-case.
template <class T>
class TCPServer;
+// IWYU pragma: end_keep
class SocketConnection;
+
class TCPServerBase : public EpollEvent {
public:
TCPServerBase(int fd) : EpollEvent(fd) {}
diff --git a/aos/vision/events/udp.cc b/aos/vision/events/udp.cc
index cf7ad23..1b1a053 100644
--- a/aos/vision/events/udp.cc
+++ b/aos/vision/events/udp.cc
@@ -1,6 +1,11 @@
#include "aos/vision/events/udp.h"
+#include <arpa/inet.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+
#include <cstring>
+#include <ostream>
#include "glog/logging.h"
diff --git a/aos/vision/events/udp.h b/aos/vision/events/udp.h
index 4acb04d..bbe5a54 100644
--- a/aos/vision/events/udp.h
+++ b/aos/vision/events/udp.h
@@ -1,13 +1,7 @@
#ifndef AOS_VISION_EVENTS_UDP_H_
#define AOS_VISION_EVENTS_UDP_H_
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#include <unistd.h>
-
-#include <cmath>
#include <string>
-#include <vector>
#include "aos/macros.h"
#include "aos/scoped/scoped_fd.h"
diff --git a/aos/vision/image/image_dataset.cc b/aos/vision/image/image_dataset.cc
index 82a8886..8eade2b 100644
--- a/aos/vision/image/image_dataset.cc
+++ b/aos/vision/image/image_dataset.cc
@@ -1,5 +1,8 @@
#include "aos/vision/image/image_dataset.h"
+#include <stdlib.h>
+
+#include <cstdio>
#include <fstream>
#include "aos/vision/image/image_types.h"
diff --git a/aos/vision/image/image_stream.h b/aos/vision/image/image_stream.h
index 5a45c6f..797178f 100644
--- a/aos/vision/image/image_stream.h
+++ b/aos/vision/image/image_stream.h
@@ -1,10 +1,17 @@
#ifndef AOS_VISION_IMAGE_IMAGE_STREAM_H_
#define AOS_VISION_IMAGE_IMAGE_STREAM_H_
+#include <chrono>
+#include <functional>
#include <memory>
+#include <string>
+#include <string_view>
+#include <utility>
+#include "aos/time/time.h"
#include "aos/vision/events/epoll_events.h"
#include "aos/vision/image/camera_params.pb.h"
+#include "aos/vision/image/image_types.h"
#include "aos/vision/image/reader.h"
namespace aos::vision {
diff --git a/aos/vision/image/jpeg_routines.cc b/aos/vision/image/jpeg_routines.cc
index 9d46895..1c1f738 100644
--- a/aos/vision/image/jpeg_routines.cc
+++ b/aos/vision/image/jpeg_routines.cc
@@ -1,13 +1,8 @@
#include "aos/vision/image/jpeg_routines.h"
-#include <sys/mman.h>
-#include <unistd.h>
-
-#include <cerrno>
#include <csetjmp>
#include <cstdint>
#include <cstdio>
-#include <cstdlib>
#include <cstring>
#include "third_party/libjpeg/jpeglib.h"
diff --git a/aos/vision/image/jpeg_routines.h b/aos/vision/image/jpeg_routines.h
index 4bac976..755a205 100644
--- a/aos/vision/image/jpeg_routines.h
+++ b/aos/vision/image/jpeg_routines.h
@@ -1,11 +1,6 @@
#ifndef _AOS_VISION_IMAGE_JPEGROUTINES_H_
#define _AOS_VISION_IMAGE_JPEGROUTINES_H_
-#include <unistd.h>
-
-#include <cstdio>
-#include <cstdlib>
-
#include "aos/vision/image/image_types.h"
namespace aos::vision {
diff --git a/aos/vision/image/reader.cc b/aos/vision/image/reader.cc
index 3fbcd1d..d216490 100644
--- a/aos/vision/image/reader.cc
+++ b/aos/vision/image/reader.cc
@@ -1,20 +1,19 @@
#include "aos/vision/image/reader.h"
#include <fcntl.h>
-#include <malloc.h>
+#include <linux/v4l2-controls.h>
#include <sys/mman.h>
#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
#include <cerrno>
#include <cstdio>
#include <cstdlib>
#include <cstring>
+#include <utility>
#include "aos/logging/logging.h"
#include "aos/time/time.h"
+#include "aos/vision/image/V4L2.h"
#define CLEAR(x) memset(&(x), 0, sizeof(x))
diff --git a/aos/vision/image/reader.h b/aos/vision/image/reader.h
index 8f7b6b7..8791403 100644
--- a/aos/vision/image/reader.h
+++ b/aos/vision/image/reader.h
@@ -1,12 +1,13 @@
#ifndef AOS_VISION_IMAGE_READER_H_
#define AOS_VISION_IMAGE_READER_H_
+#include <linux/videodev2.h>
+
#include <cinttypes>
#include <functional>
#include <string>
#include "aos/time/time.h"
-#include "aos/vision/image/V4L2.h"
#include "aos/vision/image/camera_params.pb.h"
#include "aos/vision/image/image_types.h"
@@ -52,6 +53,7 @@
// The number of buffers currently queued in v4l2.
uint32_t queued_;
struct Buffer;
+
// TODO(parker): This should be a smart pointer, but it cannot
// because the buffers are not ummapped.
Buffer *buffers_;
diff --git a/aos/vision/math/vector.h b/aos/vision/math/vector.h
index ce29901..04203e6 100644
--- a/aos/vision/math/vector.h
+++ b/aos/vision/math/vector.h
@@ -1,9 +1,12 @@
#ifndef AOS_VISION_MATH_VECTOR_H_
#define AOS_VISION_MATH_VECTOR_H_
+#include <algorithm>
#include <cmath>
+#include <utility>
-#include "Eigen/Dense"
+#include "Eigen/Core"
+#include "Eigen/Geometry"
namespace aos::vision {
diff --git a/aos/vision/math/vector_test.cc b/aos/vision/math/vector_test.cc
index 214a50c..d137d5e 100644
--- a/aos/vision/math/vector_test.cc
+++ b/aos/vision/math/vector_test.cc
@@ -1,5 +1,7 @@
#include "aos/vision/math/vector.h"
+#include <memory>
+
#include "gtest/gtest.h"
namespace aos::vision::testing {
diff --git a/aos/vision/tools/camera_primer.cc b/aos/vision/tools/camera_primer.cc
index fcd7d0b..d409d2d 100644
--- a/aos/vision/tools/camera_primer.cc
+++ b/aos/vision/tools/camera_primer.cc
@@ -1,7 +1,13 @@
-#include "aos/logging/implementations.h"
-#include "aos/logging/logging.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <string>
+
+#include "aos/time/time.h"
#include "aos/vision/events/epoll_events.h"
+#include "aos/vision/image/camera_params.pb.h"
#include "aos/vision/image/image_stream.h"
+#include "aos/vision/image/image_types.h"
class ImageStream : public aos::vision::ImageStreamEvent {
public: