• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

MyGUI_DocArray.cpp

Go to the documentation of this file.
00001 
00007 /*
00008     This file is part of MyGUI.
00009     
00010     MyGUI is free software: you can redistribute it and/or modify
00011     it under the terms of the GNU Lesser General Public License as published by
00012     the Free Software Foundation, either version 3 of the License, or
00013     (at your option) any later version.
00014     
00015     MyGUI 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 Lesser General Public License for more details.
00019     
00020     You should have received a copy of the GNU Lesser General Public License
00021     along with MyGUI.  If not, see <http://www.gnu.org/licenses/>.
00022 */
00023 
00024 #include "MyGUI_Precompiled.h"
00025 #include "MyGUI_Any.h"
00026 
00027 namespace MyGUI
00028 {
00029     namespace demonstrate
00030     {
00031 
00032         // этот класс не для использования, а для соблюдения некоего общего интерфейса для всех классов контейнеров
00035         class IArray
00036         {
00037 
00038         public:
00039 
00040             //------------------------------------------------------------------------------//
00041             // обобщеный интерфейс для работы с элементами
00042 
00043             // типы для массива
00044             typedef void * ItemType;
00045             typedef const std::string NameType;
00046 
00047             //------------------------------------------------------------------------------//
00048             // манипуляции айтемами
00049 
00051             size_t getItemCount() { return 0; }
00052 
00054             ItemType insertItemAt(size_t _index, NameType _name, Any _data = Any::Null) { return nullptr; }
00056             ItemType insertItem(ItemType _to, NameType _name, Any _data = Any::Null) { return insertItemAt(getItemIndex(_to), _name, _data); }
00057 
00059             ItemType replaceItemAt(size_t _index, NameType _name, Any _data = Any::Null) { return nullptr; }
00061             ItemType replaceItem(ItemType _replace, NameType _name, Any _data = Any::Null) { return replaceItemAt(getItemIndex(_replace), _name, _data); }
00062 
00064             ItemType addItem(NameType _name, Any _data = Any::Null) { return insertItemAt(ITEM_NONE, _name, _data); }
00065 
00067             void removeItemAt(size_t _index) { }
00068 
00070             void removeItem(ItemType _item) { removeItemAt(getItemIndex(_item)); }
00071 
00073             void removeAllItems() { }
00074 
00076             void swapItemsAt(size_t _index1, size_t _index2) { }
00077 
00079             void swapItems(ItemType _item1, ItemType _item2) { }
00080 
00081 
00082 
00084             ItemType getItemAt(size_t _index) { return nullptr; }
00085 
00087             size_t getItemIndex(ItemType _item) { return ITEM_NONE; }
00088 
00090             size_t findItemIndex(ItemType _item) { return ITEM_NONE; }
00091 
00093             size_t findItemIndexWith(NameType _name) { return ITEM_NONE; }
00094 
00096             ItemType findItemWith(NameType _name) { return nullptr; }
00097 
00098 
00099             //------------------------------------------------------------------------------//
00100             // манипуляции выделениями
00101 
00103             size_t getIndexSelected() { return ITEM_NONE; }
00104 
00106             ItemType getItemSelected() { return getIndexSelected() != ITEM_NONE ? getItemAt(getIndexSelected()) : nullptr; }
00107 
00109             void setIndexSelected(size_t _value) { }
00110 
00112             void setItemSelected(ItemType _item) { setIndexSelected(getItemIndex(_item)); }
00113 
00115             void clearIndexSelected() { setIndexSelected(ITEM_NONE); }
00116 
00117 
00118             //------------------------------------------------------------------------------//
00119             // манипуляции данными
00120 
00122             void setItemDataAt(size_t _index, Any _data) { }
00123 
00125             void setItemData(ItemType _item, Any _data) { setItemDataAt(getItemIndex(_item), _data); }
00126 
00128             void clearItemDataAt(size_t _index) { setItemDataAt(_index, Any::Null); }
00129 
00131             void clearItemData(ItemType _item) { clearItemDataAt(getItemIndex(_item)); }
00132 
00134             template <typename ValueType>
00135             ValueType * getItemDataAt(size_t _index, bool _throw = true) { return nullptr; }
00136 
00138             template <typename ValueType>
00139             ValueType * getItemData(ItemType _item, bool _throw = true)
00140             {
00141                 return getItemData<ValueType>(getItemIndex(_item), _throw);
00142             }
00143 
00144 
00145             //------------------------------------------------------------------------------//
00146             // манипуляции отображением
00147 
00149             void setItemNameAt(size_t _index, NameType _name);
00150 
00152             void setItemName(ItemType _item, NameType _name) { setItemNameAt(getItemIndex(_item), _name); }
00153 
00155             NameType getItemNameAt(size_t _index) { return NameType(); }
00156 
00158             NameType getItemName(ItemType _item) { return getItemNameAt(getItemIndex(_item)); }
00159 
00160 
00161             //------------------------------------------------------------------------------//
00162             // манипуляции выдимостью
00163 
00165             void beginToItemAt(size_t _index) { }
00166 
00168             void beginToItem(ItemType _item) { beginToItemAt(getItemIndex(_item)); }
00169 
00171             void beginToItemFirst() { if (getItemCount()) beginToItemAt(0); }
00172 
00174             void beginToItemLast() { if (getItemCount()) beginToItemAt(getItemCount() - 1); }
00175 
00177             void beginToItemSelected() { if (getIndexSelected() != ITEM_NONE) beginToItemAt(getIndexSelected()); }
00178 
00179             //------------------------------------------------------------------------------//
00180 
00181         };
00182 
00183     } // namespace demonstrate
00184 } // namespace MyGUI

Generated on Sun Jan 30 2011 for MyGUI by  doxygen 1.7.1