* This file is part of the MindStudio project.
* Copyright (c) 2025 Huawei Technologies Co.,Ltd.
*
* MindStudio is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* ------------------------------------------------------------------------- */
#ifndef CONST_H
#define CONST_H
#include <cstdint>
#include <string>
#include <vector>
#include <map>
#include <regex>
#include <fcntl.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>
namespace MsConst {
constexpr size_t MAX_BIN_SIZE = 10ULL * 1024 * 1024 * 1024;
constexpr size_t MAX_JSON_SIZE = 1024ULL * 1024 * 1024;
constexpr size_t MAX_CSV_SIZE = 1024ULL * 1024 * 1024;
constexpr size_t MAX_FILE_SIZE_DEFAULT = 10ULL * 1024 * 1024 * 1024;
constexpr int DIR_CHECK_MODE = R_OK | W_OK | X_OK;
constexpr const char PATH_SEPARATOR = '/';
constexpr const char* FILE_VALID_PATTERN = "^[a-zA-Z0-9_./-]+$";
constexpr const char* NORMAL_STRING_VALID_PATTERN = "^[_A-Za-z0-9\"'><=\\[\\])(,}{: /.~-]+$";
constexpr const uint32_t FULL_PATH_LENGTH_MAX = 4096;
constexpr const uint32_t FILE_NAME_LENGTH_MAX = 255;
constexpr const size_t PATH_DEPTH_MAX = 32;
constexpr mode_t NORMAL_FILE_MODE_DEFAULT = 0640;
constexpr mode_t READONLY_FILE_MODE_DEFAULT = 0440;
constexpr mode_t SCRIPT_FILE_MODE_DEFAULT = 0550;
constexpr mode_t NORMAL_DIR_MODE_DEFAULT = 0750;
constexpr mode_t MAX_PERMISSION = 0777;
constexpr mode_t READ_FILE_NOT_PERMITTED = S_IWGRP | S_IWOTH;
constexpr mode_t WRITE_FILE_NOT_PERMITTED = S_IWGRP | S_IWOTH | S_IROTH | S_IXOTH;
constexpr mode_t CREATE_FILE_MODE_DEFAULT = O_EXCL | O_CREAT;
const size_t DEFAULT_STRING_MAX_LEN = 4096;
enum class SAFETY_RET {
SAFE_ERR_NONE,
SAFE_ERR_PATH_IS_EXIST,
SAFE_ERR_FILE_TO_READ_ILLEGAL,
SAFE_ERR_FILE_TO_WRITE_ILLEGAL,
SAFE_ERR_EXIST_DIR_ILLEGAL,
SAFE_ERR_CREATE_DIR_FAILED,
SAFE_ERR_STR_OVER_MAX_LEN,
SAFE_ERR_STR_CONTAIN_ILLEGAL_CHAR
};
enum class OPERATE_MODE {
READ,
WRITE,
};
enum class SUFFIX {
NONE,
BIN,
JSON,
CSV,
};
const std::map<SUFFIX, std::pair<std::string, size_t>> SUFFIX_TYPE_TABLE = {
{SUFFIX::BIN, {"bin", MAX_BIN_SIZE}},
{SUFFIX::JSON, {"json", MAX_JSON_SIZE}},
{SUFFIX::CSV, {"csv", MAX_CSV_SIZE}},
};
}
#endif