]> git.mxchange.org Git - simgear.git/commitdiff
Improve (mostly Canvas event related) documentation.
authorThomas Geymayer <tomgey@gmail.com>
Tue, 29 Jul 2014 21:04:45 +0000 (23:04 +0200)
committerThomas Geymayer <tomgey@gmail.com>
Tue, 29 Jul 2014 21:57:59 +0000 (23:57 +0200)
30 files changed:
Doxyfile
simgear/canvas/Canvas.hxx
simgear/canvas/CanvasEvent.cxx
simgear/canvas/CanvasEvent.hxx
simgear/canvas/CanvasEventTypes.hxx
simgear/canvas/CanvasObjectPlacement.hxx
simgear/canvas/elements/CanvasElement.hxx
simgear/canvas/events/CustomEvent.hxx
simgear/canvas/events/DeviceEvent.hxx
simgear/canvas/events/KeyboardEvent.hxx
simgear/canvas/events/MouseEvent.hxx
simgear/canvas/layout/BoxLayout.hxx
simgear/canvas/layout/Layout.hxx
simgear/canvas/layout/LayoutItem.hxx
simgear/canvas/layout/NasalWidget.hxx
simgear/canvas/layout/SpacerItem.hxx
simgear/io/HTTPFileRequest.hxx
simgear/io/HTTPMemoryRequest.hxx
simgear/io/HTTPRequest.cxx
simgear/io/HTTPRequest.hxx
simgear/misc/SVGpreserveAspectRatio.hxx
simgear/misc/SimpleMarkdown.hxx
simgear/nasal/cppbind/NasalContext.hxx
simgear/nasal/cppbind/NasalHash.hxx
simgear/nasal/cppbind/NasalObject.hxx
simgear/nasal/cppbind/NasalObjectHolder.hxx
simgear/nasal/cppbind/NasalString.hxx
simgear/props/easing_functions.cxx
simgear/structure/function_list.hxx
simgear/structure/map.hxx

index 0017d442e4650634f81db9b6c7699ddeeca02e78..f4aa9c6cc1184eef9331003d16fe4b85c95d1cf6 100644 (file)
--- a/Doxyfile
+++ b/Doxyfile
@@ -1923,7 +1923,7 @@ ENABLE_PREPROCESSING   = YES
 # The default value is: NO.
 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
-MACRO_EXPANSION        = NO
+MACRO_EXPANSION        = YES
 
 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
 # the macro expansion is limited to the macros specified with the PREDEFINED and
index 8501b50418ae7b1ac9f82592ca4206c01dbb1a44..42c28632fcf9ed973855fc00015f38372540c646 100644 (file)
@@ -1,4 +1,5 @@
-///@file The canvas for rendering with the 2d API
+///@file
+/// The canvas for rendering with the 2d API
 //
 // Copyright (C) 2012  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -43,6 +44,9 @@ namespace canvas
   class CanvasMgr;
   class MouseEvent;
 
+  /**
+   * Canvas to draw onto (to an off-screen render target).
+   */
   class Canvas:
     public PropertyBasedElement,
     public nasal::Object
