<commit_before>#ifndef GUARD_FS_PATH_H
#define GUARD_FS_PATH_H 1

#include <cstdint>
#include <string>
#include <vector>

#include "path_traits.h"

namespace filesystem {
inline namespace v1 {

	class path
	{
	 public:
		typedef char value_type;
		typedef std::basic_string<value_type> string_type;
		static constexpr value_type preferred_separator = '/';

		// constructors and destructor
		path() noexcept;
		path(const path & p);
		path(path && p) noexcept;

		~path();

		// assignments
		path & operator = (const path & p);
		path & operator = (path && p) noexcept;

		template <class Source,
			      typename std::enable_if<
		              path_traits::is_path_initializer<
		                  Source>::is_ntcts_terminated,
			          Source*>::type = nullptr>
		path(const Source & src);

		template <class Source,
			      typename std::enable_if<
		              ! path_traits::is_path_initializer<
		                  Source>::is_ntcts_terminated,
		              Source*>::type = nullptr>
		path(const Source & src);

#if 0
		template <class InputIterator>
		 path(InputIterator first, InputIterator last);
		template <class Source>
		 path(const Source & source, const std::locale & loc);
		template <class InputIterator>
		 path(InputIterator first, InputIterator last, const std::locale & loc);

		template <class Source>
		 path & operator = (const Source & source);
		template <class Source>
		 path & assign(const Source & source);
		template <class InputIterator>
		 path & assign(InputIterator first, InputIterator last);

#endif
		// appends
		path & operator /= (const path & p);
#if 0

		template <class Source>
		 path & operator /= (const Source & source);
		template <class Source>
		 path & append(const Source & source);
		template <class InputIterator>
		 path & append(InputIterator first, InputIterator last);

		// concatenation
		path & operator += (const path & x);
		path & operator += (const string_type & x);
		path & operator += (const value_type * x);
		path & operator += (value_type x);

		template <class Source>
		 path & operator += (const Source & x);
		template <class EcharT>
		 path & operator += (EcharT x);
		template <class Source>
		 path & concat(const Source & x);
		template <class InputIterator>
		 path & concat(InputIterator first, InputIterator last);

#endif
		// modifiers
		void clear() noexcept;
		path & make_preferred();<commit_msg>un-if-def'ing operators that got hidden in the shuffle<commit_after>#ifndef GUARD_FS_PATH_H
#define GUARD_FS_PATH_H 1

#include <cstdint>
#include <string>
#include <vector>

#include "path_traits.h"

namespace filesystem {
inline namespace v1 {

	class path
	{
	 public:
		typedef char value_type;
		typedef std::basic_string<value_type> string_type;
		static constexpr value_type preferred_separator = '/';

		// constructors and destructor
		path() noexcept;
		path(const path & p);
		path(path && p) noexcept;

		~path();

		// assignments
		path & operator = (const path & p);
		path & operator = (path && p) noexcept;

		template <class Source,
			      typename std::enable_if<
		              path_traits::is_path_initializer<
		                  Source>::is_ntcts_terminated,
			          Source*>::type = nullptr>
		path(const Source & src);

		template <class Source,
			      typename std::enable_if<
		              ! path_traits::is_path_initializer<
		                  Source>::is_ntcts_terminated,
		              Source*>::type = nullptr>
		path(const Source & src);

#if 0
		template <class InputIterator>
		 path(InputIterator first, InputIterator last);
		template <class Source>
		 path(const Source & source, const std::locale & loc);
		template <class InputIterator>
		 path(InputIterator first, InputIterator last, const std::locale & loc);

		template <class Source>
		 path & operator = (const Source & source);
		template <class Source>
		 path & assign(const Source & source);
		template <class InputIterator>
		 path & assign(InputIterator first, InputIterator last);

#endif
		// appends
		path & operator /= (const path & p);
#if 0

		template <class Source>
		 path & operator /= (const Source & source);
		template <class Source>
		 path & append(const Source & source);
		template <class InputIterator>
		 path & append(InputIterator first, InputIterator last);

#endif
		// concatenation
		path & operator += (const path & x);
		path & operator += (const string_type & x);
		path & operator += (const value_type * x);
		path & operator += (value_type x);

#if 0
		template <class Source>
		 path & operator += (const Source & x);
		template <class EcharT>
		 path & operator += (EcharT x);
		template <class Source>
		 path & concat(const Source & x);
		template <class InputIterator>
		 path & concat(InputIterator first, InputIterator last);

#endif
		// modifiers
		void clear() noexcept;
		path & make_preferred();
{'fraction_non_alphanumeric': 0.10980634528224145, 'fraction_numerical': 0.001854140914709518, 'mean_word_length': 3.3936651583710407, 'pattern_counts': {'":': 0, '<': 49, '<?xml version=': 0, '>': 49, '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': '1319282', 'n_tokens_mistral': 1619, 'n_tokens_neox': 1390, 'n_words': 445}