/* l_ifile.h - declarations for "l_ifile.c".
This is free and unencumbered software released into the public domain.
For more information, please refer to <http://unlicense.org>. */
#ifndef _L_IFILE_H_INCLUDED
#define _L_IFILE_H_INCLUDED
#include "defs.h"
#include <stdbool.h>
#include "l_list.h"
// Include files list structure
#define SRCFL_NONE 0
#define SRCFL_PARSE (1 << 0)
// Entry
struct included_file_entry_t
{
struct list_entry_t list_entry;
unsigned line;
unsigned flags;
char *name;
};
void
included_file_entry_clear
(
struct included_file_entry_t *self
);
void
included_file_entry_free
(
struct included_file_entry_t *self
);
// List
struct included_files_t
{
struct list_t list;
};
void
included_files_clear
(
struct included_files_t *self
);
bool
included_files_add
(
struct included_files_t *self,
unsigned line,
unsigned flags,
const char *name,
struct included_file_entry_t **result
);
// Returns "false" on success ("result" if presents is set to list entry).
bool
included_files_find
(
struct included_files_t *self,
const char *name,
struct included_file_entry_t **result
);
void
included_files_free
(
struct included_files_t *self
);
#endif // !_L_IFILE_H_INCLUDED