<commit_before>/**
 * @file util.h
 *
 *
 * @brief Utility namespace for general helper functions and classes
 */

#ifndef UTIL_H_
#define UTIL_H_

#include "configuration.h"
#include "grid.h"
#include "himan_common.h"
#include "info.h"
#include "search_options.h"
#include <boost/iterator/zip_iterator.hpp>
#include <memory>
#include <mutex>
#include <tuple>

namespace himan
{
/**
 * @namespace himan::util
 * @brief Namespace for all utility functions and classes
 */
namespace util
{
/**
 * @brief Determine file type by looking at the first few bytes of the file
 * @return Filetype of given argument, one of: grib, netcdf, querydata (or unknown)
 */

HPFileType FileType(const std::string& theFile);

/**
 * @brief Creates a neons-style filename with path, but without file extension
 */

template <typename T>
std::string MakeFileName(const info<T>& info, const plugin_configuration& conf);

/**
 * @brief Splits a string and fills the gaps if requested
 * @param s Input string that should be splitted
 * @param delims String containing the characters that are used in splitting. If string length > 1, all characters are
 * used
 * in splitting
 * @param fill Specify if gaps should be filled. For example string 1-4 can be splitted at - and filled with 2 and 3.<commit_msg>Remove unused includes<commit_after>/**
 * @file util.h
 *
 *
 * @brief Utility namespace for general helper functions and classes
 */

#ifndef UTIL_H_
#define UTIL_H_

#include "configuration.h"
#include "grid.h"
#include "himan_common.h"
#include "info.h"
#include "search_options.h"
#include <boost/iterator/zip_iterator.hpp>
#include <memory>

namespace himan
{
/**
 * @namespace himan::util
 * @brief Namespace for all utility functions and classes
 */
namespace util
{
/**
 * @brief Determine file type by looking at the first few bytes of the file
 * @return Filetype of given argument, one of: grib, netcdf, querydata (or unknown)
 */

HPFileType FileType(const std::string& theFile);

/**
 * @brief Creates a neons-style filename with path, but without file extension
 */

template <typename T>
std::string MakeFileName(const info<T>& info, const plugin_configuration& conf);

/**
 * @brief Splits a string and fills the gaps if requested
 * @param s Input string that should be splitted
 * @param delims String containing the characters that are used in splitting. If string length > 1, all characters are
 * used
 * in splitting
 * @param fill Specify if gaps should be filled. For example string 1-4 can be splitted at - and filled with 2 and 3.
{'fraction_non_alphanumeric': 0.09767625049231982, 'fraction_numerical': 0.003938558487593541, 'mean_word_length': 4.392781316348195, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 15, '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': '6056080', 'n_tokens_mistral': 754, 'n_tokens_neox': 731, 'n_words': 317}