<commit_before>/**
 *  For conditions of distribution and use, see copyright notice in license.txt
 *
 *  @file   ComponentInterface.h
 *  @brief  Base class for all components. Inherit from this class when creating new components.
 */

#ifndef incl_Interfaces_ComponentInterface_h
#define incl_Interfaces_ComponentInterface_h

#include "ForwardDefines.h"
#include "AttributeChangeType.h"
#include "AttributeInterface.h"
#include "EventDataInterface.h"
#include "CoreTypes.h"

#include <QObject>

#include <set>

class QDomDocument;
class QDomElement;

namespace Foundation
{
    //! Base class for all components. Inherit from this class when creating new components.
    /*! Use the ComponentInterface typedef to refer to the abstract component type.
    */
    class ComponentInterface : public QObject
    {
        friend class AttributeInterface;

        Q_OBJECT
        Q_PROPERTY(QString Name READ Name)

    public:
        //! Constuctor.
        explicit ComponentInterface(Framework* framework);

        //! Copy-constructor.
        ComponentInterface(const ComponentInterface& rhs);

        //! Destructor.
        virtual ~ComponentInterface();
<commit_msg>GCC fix?<commit_after>/**
 *  For conditions of distribution and use, see copyright notice in license.txt
 *
 *  @file   ComponentInterface.h
 *  @brief  Base class for all components. Inherit from this class when creating new components.
 */

#ifndef incl_Interfaces_ComponentInterface_h
#define incl_Interfaces_ComponentInterface_h

#include "ForwardDefines.h"
#include "AttributeChangeType.h"
#include "AttributeInterface.h"
#include "EventDataInterface.h"
#include "CoreTypes.h"

#include <QObject>

#include <set>

class QDomDocument;
class QDomElement;

namespace Foundation
{
    //! Base class for all components. Inherit from this class when creating new components.
    /*! Use the ComponentInterface typedef to refer to the abstract component type.
    */
    class ComponentInterface : public QObject
    {
        friend class ::AttributeInterface;

        Q_OBJECT
        Q_PROPERTY(QString Name READ Name)

    public:
        //! Constuctor.
        explicit ComponentInterface(Framework* framework);

        //! Copy-constructor.
        ComponentInterface(const ComponentInterface& rhs);

        //! Destructor.
        virtual ~ComponentInterface();

{'fraction_non_alphanumeric': 0.07960834397616007, 'fraction_numerical': 0.0, 'mean_word_length': 3.519230769230769, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, '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': '4016209', 'n_tokens_mistral': 613, 'n_tokens_neox': 607, 'n_words': 201}