<commit_before>/** 
 * @file ScanLineEdgelPercept.h
 *
 * Declaration of class ScanLineEdgelPercept
 */

#ifndef _ScanLineEdgelPercept_h_
#define _ScanLineEdgelPercept_h_

#include "Tools/Math/Vector2.h"
#include "Tools/ImageProcessing/Edgel.h"
#include "Tools/ColorClasses.h"

#include <Tools/DataStructures/Printable.h>
#include <Tools/DataStructures/Serializer.h>

#include <vector>

class ScanLineEdgelPercept : public naoth::Printable
{ 
public:
  ScanLineEdgelPercept(){}

  class EndPoint
  {
  public:
    EndPoint():color(ColorClasses::none), ScanLineID(0), valid(false){}
    Vector2i posInImage;
    Vector2d posOnField;
    ColorClasses::Color color;
    unsigned int ScanLineID;
    bool valid;
  };

  class EdgelPair : public EdgelT<double>
  {
  public:
    EdgelPair() : begin(-1), end(-1), id(-1) {}
    int begin;
    int end;
    int id;
  };

  std::vector<EdgelPair> pairs; // this depends on edgels
  std::vector<Edgel> edgels;

  /** */
  std::vector<EndPoint> endPoints;

  void reset()
  {
    endPoints.clear();
    pairs.clear();
    edgels.clear();
  }

  virtual void print(std::ostream& stream) const
  {
    // TODO: do we need it?
  }
};

class ScanLineEdgelPerceptTop : public ScanLineEdgelPercept
{
public:
  virtual ~ScanLineEdgelPerceptTop() {}
};<commit_msg>oops, make compile with gcc<commit_after>/** 
 * @file ScanLineEdgelPercept.h
 *
 * Declaration of class ScanLineEdgelPercept
 */

#ifndef _ScanLineEdgelPercept_h_
#define _ScanLineEdgelPercept_h_

#include "Tools/Math/Vector2.h"
#include "Tools/ImageProcessing/Edgel.h"
#include "Tools/ColorClasses.h"

#include <Tools/DataStructures/Printable.h>
#include <Tools/DataStructures/Serializer.h>

#include <vector>

class ScanLineEdgelPercept : public naoth::Printable
{ 
public:
  ScanLineEdgelPercept(){}

  class EndPoint
  {
  public:
    EndPoint():color(ColorClasses::none), ScanLineID(0), valid(false){}
    Vector2i posInImage;
    Vector2d posOnField;
    ColorClasses::Color color;
    unsigned int ScanLineID;
    bool valid;
  };

  class EdgelPair : public EdgelT<double>
  {
  public:
    EdgelPair() : begin(-1), end(-1), id(-1) {}
    int begin;
    int end;
    int id;
  };

  std::vector<EdgelPair> pairs; // this depends on edgels
  std::vector<Edgel> edgels;

  /** */
  std::vector<EndPoint> endPoints;

  void reset()
  {
    endPoints.clear();
    pairs.clear();
    edgels.clear();
  }

  virtual void print(std::ostream& /*stream*/) const
  {
    // TODO: do we need it?
  }
};

class ScanLineEdgelPerceptTop : public ScanLineEdgelPercept
{
public:
  virtual ~ScanLineEdgelPerceptTop() {}
};
{'fraction_non_alphanumeric': 0.1314176245210728, 'fraction_numerical': 0.0053639846743295016, 'mean_word_length': 3.935727788279773, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6744295', 'n_tokens_mistral': 954, 'n_tokens_neox': 916, 'n_words': 190}