<commit_before>//Copyright (c) 2021 <NAME>.V.
//CuraEngine is released under the terms of the AGPLv3 or higher.

#ifndef GCODE_WRITER_H
#define GCODE_WRITER_H

#include <fstream>
#include "FanSpeedLayerTime.h"
#include "gcodeExport.h"
#include "LayerPlanBuffer.h"
#include "settings/PathConfigStorage.h" //For the MeshPathConfigs subclass.
#include "utils/NoCopy.h"

namespace cura 
{

class AngleDegrees;
class Polygons;
class SkinPart;
class SliceDataStorage;
class SliceMeshStorage;
class SliceLayer;
class SliceLayerPart;
class TimeKeeper;

/*!
 * Secondary stage in Fused Filament Fabrication processing: The generated polygons are used in the gcode generation.
 * Some polygons in the SliceDataStorage signify areas which are to be filled with parallel lines, 
 * while other polygons signify the contours which should be printed.
 * 
 * The main function of this class is FffGcodeWriter::writeGCode().
 */
class FffGcodeWriter : public NoCopy
{
    friend class Scene; // cause WireFrame2Gcode uses the member [gcode] (TODO)
    friend class FffProcessor; //Because FffProcessor exposes finalize (TODO)<commit_msg>Added include of the optional headers<commit_after>//Copyright (c) 2021 <NAME>.
//CuraEngine is released under the terms of the AGPLv3 or higher.

#ifndef GCODE_WRITER_H
#define GCODE_WRITER_H

#include <fstream>
#include <optional>
#include "FanSpeedLayerTime.h"
#include "gcodeExport.h"
#include "LayerPlanBuffer.h"
#include "settings/PathConfigStorage.h" //For the MeshPathConfigs subclass.
#include "utils/NoCopy.h"

namespace cura 
{

class AngleDegrees;
class Polygons;
class SkinPart;
class SliceDataStorage;
class SliceMeshStorage;
class SliceLayer;
class SliceLayerPart;
class TimeKeeper;

/*!
 * Secondary stage in Fused Filament Fabrication processing: The generated polygons are used in the gcode generation.
 * Some polygons in the SliceDataStorage signify areas which are to be filled with parallel lines, 
 * while other polygons signify the contours which should be printed.
 * 
 * The main function of this class is FffGcodeWriter::writeGCode().
 */
class FffGcodeWriter : public NoCopy
{
    friend class Scene; // cause WireFrame2Gcode uses the member [gcode] (TODO)
    friend class FffProcessor; //Because FffProcessor exposes finalize (TODO)
{'fraction_non_alphanumeric': 0.07618213660245184, 'fraction_numerical': 0.005253940455341506, 'mean_word_length': 5.159029649595688, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 8, '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': '7351003', 'n_tokens_mistral': 722, 'n_tokens_neox': 684, 'n_words': 254}