<commit_before>#ifndef ESP8266_PROJECTS_ROOT_FILE_STREAMS_H
#define ESP8266_PROJECTS_ROOT_FILE_STREAMS_H

#include <FS.h>
#include <initializer_list>

class FStream {
public:
    virtual int read(byte *buf, uint16_t nbyte) = 0;

    virtual int available() const = 0;

    virtual uint32_t size() const = 0;

    virtual const char *name() const = 0;

    virtual void rewind()=0;

    virtual ~FStream() {};
};

class MultiFileStream : public FStream {
private:
    char **files;
    uint32_t p = 0, files_len = 0;
public:
    MultiFileStream(std::initializer_list<const char *> fs);

    virtual int read(byte *buf, uint16_t nbyte) override;

    int available() const override;

    uint32_t size() const override;

    const char *name() const override;

    void rewind() override;

    ~MultiFileStream();

};

#endif //ESP8266_PROJECTS_ROOT_FILE_STREAMS_H
<commit_msg>FStream inherits from Stream<commit_after>#ifndef ESP8266_PROJECTS_ROOT_FILE_STREAMS_H
#define ESP8266_PROJECTS_ROOT_FILE_STREAMS_H

#include <FS.h>
#include <initializer_list>

class FStream : public Stream {
public:
    virtual int read(byte *buf, uint16_t nbyte) = 0;

    virtual int available() const = 0;

    virtual uint32_t size() const = 0;

    virtual const char *name() const = 0;

    virtual void rewind()=0;

    virtual ~FStream() {};
};

class MultiFileStream : public FStream {
private:
    char **files;
    uint32_t p = 0, files_len = 0;
public:
    MultiFileStream(std::initializer_list<const char *> fs);

    virtual int read(byte *buf, uint16_t nbyte) override;

    int available() const override;

    uint32_t size() const override;

    const char *name() const override;

    void rewind() override;

    ~MultiFileStream();

};

#endif //ESP8266_PROJECTS_ROOT_FILE_STREAMS_H

{'fraction_non_alphanumeric': 0.10275126333520494, 'fraction_numerical': 0.03256597417181359, 'mean_word_length': 4.048158640226629, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, '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': '4487602', 'n_tokens_mistral': 653, 'n_tokens_neox': 600, 'n_words': 167}