summaryrefslogtreecommitdiff
path: root/src/mcpp-include-path.h
blob: 98001f807f58ad406f504bdd1f4c9ba3e6636148 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#ifndef __MCPU_CPP_INCLUDE_PATH_H__
#define __MCPU_CPP_INCLUDE_PATH_H__ 1

#include <defs.h>
#include <mcpp-config-file.h>
#include <mcpp-language.h>

enum mcpu_include_class
{
  MCPU_INCLUDE_USER_EXPLICIT = 0,
  MCPU_INCLUDE_SYSTEM_EXPLICIT,
  MCPU_INCLUDE_USER_CONFIG_LANGUAGE,
  MCPU_INCLUDE_USER_CONFIG,
  MCPU_INCLUDE_SYSTEM_CONFIG_LANGUAGE,
  MCPU_INCLUDE_SYSTEM_CONFIG,
  MCPU_INCLUDE_AFTER_EXPLICIT,
  MCPU_INCLUDE_AFTER_CONFIG
};

typedef struct mcpu_include_dir mcpu_include_dir;
struct mcpu_include_dir
{
  char                    *path;
  enum mcpu_include_class  class_type;
  enum mcpu_language       language;
  int                      language_specific;
  mcpu_include_dir        *next;
};

typedef struct mcpu_include_paths mcpu_include_paths;
struct mcpu_include_paths
{
  mcpu_include_dir *first;
  mcpu_include_dir *last;
  int               no_standard_includes;
};

void mcpu_include_paths_init( mcpu_include_paths *paths );
void mcpu_include_paths_free( mcpu_include_paths *paths );
int  mcpu_include_paths_add( mcpu_include_paths *paths, const char *path,
                             enum mcpu_include_class class_type );
int  mcpu_include_paths_add_language( mcpu_include_paths *paths,
                                      const char *path,
                                      enum mcpu_include_class class_type,
                                      enum mcpu_language language );
int  mcpu_include_paths_add_list( mcpu_include_paths *paths,
                                  const char *list,
                                  enum mcpu_include_class class_type );
int  mcpu_include_paths_from_config( mcpu_include_paths *paths,
                                     const mcpu_config *config );
int  mcpu_include_paths_dump( const mcpu_include_paths *paths, FILE *stream );
char *mcpu_include_find( const mcpu_include_paths *paths,
                         const char *source_filename,
                         const char *include_filename,
                         int quoted,
                         enum mcpu_language language,
                         int include_next,
                         const mcpu_include_dir *after_dir,
                         const mcpu_include_dir **found_dir );

#endif /* __MCPU_CPP_INCLUDE_PATH_H__ */