154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project#ifndef DEVICE_TOOLS_AIDL_H
254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project#define DEVICE_TOOLS_AIDL_H
354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
40aa7fe6876d533610b4b993035030b946cc32e4cAlexey Zaytsev#include <string.h>
554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project#include <string>
654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project#include <vector>
754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectusing namespace std;
954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
1054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectenum {
1154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    COMPILE_AIDL,
1254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    PREPROCESS_AIDL
1354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project};
1454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
1554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project// This struct is the parsed version of the command line options
1654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectstruct Options
1754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{
1854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    int task;
1954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    bool failOnParcelable;
2054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    vector<string> importPaths;
2154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    vector<string> preprocessedFiles;
2254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    string inputFileName;
2354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    string outputFileName;
24ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project    string outputBaseFolder;
2554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    string depFileName;
2618fff11e15dc1b4fe53cb37fa39637aa3fb9bc36Xavier Ducrohet    bool autoDepFile;
2754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
2854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project    vector<string> filesToPreprocess;
2954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project};
3054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
3154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project// takes the inputs from the command line and fills in the Options struct
3254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project// Returns 0 on success, and nonzero on failure.
3354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project// It also prints the usage statement on failure.
3454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectint parse_options(int argc, const char* const* argv, Options *options);
3554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project
3654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project#endif // DEVICE_TOOLS_AIDL_H
37