Foundations

This commit is contained in:
2026-08-29 01:50:50 +08:00
parent bf5fc3bda6
commit 8e95904cc4
100 changed files with 13997 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
#ifndef INCLUDED_C_FILEITER_H
#define INCLUDED_C_FILEITER_H
#ifndef INCLUDED_C_TYPES_H
#include <c_Types.h>
#endif /*INCLUDED_C_TYPES_H*/
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
// 文件类型枚举
typedef enum {
C_FILE_TYPE_REGULAR, // 普通文件
C_FILE_TYPE_DIR, // 目录
C_FILE_TYPE_UNKNOWN // 未知
} c_FileType_t;
// 迭代器当前指向的文件/目录条目信息
typedef struct {
char name[256]; // 文件/文件夹名称
c_FileType_t type; // 类型
unsigned long long size; // 文件大小(适配大文件)
} c_FileEntry_t;
// 迭代器结构体定义(隐藏平台差异)
typedef struct {
void* internal_ctx; // 内部上下文指针,用于隔离平台的目录句柄状态
c_FileEntry_t current; // 当前读取到的条目缓存
int has_next; // 是否还有下一个有效条目的状态标识
char base_path[256]; // 记录初始目录路径(Remove 函数需要拼接完整路径)
} c_FileIter_t;
/* ------------------------------------------------------------------------------------------------------------------ */
/* 目录迭代器 API */
/**
* @brief 初始化目录迭代器,并预读第一个有效条目
*/
c_err_t c_FileIter_Init(c_FileIter_t* iter, const char* dirpath);
/**
* @brief 判断是否还有下一个条目
*/
c_bool_t c_FileIter_HasNext(c_FileIter_t* iter);
/**
* @brief 步进到下一个有效的条目,并自动过滤 "." 和 ".."
*/
void c_FileIter_Next(c_FileIter_t* iter);
/**
* @brief 获取当前条目的只读指针
*/
const c_FileEntry_t* c_FileIter_Get(c_FileIter_t* iter);
/**
* @brief 删除当前迭代器指向的文件或空目录,并自动安全释放迭代器资源
*/
c_err_t c_FileIter_Remove(c_FileIter_t* iter);
#endif /*INCLUDED_C_FILEITER_H*/