<commit_before>/*
Copyright libCellML Contributors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

#pragma once

#include <string>

#include "libcellml/logger.h"
#include "libcellml/model.h"
#include "libcellml/types.h"
#include "libcellml/units.h"

#ifndef SWIG
template class LIBCELLML_EXPORT std::weak_ptr<libcellml::Parser>;
#endif

namespace libcellml {

/**
 * @brief The Parser class.
 *
 * The Parser class is for representing a CellML Parser.
 */
class LIBCELLML_EXPORT Parser: public Logger
#ifndef SWIG
    ,
                               public std::enable_shared_from_this<Parser>
#endif
{
public:
    ~Parser() override; /**< Destructor */
    Parser(const Parser &rhs) = delete; /**< Copy constructor */
    Parser(Parser &&rhs) noexcept = delete; /**< Move constructor */
    Parser &operator=(Parser rhs) = delete; /**< Assignment operator */

    /**
     * @brief Create a @c Parser object.
     *<commit_msg>Removing shared from this from parser<commit_after>/*
Copyright libCellML Contributors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

#pragma once

#include <string>

#include "libcellml/logger.h"
#include "libcellml/model.h"
#include "libcellml/types.h"
#include "libcellml/units.h"

namespace libcellml {

/**
 * @brief The Parser class.
 *
 * The Parser class is for representing a CellML Parser.
 */
class LIBCELLML_EXPORT Parser: public Logger
{
public:
    ~Parser() override; /**< Destructor */
    Parser(const Parser &rhs) = delete; /**< Copy constructor */
    Parser(Parser &&rhs) noexcept = delete; /**< Move constructor */
    Parser &operator=(Parser rhs) = delete; /**< Assignment operator */

    /**
     * @brief Create a @c Parser object.
     *
{'fraction_non_alphanumeric': 0.09864457831325302, 'fraction_numerical': 0.0030120481927710845, 'mean_word_length': 3.857404021937843, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, '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': '5870284', 'n_tokens_mistral': 774, 'n_tokens_neox': 746, 'n_words': 301}