📄 command_line_generic.h
字号:
/* -*- mode: clanlib -*-
** $Id: command_line_generic.h,v 1.4 2003/10/14 15:52:12 mbn Exp $
**
** ClanLib Game SDK
** Copyright (C) 2003 The ClanLib Team
** For a total list of contributers see the file CREDITS.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef header_core_system_command_line_generic
#define header_core_system_command_line_generic
#if _MSC_VER > 1000
#pragma once
#endif
#include <string>
#include <vector>
#include "API/Core/System/command_line.h"
class CL_CommandLine_Generic
{
private:
int help_indent;
std::string programm;
struct Option
{
int key;
std::string help;
std::string long_option;
std::string argument;
bool visible;
};
typedef std::vector<Option> Options;
Options options;
struct ParsedOption
{
int key;
std::string argument;
};
typedef std::vector<ParsedOption> ParsedOptions;
ParsedOptions parsed_options;
ParsedOptions::iterator current_option;
enum
{
GROUP = -3,
DOC = -4,
USAGE = -5
};
public:
CL_CommandLine_Generic();
void set_help_indent(int i) { help_indent = i; }
void add_usage(const std::string& usage);
void add_doc(const std::string& doc);
void add_group(const std::string& grouptopic);
void add_option(int key,
const std::string& long_option,
const std::string& argument,
const std::string& help,
bool visible = true);
void parse_args(int argc, char** argv);
void print_help();
bool next();
int get_key();
std::string get_argument();
private:
void read_option(int id, const std::string& argument);
/** Find the Option structure that matches \a short_option */
Option* lookup_short_option(char short_option);
/** Find the Option structure that matches \a long_option */
Option* lookup_long_option (const std::string& long_option);
};
#endif
/* EOF */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -