forked from hiraditya/cpp2cxx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ConfigScheme.h
85 lines (71 loc) · 3.17 KB
/
ConfigScheme.h
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/**
cpp2cxx is an open source software distributed under terms of the
Apache2.0 licence.
Copyrights remain with the original copyright holders.
Use of this material is by permission and/or license.
Copyright [2012] Aditya Kumar, Andrew Sutton, Bjarne Stroustrup
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#ifndef CONFIGSCHEME_H
#define CONFIGSCHEME_H
/**
* @file ConfigScheme.h
* @class ConfigScheme
* @note defines the specifications for demacrofication
* 1. To demacrofy one macro at a time or one file at a time
* 2. Enable the warning flag or not
* 3. Where should the errors to be put to stderr or stdout or to some file
* 4. Where should the warnings to be put to stderr or stdout or to some file
* 5. Whether to demacrofy the configurational macros or not
* 6. Whether to invoke compiler/make command for each file demacrofied or not
*/
#include "FileManagerScheme.h"
#include "DemacroficationScheme.h"
#include "BuildScheme.h"
#include<iostream>
#include<vector>
#include<string>
#include<set>
class ConfigScheme {
public:
ConfigScheme();
~ConfigScheme();
void SetFileManagerScheme(std::vector<std::string>const& input_files,
std::vector<std::string>const& output_files,
std::vector<std::string>const& search_paths,
std::string const& input_directory,
std::string const& output_directory,
std::string const& backup_directory,
std::string const& cleanup_directory,
std::string const& validator_file,
std::ostream* log_file,
std::ostream* stat_file,
std::ostream* macro_list_file
);
/// @todo demacrofication granularity to be implemented
void SetDemacroficationScheme(std::string const& demac_gran,
std::vector<std::string> const& mac_prev_demac,
bool enable_warning,
std::string const& global_mac_raw,
std::string const& global_mac_formatted,
bool multiple_definitions,
bool cleanup
);
void SetBuildScheme(std::string const& make_command);
FileManagerScheme& GetFileManagerScheme();
DemacroficationScheme& GetDemacroficationScheme();
BuildScheme& GetBuildScheme();
private:
FileManagerScheme* pFileManagerScheme;
DemacroficationScheme* pDemacroficationScheme;
BuildScheme* pBuildScheme;
};
#endif /*CONFIGSCHEME_H*/