Fawkes API  Fawkes Development Version
enum_constant.h
00001  
00002 /***************************************************************************
00003  *  enum_constant.h - Interface generator enum constant representation
00004  *
00005  *  Generated: Wed Oct 11 19:40:37 2006
00006  *  Copyright  2006  Tim Niemueller [www.niemueller.de]
00007  *
00008  ****************************************************************************/
00009 
00010 /*  This program is free software; you can redistribute it and/or modify
00011  *  it under the terms of the GNU General Public License as published by
00012  *  the Free Software Foundation; either version 2 of the License, or
00013  *  (at your option) any later version.
00014  *
00015  *  This program is distributed in the hope that it will be useful,
00016  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  *  GNU Library General Public License for more details.
00019  *
00020  *  Read the full text in the LICENSE.GPL file in the doc directory.
00021  */
00022 
00023 #ifndef __INTERFACES_GENERATOR_ENUM_CONSTANT_H_
00024 #define __INTERFACES_GENERATOR_ENUM_CONSTANT_H_
00025 
00026 #include <string>
00027 #include <vector>
00028 #include <utility>
00029 
00030 class InterfaceEnumConstant
00031 {
00032  public:
00033   /** Enumeration item. */
00034   typedef struct {
00035     std::string name;                   ///< Name of item.
00036     std::string comment;                ///< Comment for item.
00037     bool        has_custom_value;       ///< True if custom value set.
00038     int         custom_value;           ///< Custom value.
00039   } EnumItem;
00040 
00041   InterfaceEnumConstant(const std::string &name, const std::string &comment);
00042 
00043   std::string get_name();
00044   std::string get_comment();
00045   std::vector<EnumItem> get_items();
00046   void add_item(std::string name, std::string comment);
00047   void add_item(std::string name, std::string comment, int value);
00048 
00049  private:
00050 
00051   std::string __name;
00052   std::string __comment;
00053   std::vector<EnumItem> __items;
00054 };
00055 
00056 #endif