198aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski#ifndef AAPT_FLAG_H
298aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski#define AAPT_FLAG_H
398aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski
498aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski#include "StringPiece.h"
598aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski
698aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski#include <functional>
798aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski#include <string>
898aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski#include <vector>
998aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski
1098aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinskinamespace aapt {
1198aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinskinamespace flag {
1298aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski
1398aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinskivoid requiredFlag(const StringPiece& name, const StringPiece& description,
1498aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski                  std::function<void(const StringPiece&)> action);
1598aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski
16d13fb249865703901b77f48c5fed1864f06e1c63Adam Lesinskivoid requiredFlag(const StringPiece& name, const StringPiece& description,
17d13fb249865703901b77f48c5fed1864f06e1c63Adam Lesinski                  std::function<bool(const StringPiece&, std::string*)> action);
18d13fb249865703901b77f48c5fed1864f06e1c63Adam Lesinski
1998aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinskivoid optionalFlag(const StringPiece& name, const StringPiece& description,
2098aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski                  std::function<void(const StringPiece&)> action);
2198aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski
225886a92eb6dde5a406a62926f2914a908ca18d35Adam Lesinskivoid optionalSwitch(const StringPiece& name, const StringPiece& description, bool resultWhenSet,
235886a92eb6dde5a406a62926f2914a908ca18d35Adam Lesinski                    bool* result);
2498aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski
25769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinskivoid usageAndDie(const StringPiece& command);
26769de98f2dd41bfe39a1c9f76aefd1ad58942733Adam Lesinski
2798aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinskivoid parse(int argc, char** argv, const StringPiece& command);
2898aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski
2998aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinskiconst std::vector<std::string>& getArgs();
3098aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski
3198aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski} // namespace flag
3298aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski} // namespace aapt
3398aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski
3498aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski#endif // AAPT_FLAG_H
35