34 lines
677 B
C++
34 lines
677 B
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <map>
|
|
|
|
struct vfs_node;
|
|
|
|
/* Store children for quick lookup by name. */
|
|
typedef std::map<std::string, vfs_node*> vfs_child_map;
|
|
|
|
enum vfs_node_type {
|
|
FILE_NODE,
|
|
DIR_NODE
|
|
};
|
|
|
|
struct vfs_node {
|
|
long long id;
|
|
long long parent_id; /* Used durin DB loading only. */
|
|
std::string name;
|
|
vfs_node_type type;
|
|
|
|
/* Files. */
|
|
std::string content;
|
|
|
|
/* Directories. */
|
|
vfs_child_map children;
|
|
vfs_node* parent;
|
|
};
|
|
|
|
vfs_node* new_node(std::string name, vfs_node_type type, vfs_node* parent);
|
|
vfs_node* find_node_by_id(vfs_node* root, long long id);
|
|
std::string get_full_path(vfs_node* node);
|
|
void delete_vfs_tree(vfs_node* node);
|