Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ff79d2c3 authored by Abhishek Pandit-Subedi's avatar Abhishek Pandit-Subedi
Browse files

floss: Build fixes for clang-14

With C++17 on Clang-14, there are additional deprecation messages and
missing includes that need to be handled:

* std::iterator replaced with using aliases.
* std::unary_function and std::binary_function replaced
* Add missing <vector> and <array>

Bug: 176837458
Tag: #floss
Test: ./build.py
Change-Id: I34139433a2dd2fa851de345df407d4b922d6ebd8
parent 1edf39ec
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@


#pragma once
#pragma once
#include <list>
#include <list>
#include <vector>


#include "types/bluetooth/uuid.h"
#include "types/bluetooth/uuid.h"
#include "types/raw_address.h"
#include "types/raw_address.h"
+15 −1
Original line number Original line Diff line number Diff line
@@ -27,9 +27,23 @@
namespace bluetooth {
namespace bluetooth {
namespace packet {
namespace packet {


// std::iterator is deprecated in C++17 onwards. Instead, you must declare all
// 5 aliases that the iterator needs for the std library.
#if __cplusplus >= 201703L
struct IteratorTraits {
  using iterator_category = std::random_access_iterator_tag;
  using value_type = uint8_t;
  using difference_type = std::ptrdiff_t;
  using pointer = uint8_t*;
  using reference = uint8_t&;
};
#else
struct IteratorTraits : public std::iterator<std::random_access_iterator_tag, uint8_t> {};
#endif

// Templated Iterator for endianness
// Templated Iterator for endianness
template <bool little_endian>
template <bool little_endian>
class Iterator : public std::iterator<std::random_access_iterator_tag, uint8_t> {
class Iterator : public IteratorTraits {
 public:
 public:
  Iterator(const std::forward_list<View>& data, size_t offset);
  Iterator(const std::forward_list<View>& data, size_t offset);
  Iterator(const Iterator& itr) = default;
  Iterator(const Iterator& itr) = default;
+3 −3
Original line number Original line Diff line number Diff line
@@ -15,8 +15,10 @@
 */
 */


#include <unistd.h>
#include <unistd.h>

#include <cerrno>
#include <cerrno>
#include <cstdio>
#include <cstdio>
#include <cstring>
#include <filesystem>
#include <filesystem>
#include <fstream>
#include <fstream>
#include <iomanip>
#include <iomanip>
@@ -27,10 +29,8 @@
#include <vector>
#include <vector>


#include "declarations.h"
#include "declarations.h"
#include "struct_parser_generator.h"

#include "language_y.h"
#include "language_y.h"

#include "struct_parser_generator.h"


int yylex_init(void**);
int yylex_init(void**);
int yylex_destroy(void*);
int yylex_destroy(void*);
+1 −0
Original line number Original line Diff line number Diff line
@@ -737,6 +737,7 @@ void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...);


#ifdef __cplusplus
#ifdef __cplusplus


#include <array>
#include <iomanip>
#include <iomanip>
#include <sstream>
#include <sstream>
#include <type_traits>
#include <type_traits>
+16 −2
Original line number Original line Diff line number Diff line
@@ -24,9 +24,23 @@ namespace bluetooth {
// Forward declare Packet class
// Forward declare Packet class
class Packet;
class Packet;


// std::iterator is deprecated in C++17 onwards. Instead, you must declare all
// 5 aliases that the iterator needs for the std library.
#if __cplusplus >= 201703L
struct IteratorTraits {
  using iterator_category = std::random_access_iterator_tag;
  using value_type = uint8_t;
  using difference_type = std::ptrdiff_t;
  using pointer = uint8_t*;
  using reference = uint8_t&;
};
#else
struct IteratorTraits
    : public std::iterator<std::random_access_iterator_tag, uint8_t> {};
#endif

// Iterator is a custom iterator class for Packets.
// Iterator is a custom iterator class for Packets.
class Iterator
class Iterator : public IteratorTraits {
    : public std::iterator<std::random_access_iterator_tag, uint8_t> {
 public:
 public:
  Iterator(std::shared_ptr<const Packet> packet, size_t i);
  Iterator(std::shared_ptr<const Packet> packet, size_t i);
  Iterator(const Iterator& itr);
  Iterator(const Iterator& itr);