index 6c2684bc47ef724fc545b2557059d426bd6a9503..447865517d02435b14ab561506d31d3602a74bd3 100644 (file)
@@ -125,7 +125,7 @@ namespace canvas
 
     if( type_map.empty() )
     {
-#   define ENUM_MAPPING(type, str)\
+#   define ENUM_MAPPING(type, str, class_name)\
       type_map.insert(TypeMap::value_type(str, type));
 #     include "CanvasEventTypes.hxx"
 #   undef ENUM_MAPPING
index 6d81d134ee6ac34d35822d8687e2f985c6951aef..92ccdf19ad4a0dace543a8e6f99781655fd334f8 100644 (file)
@@ -1,4 +1,5 @@
-// Canvas Event for event model similar to DOM Level 3 Event Model
+/// @file
+/// Canvas Event for event model similar to DOM Level 3 Event Model
 //
 // Copyright (C) 2012  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -27,19 +28,28 @@ namespace simgear
 namespace canvas
 {
 
+  /**
+   * Base class for all Canvas events.
+   *
+   * The event system is closely following the specification of the DOM Level 3
+   * Event Model.
+   */
   class Event:
     public SGReferenced
   {
     public:
 
+      /// Event type identifier
       enum Type
       {
         UNKNOWN,
-#       define ENUM_MAPPING(name, str) name,
+#       define ENUM_MAPPING(name, str, class_name)\
+                 name, /*!< class_name (type=str) */
 #         include "CanvasEventTypes.hxx"
 #       undef ENUM_MAPPING
-        CUSTOM_EVENT ///< all user defined event types share the same id. They
-                     ///  are just differentiated by using the type string.
+        CUSTOM_EVENT ///< First event type id available for user defined event
+                     ///  type.
+                     /// @see CustomEvent
       };
 
       int               type;
index 5f36ba1c94b70ba3c60a0fcd9dc9a4ce0e326c50..8003b7cb4b2313c8599d732fdd6208f0cae5e9c1 100644 (file)
 # error "Don't include this file directly!"
 #endif
 
-ENUM_MAPPING(MOUSE_DOWN,  "mousedown")
-ENUM_MAPPING(MOUSE_UP,    "mouseup")
-ENUM_MAPPING(CLICK,       "click")
-ENUM_MAPPING(DBL_CLICK,   "dblclick")
-ENUM_MAPPING(DRAG,        "drag")
-ENUM_MAPPING(WHEEL,       "wheel")
-ENUM_MAPPING(MOUSE_MOVE,  "mousemove")
-ENUM_MAPPING(MOUSE_OVER,  "mouseover")
-ENUM_MAPPING(MOUSE_OUT,   "mouseout")
-ENUM_MAPPING(MOUSE_ENTER, "mouseenter")
-ENUM_MAPPING(MOUSE_LEAVE, "mouseleave")
-ENUM_MAPPING(KEY_DOWN, "keydown")
-ENUM_MAPPING(KEY_UP, "keyup")
+ENUM_MAPPING(MOUSE_DOWN,  "mousedown",  MouseEvent)
+ENUM_MAPPING(MOUSE_UP,    "mouseup",    MouseEvent)
+ENUM_MAPPING(CLICK,       "click",      MouseEvent)
+ENUM_MAPPING(DBL_CLICK,   "dblclick",   MouseEvent)
+ENUM_MAPPING(DRAG,        "drag",       MouseEvent)
+ENUM_MAPPING(WHEEL,       "wheel",      MouseEvent)
+ENUM_MAPPING(MOUSE_MOVE,  "mousemove",  MouseEvent)
+ENUM_MAPPING(MOUSE_OVER,  "mouseover",  MouseEvent)
+ENUM_MAPPING(MOUSE_OUT,   "mouseout",   MouseEvent)
+ENUM_MAPPING(MOUSE_ENTER, "mouseenter", MouseEvent)
+ENUM_MAPPING(MOUSE_LEAVE, "mouseleave", MouseEvent)
+ENUM_MAPPING(KEY_DOWN,    "keydown",    KeyboardEvent)
+ENUM_MAPPING(KEY_UP,      "keyup",      KeyboardEvent)
index d2e2bee718cc5fb4ff477bec764b4a8b166ce964..a97aeb6e095dd41b537b2cf7ab66eb2777e96e0b 100644 (file)
@@ -1,7 +1,8 @@
-///@file Placement for putting a canvas texture onto OpenSceneGraph objects.
-//
-// It also provides a SGPickCallback for passing mouse events to the canvas and
-// manages emissive lighting of the placed canvas.
+///@file
+/// Placement for putting a canvas texture onto OpenSceneGraph objects.
+///
+/// It also provides a SGPickCallback for passing mouse events to the canvas and
+/// manages emissive lighting of the placed canvas.
 //
 // Copyright (C) 2013  Thomas Geymayer <tomgey@gmail.com>
 //
index 242c22021b2b2b8adf129abef1311173a8c53272..a0d2bb18e287445fee22d7722f1b8fbd859d0fbf 100644 (file)
@@ -1,4 +1,5 @@
-///@file Interface for 2D Canvas elements
+///@file
+/// Interface for 2D Canvas elements
 //
 // Copyright (C) 2012  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -42,7 +43,7 @@ namespace canvas
 {
 
   /**
-   * Baseclass for Elements displayed inside a Canvas.
+   * Base class for Elements displayed inside a Canvas.
    */
   class Element:
     public PropertyBasedElement
index 1117ba3f1befff3a3c069b6bcbece99b8f3213e0..524f4e67a549207b2bb94250ecbbc244b75d7ae0 100644 (file)
@@ -1,4 +1,5 @@
-///@file Canvas user defined event
+///@file
+/// Canvas user defined event
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -27,6 +28,10 @@ namespace simgear
 namespace canvas
 {
 
+  /**
+   * User defined event (optionally carrying additional context information or
+   * data).
+   */
   class CustomEvent:
     public Event
   {
index 8fc366a37cf0f75c964def7c86b846ea56ae4053..14d2aa4dd8f0f6b1ddc9393c321e2a764d4fbe5f 100644 (file)
@@ -1,4 +1,5 @@
-///@file Input device event (keyboard/mouse)
+///@file
+/// Input device event (keyboard/mouse)
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -35,14 +36,25 @@ namespace canvas
     public Event
   {
     public:
+      /// Default initialization (no active keyboard modifier).
       DeviceEvent();
+
+      /// Initialize from an OpenSceneGraph event.
       DeviceEvent(const osgGA::GUIEventAdapter& ea);
 
+      /// Get mask of active keyboard modifiers at the time of the event.
       int getModifiers() const { return modifiers; }
 
+      /// Get if a Ctrl modifier was active.
       bool ctrlKey() const;
+
+      /// Get if a Shift modifier was active.
       bool shiftKey() const;
+
+      /// Get if an Alt modifier was active.
       bool altKey() const;
+
+      /// Get if a Meta modifier was active.
       bool metaKey() const;
 
     protected:
index d90a9246717ef113d3e2e69ba078f577877ef619..385590c8271694c7449c252bab665cdecbc56002 100644 (file)
@@ -1,4 +1,5 @@
-///@file Keyboard event
+///@file
+/// Keyboard event
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -26,6 +27,9 @@ namespace simgear
 namespace canvas
 {
 
+  /**
+   * Keyboard (button up/down) event
+   */
   class KeyboardEvent:
     public DeviceEvent
   {
index d3223f59dc9e99a3b1db2146c4319ba61e33bf53..df52d97d55718b9caa5bfb5690d81b4b16a60b3e 100644 (file)
@@ -1,4 +1,5 @@
-///@file Mouse event
+///@file
+/// Mouse event
 //
 // Copyright (C) 2012  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -26,6 +27,9 @@ namespace simgear
 namespace canvas
 {
 
+  /**
+   * Mouse (button/move/wheel) event
+   */
   class MouseEvent:
     public DeviceEvent
   {
index 1978439a57a0bd293f1319e7d2c975d2b43185b5..82d08a0245433defd0f793ad49e056212ceeaf09 100644 (file)
@@ -1,4 +1,4 @@
-// Align items horizontally or vertically in a box
+/// @file
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -26,6 +26,11 @@ namespace simgear
 namespace canvas
 {
 
+  /**
+   * Align LayoutItems horizontally or vertically in a box.
+   *
+   * @see http://qt-project.org/doc/qt-4.8/qboxlayout.html#details
+   */
   class BoxLayout:
     public Layout
   {
index e543db259676602ea187c0a68b905515c8de81da..673c990e79dcecc185d9fb2eb09b152c6c50758f 100644 (file)
@@ -1,4 +1,4 @@
-// Basic class for canvas layouts
+/// @file
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -27,6 +27,9 @@ namespace simgear
 namespace canvas
 {
 
+  /**
+   * Base class for all Canvas layouts.
+   */
   class Layout:
     public LayoutItem
   {
index 1adf2c67b5224d25994bd660ae0f0fa392faf90b..79347ccef45f39425fe00f4426c3b3ae8accd4c4 100644 (file)
@@ -1,4 +1,5 @@
-///@file Basic element for layouting canvas elements
+///@file
+/// Basic element for layouting canvas elements.
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
index 504a41e7afa2346c073985f3c8f83ab53ed0125c..02a26ba2b9acceb725397069ae89e7b7998f5d20 100644 (file)
@@ -1,4 +1,5 @@
-///@file Glue for GUI widgets implemented in Nasal space
+///@file
+/// Glue for GUI widgets implemented in Nasal space.
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -31,7 +32,7 @@ namespace canvas
 {
 
   /**
-   * Baseclass/ghost to create widgets with Nasal.
+   * Base class/ghost to implement gui widgets in Nasal space.
    */
   class NasalWidget:
     public LayoutItem,
index b3b4f4e6e1524947df36bf77eb0a62011dece1e4..8e5346d8f1fe7a4a784b276ed143bb7b1a2eaccd 100644 (file)
@@ -1,4 +1,4 @@
-///@file Element providing blank space in a layout.
+///@file
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
index 8adc9003fe5e432f70c579297d0c70b856249e51..43d1cbd5efa2af8a59405c3185ea88ec5597adb5 100644 (file)
@@ -1,4 +1,4 @@
-///@file HTTP request writing response to a file.
+///@file
 //
 // Copyright (C) 2013  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -27,6 +27,9 @@ namespace simgear
 namespace HTTP
 {
 
+  /**
+   * HTTP request writing response to a file.
+   */
   class FileRequest:
     public Request
   {
index bea45d0f299311068d986fc8ff9a0f826b0b140f..1c25ebc4f0b82197444330b0620319c9b16b574b 100644 (file)
@@ -1,4 +1,4 @@
-///@file HTTP request keeping response in memory.
+///@file
 //
 // Copyright (C) 2013  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -27,6 +27,9 @@ namespace simgear
 namespace HTTP
 {
 
+  /**
+   * HTTP request keeping response in memory.
+   */
   class MemoryRequest:
     public Request
   {
index 0809c70a4194128f1ddbc9d7b3908835e264e712..b9466ebf36d11a3938365f9f035e7830a36add6c 100644 (file)
@@ -1,3 +1,20 @@
+// Copyright (C) 2011  James Turner <zakalawe@mac.com>
+// Copyright (C) 2013  Thomas Geymayer <tomgey@gmail.com>
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 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
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+
 #include "HTTPRequest.hxx"
 
 #include <simgear/compiler.h>
index f739d2b8f1640c425de8ab88ebd1091295f8fc77..2365b85526895dc096d6e9343e55bab851b1d9a8 100644 (file)
@@ -1,3 +1,22 @@
+///@file
+//
+// Copyright (C) 2011  James Turner <zakalawe@mac.com>
+// Copyright (C) 2013  Thomas Geymayer <tomgey@gmail.com>
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 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
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+
 #ifndef SG_HTTP_REQUEST_HXX
 #define SG_HTTP_REQUEST_HXX
 
@@ -18,6 +37,9 @@ namespace simgear
 namespace HTTP
 {
 
+/**
+ * Base class for HTTP request (and answer).
+ */
 class Request:
   public SGReferenced
 {
index 83cce89cb7ba80c6e9e430facffc9f98c293ccf9..8930cca83f8f0a0261bb1c7c034efd9898e7ecfa 100644 (file)
@@ -1,4 +1,5 @@
-///@file Parse and represent SVG preserveAspectRatio attribute
+///@file
+/// Parse and represent SVG preserveAspectRatio attribute.
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -53,6 +54,7 @@ namespace simgear
 
       bool operator==(const SVGpreserveAspectRatio& rhs) const;
 
+      /// Parse preserveAspectRatio from string.
       static SVGpreserveAspectRatio parse(const std::string& str);
 
     private:
index ea98184ac95df26b0dcb8ad81f4082fda931f927..db39b41215aab0fe4434c43502c85d071b1e7478 100644 (file)
@@ -1,4 +1,5 @@
-///@file Really simple markdown parser
+///@file
+/// Really simple markdown parser.
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
index 00f84674e31b2c1e0cda49d135b8ee73b8bb0d19..c5e8e56cab24b7993cbc8f867dff0c038d516cca 100644 (file)
@@ -1,4 +1,4 @@
-///@file Manage lifetime and encapsulate a Nasal context
+///@file
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -24,6 +24,9 @@
 namespace nasal
 {
 
+  /**
+   * Manage lifetime and encapsulate a Nasal context.
+   */
   class Context
   {
     public:
index 641644c25da51ca3641a5701ab06321822ecc299..a5ce4769ca44b4cac3da9a7ee308bb2a55be1809 100644 (file)
@@ -1,4 +1,4 @@
-///@file Wrapper class for Nasal hashes
+///@file
 //
 // Copyright (C) 2012  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -29,7 +29,7 @@ namespace nasal
 {
 
   /**
-   * A Nasal Hash
+   * Wrapper class for Nasal hashes.
    */
   class Hash
   {
index 4ee850293f3d00874e27ea394ed250917afb53e1..055432548c5bc508f5fc2a143046d0a498f64152 100644 (file)
@@ -1,4 +1,4 @@
-///@file Object exposed to Nasal including a Nasal hash for data storage.
+///@file
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -28,6 +28,9 @@
 
 namespace nasal
 {
+  /**
+   * Object exposed to Nasal including a Nasal hash for data storage.
+   */
   class Object:
     public virtual SGVirtualWeakReferenced
   {
index f2db7704b9602e090441383e1d19cf020cf13ac2..55fb5ba142a53cbb1b6617c76912430af3043e3c 100644 (file)
@@ -1,4 +1,5 @@
-///@file Wrapper class for keeping Nasal objects save from the garbage collector
+///@file
+/// Wrapper class for keeping Nasal objects save from the garbage collector.
 //
 // Copyright (C) 2013  Thomas Geymayer <tomgey@gmail.com>
 //
index ad9e506f7cf16e5ebdcdcb0785bf424ff6efd2f1..e94dab7d6f1f571471f138a8612a8e7fa7193852 100644 (file)
@@ -1,4 +1,4 @@
-///@file Wrapper class for Nasal strings
+///@file
 //
 // Copyright (C) 2013  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -26,7 +26,7 @@ namespace nasal
 {
 
   /**
-   * A Nasal String
+   * Wrapper class for Nasal strings.
    */
   class String
   {
index 2548be716a0ed0f1c3e8d228b70a104b3f5caff4..5111ebaa8058a80fcb5b6e975bec58b5cee09ba0 100644 (file)
@@ -60,11 +60,22 @@ namespace simgear
       return 0.5 + 0.5 * (*easeOut)(t - 1);
   }
 
+  /**
+   * Helper for exponential ease out with integer exponent.
+   *
+   * @tparam N      Exponent.
+   * @tparam is_odd If the exponent is odd.
+   */
   template<size_t N, bool is_odd>
   struct easeOutImpl;
 
-  /// http://easings.net/#easeOutCubic (N = 3)
-  /// http://easings.net/#easeOutQuint (N = 5)
+  /**
+   * Ease out with odd integer exponent.
+   *
+   * @tparam N Exponent.
+   * @see http://easings.net/#easeOutCubic (N = 3)
+   * @see http://easings.net/#easeOutQuint (N = 5)
+   */
   template<size_t N>
   struct easeOutImpl<N, true>
   {
@@ -74,8 +85,13 @@ namespace simgear
     }
   };
 
-  /// http://easings.net/#easeOutQuad  (N = 2)
-  /// http://easings.net/#easeOutQuart (N = 4)
+  /**
+   * Ease out with even integer exponent.
+   *
+   * @tparam N Exponent.
+   * @see http://easings.net/#easeOutQuad  (N = 2)
+   * @see http://easings.net/#easeOutQuart (N = 4)
+   */
   template<size_t N>
   struct easeOutImpl<N, false>
   {
@@ -85,10 +101,15 @@ namespace simgear
     }
   };
 
-  /// http://easings.net/#easeOutQuad  (N = 2)
-  /// http://easings.net/#easeOutCubic (N = 3)
-  /// http://easings.net/#easeOutQuart (N = 4)
-  /// http://easings.net/#easeOutQuint (N = 5)
+  /**
+   * Exponential ease out with integer exponent.
+   *
+   * @see http://easings.net/#easeOutQuad  (N = 2)
+   * @see http://easings.net/#easeOutCubic (N = 3)
+   * @see http://easings.net/#easeOutQuart (N = 4)
+   * @see http://easings.net/#easeOutQuint (N = 5)
+   * @see easeOutImpl
+   */
   template<size_t N>
   double easeOutPow(double t)
   {
index 28ef08e41cc944684bbd2e68cbda8c4323a0dffb..314c16ed2ae63e1102543d00abce9fe29ab97a25 100644 (file)
@@ -1,4 +1,4 @@
-///@file Handle a list of callbacks like a single boost::function
+///@file
 //
 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -39,6 +39,11 @@ namespace simgear
 # define BOOST_PP_FILENAME_1 <simgear/structure/detail/function_list_template.hxx>
 # include BOOST_PP_ITERATE()
 
+  /**
+   * Handle a list of callbacks like a single boost::function.
+   *
+   * @tparam Sig    Function signature.
+   */
   template<typename Sig>
   class function_list<boost::function<Sig> >:
     public function_list<Sig>
index 20c5afca0b6d7fb1e1e20eeceee3e97f87238550..695013fbccbef114d8367f99e5c6699f358d365d 100644 (file)
@@ -1,4 +1,4 @@
-///@file Extended std::map with methods for easier usage.
+///@file
 //
 // Copyright (C) 2013  Thomas Geymayer <tomgey@gmail.com>
 //
@@ -25,6 +25,9 @@
 namespace simgear
 {
 
+  /**
+   * Extended std::map with methods for easier usage.
+   */
   template<class Key, class Value>
   class Map:
     public std::map<Key, Value>