<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to KnowledgeContainers</title><link>https://sourceforge.net/p/madara/wiki/KnowledgeContainers/</link><description>Recent changes to KnowledgeContainers</description><atom:link href="https://sourceforge.net/p/madara/wiki/KnowledgeContainers/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 04 May 2018 17:19:59 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/madara/wiki/KnowledgeContainers/feed" rel="self" type="application/rss+xml"/><item><title>KnowledgeContainers modified by James Edmondson</title><link>https://sourceforge.net/p/madara/wiki/KnowledgeContainers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v14
+++ v15
@@ -1,5 +1,5 @@
 &lt;b&gt;C++ Guide Series&lt;/b&gt;
-[Architecture](MadaraArchitecture) | [Knowledge Base](InteractingWithTheKnowledgeBase) | [Networking](InteractingWithTheTransport) | Containers | [Threads](WorkingWithThreads) | [Optimizations](OptimizingKaRL) | [KaRL](KarlLanguage) | [Encryption](Encryption)
+[Architecture](MadaraArchitecture) | [Knowledge Base](InteractingWithTheKnowledgeBase) | [Networking](InteractingWithTheTransport) | Containers | [Threads](WorkingWithThreads) | [Optimizations](OptimizingKaRL) | [KaRL](KarlLanguage) | [Encryption](Encryption) | [Checkpointing](Checkpointing)

 ----

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Edmondson</dc:creator><pubDate>Fri, 04 May 2018 17:19:59 -0000</pubDate><guid>https://sourceforge.netf44a85386c2ce2276459028b735e5cb0b67d819a</guid></item><item><title>KnowledgeContainers modified by James Edmondson</title><link>https://sourceforge.net/p/madara/wiki/KnowledgeContainers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v13
+++ v14
@@ -1,5 +1,5 @@
 &lt;b&gt;C++ Guide Series&lt;/b&gt;
-[Architecture](MadaraArchitecture) | [Knowledge Base](InteractingWithTheKnowledgeBase) | [Networking](InteractingWithTheTransport) | Containers | [Threads](WorkingWithThreads) | [Optimizations](OptimizingKaRL) | [KaRL](KarlLanguage)
+[Architecture](MadaraArchitecture) | [Knowledge Base](InteractingWithTheKnowledgeBase) | [Networking](InteractingWithTheTransport) | Containers | [Threads](WorkingWithThreads) | [Optimizations](OptimizingKaRL) | [KaRL](KarlLanguage) | [Encryption](Encryption)

 ----

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Edmondson</dc:creator><pubDate>Sat, 21 Apr 2018 01:14:15 -0000</pubDate><guid>https://sourceforge.net4842df5cc7bceefe17115b65f19488f748276cb6</guid></item><item><title>KnowledgeContainers modified by James Edmondson</title><link>https://sourceforge.net/p/madara/wiki/KnowledgeContainers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v12
+++ v13
@@ -333,10 +333,10 @@
 my_array[4][2][3][4]["name"] = "San Francisco";

 // output the value at [1][2][3][4]
-std::cout &amp;lt;&amp;lt; "My current hometown is " &amp;lt;&amp;lt; my_array[1][2][3][4]["name"]-&amp;gt;to_string () &amp;lt;&amp;lt; std::endl;
+std::cout &amp;lt;&amp;lt; "My current hometown is " &amp;lt;&amp;lt; my_array[1][2][3][4]["name"].to_string () &amp;lt;&amp;lt; std::endl;

 // output the value at [4][2][3][4]
-std::cout &amp;lt;&amp;lt; "My current hometown is " &amp;lt;&amp;lt; my_array[4][2][3][4]["name"]-&amp;gt;to_string () &amp;lt;&amp;lt; std::endl;
+std::cout &amp;lt;&amp;lt; "My current hometown is " &amp;lt;&amp;lt; my_array[4][2][3][4]["name"].to_string () &amp;lt;&amp;lt; std::endl;

 // Flex_Map can create containers to its elements for faster access
 may_array[1][2][3][4]["name"].to_container (city_name);
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Edmondson</dc:creator><pubDate>Mon, 09 Apr 2018 23:24:12 -0000</pubDate><guid>https://sourceforge.net1b8967eb8bd8339de7cad6997e617726d5401496</guid></item><item><title>KnowledgeContainers modified by James Edmondson</title><link>https://sourceforge.net/p/madara/wiki/KnowledgeContainers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v11
+++ v12
@@ -1,5 +1,5 @@
 &lt;b&gt;C++ Guide Series&lt;/b&gt;
-[Architecture](MadaraArchitecture) | [Knowledge Base](InteractingWithTheKnowledgeBase) | [Networking](InteractingWithTheTransport) | Containers | [Threads](WorkingWithThreads) | [Optimizations](OptimizingKaRL)
+[Architecture](MadaraArchitecture) | [Knowledge Base](InteractingWithTheKnowledgeBase) | [Networking](InteractingWithTheTransport) | Containers | [Threads](WorkingWithThreads) | [Optimizations](OptimizingKaRL) | [KaRL](KarlLanguage)

 ----

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Edmondson</dc:creator><pubDate>Sun, 07 Feb 2016 20:29:16 -0000</pubDate><guid>https://sourceforge.net67cc57abf8a12b14f97e03ae9d1670c2fed4140e</guid></item><item><title>KnowledgeContainers modified by James Edmondson</title><link>https://sourceforge.net/p/madara/wiki/KnowledgeContainers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v10
+++ v11
@@ -15,7 +15,7 @@

 # 1. Types of Containers

-In this section, we breakdown the types of containers. For a complete list of containers, see the files located inside of the include/madara/knowledge_engine/containers directory of your source distribution, or see the [Library documentation for the Containers namespace](http://madara.sourceforge.net/docs/cpp/d8/deb/namespaceMadara_1_1Knowledge__Engine_1_1Containers.html).
+In this section, we breakdown the types of containers. For a complete list of containers, see the files located inside of the include/madara/knowledge_engine/containers directory of your source distribution, or see the [Library documentation for the Containers namespace](http://madara.sourceforge.net/docs/cpp/d8/dfd/namespacemadara_1_1knowledge_1_1containers.html).

 ----

@@ -28,7 +28,7 @@
 ### 1.1.1 Integer

 Location: `madara/knowledge/containers/Integer.h` &lt;br/&gt;
-Documentation: [Integer](http://madara.sourceforge.net/docs/cpp/d6/dde/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Integer.html)
+Documentation: [Integer](http://madara.sourceforge.net/docs/cpp/d3/d0b/classmadara_1_1knowledge_1_1containers_1_1Integer.html)

 Integer is a container that provides interfaces for setting and getting an integer value from the Knowledge Base.

@@ -56,7 +56,7 @@
 ### 1.1.2 Double

 Location: `madara/knowledge/containers/Double.h` &lt;br/&gt;
-Documentation: [Double](http://madara.sourceforge.net/docs/cpp/d3/d88/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Double.html)
+Documentation: [Double](http://madara.sourceforge.net/docs/cpp/de/d5e/classmadara_1_1knowledge_1_1containers_1_1Double.html)

 Double is a container that provides interfaces for setting and getting a double value from the Knowledge Base.

@@ -84,7 +84,7 @@
 ### 1.1.3 String

 Location: `madara/knowledge_engine/containers/String.h` &lt;br/&gt;
-Documentation: [String](http://madara.sourceforge.net/docs/cpp/d5/ded/classMadara_1_1Knowledge__Engine_1_1Containers_1_1String.html)
+Documentation: [String](http://madara.sourceforge.net/docs/cpp/d3/da3/classmadara_1_1knowledge_1_1containers_1_1String.html)

 String is a container that provides interfaces for setting and getting a string value from the Knowledge Base.

@@ -118,7 +118,7 @@
 ### 1.2.1 Integer Vector/Array

 Location: `madara/knowledge/containers/IntegerVector.h` &lt;br/&gt;
-Documentation: [IntegerVector](http://madara.sourceforge.net/docs/cpp/d0/db9/classmadara_1_1knowledge_1_1containers_1_1IntegerVector.html)
+Documentation: [IntegerVector](http://madara.sourceforge.net/docs/cpp/d8/d56/classmadara_1_1knowledge_1_1containers_1_1IntegerVector.html)

 `IntegerVector`, also known as `IntegerArray`, is a container that provides interfaces for setting and getting an integer value from the Knowledge Base.

@@ -154,9 +154,9 @@
 ### 1.2.2 Double Vector/Array

 Location: `madara/knowledge/containers/DoubleVector.h` &lt;br/&gt;
-Documentation: [DoubleVector](http://madara.sourceforge.net/docs/cpp/d7/d99/classmadara_1_1knowledge_1_1containers_1_1DoubleVector.html)
-
-`Double_Vector`, also known as `Double_Array`, is a container that provides interfaces for setting and getting an array of double values within the Knowledge Base.
+Documentation: [DoubleVector](http://madara.sourceforge.net/docs/cpp/d6/d3d/classmadara_1_1knowledge_1_1containers_1_1DoubleVector.html)
+
+`DoubleVector`, also known as `DoubleArray`, is a container that provides interfaces for setting and getting an array of double values within the Knowledge Base.

 ~~~~~~
 // setup includes and namespace alias for convenience
@@ -191,7 +191,7 @@
 ### 1.2.3 String Vector/Array

 Location: `madara/knowledge/containers/StringVector.h` &lt;br/&gt;
-Documentation: [StringVector](http://madara.sourceforge.net/docs/cpp/d4/d22/classmadara_1_1knowledge_1_1containers_1_1StringVector.html)
+Documentation: [StringVector](http://madara.sourceforge.net/docs/cpp/da/dd0/classmadara_1_1knowledge_1_1containers_1_1StringVector.html)

 `StringVector`, also known as `StringArray`, is a container that provides interfaces for setting and getting an array of string values within the Knowledge Base.

@@ -229,7 +229,7 @@
 ### 1.2.4 Dynamically-typed Vector/Array

 Location: `madara/knowledge/containers/Vector.h` &lt;br/&gt;
-Documentation: [Vector](http://madara.sourceforge.net/docs/cpp/df/da8/classmadara_1_1knowledge_1_1containers_1_1Vector.html)
+Documentation: [Vector](http://madara.sourceforge.net/docs/cpp/d5/dc0/classmadara_1_1knowledge_1_1containers_1_1Vector.html)

 `Vector`, also known as `Array`, is a container that provides interfaces for setting and getting an array of multi-typed values within the Knowledge Base.

@@ -271,7 +271,7 @@
 Map containers are facades into string-keyed maps of variable locations within the Knowledge Base. Unlike with instance variables, the name that is set for a map container is the prefix for variable locations instead of an actual variable name, and access times are O(log m), where m is the number of items existing in the Map container.

 Location: `madara/knowledge/containers/Map.h` &lt;br/&gt;
-Documentation: [Map](http://madara.sourceforge.net/docs/cpp/d9/d82/classmadara_1_1knowledge_1_1containers_1_1Map.html)
+Documentation: [Map](http://madara.sourceforge.net/docs/cpp/da/da1/classmadara_1_1knowledge_1_1containers_1_1Map.html)

 The Map class is one of the most versatile container classes available in MADARA. This class is likely to prove invaluable to developers wanting to emulate classes within the knowledge base.

@@ -306,7 +306,7 @@
 Flexible Maps are abstractions intended to support multi-dimensional arrays and maps. These containers override the [] operator for both integer-based index and string-based accesses. These operators return other Flexible Maps which can either be set to an arbitrary value (such as an integer, string, double, byte buffer, etc.) or subindexed with integers or strings.

 Location: `madara/knowledge_engine/containers/FlexMap.h` &lt;br/&gt;
-Documentation: [FlexMap](http://madara.sourceforge.net/docs/cpp/da/dfe/classmadara_1_1knowledge_1_1containers_1_1FlexMap.html)
+Documentation: [FlexMap](http://madara.sourceforge.net/docs/cpp/d7/d57/classmadara_1_1knowledge_1_1containers_1_1FlexMap.html)

 `FlexMap` replaces the old `VectorN` class which was less intuitive and useful. `FlexMap` is O(1) for subindexing (e.g., [1][2]) and only incurs an O(log n), with n being the number of keys in the knowledge base, lookup on the first access of an element with an accessor or mutator function (e.g. `to_string()` or setting the value explicitly). Flex_Map essentially always assumes an index is not a variable lookup until you are setting or getting a value explicitly. The keys function is an O(n) operation that must look through all keys in the Knowledge_Base to find all versions with the prefix set in constructor or set_name function.

@@ -353,7 +353,7 @@
 Counters are abstractions intended to support aggregate counters across multiple participating agents. Counters provide a solution to the problem of the many writers problem for single variable increments/decrements. What a Counter does under the hood is give each agent a copy of the variable, and the agent only increments/decrements/sets their versions of the variable. When another agent wants to know, the aggregate count, they call `to_integer()` or `to_record()`.

 Location: `madara/knowledge/containers/Counter.h` &lt;br/&gt;
-Documentation: [Counter](http://madara.sourceforge.net/docs/cpp/d8/d35/classmadara_1_1knowledge_1_1containers_1_1Counter.html)
+Documentation: [Counter](http://madara.sourceforge.net/docs/cpp/d4/d66/classmadara_1_1knowledge_1_1containers_1_1Counter.html)

 Updating the Counter takes O(1) time. Retrieving a value from the Counter requires O(N) time, where N is the number of agents participating in the counting operation.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Edmondson</dc:creator><pubDate>Mon, 19 Oct 2015 01:48:58 -0000</pubDate><guid>https://sourceforge.netebc7df926971c797d7456f276aa8e3d796af0ac5</guid></item><item><title>KnowledgeContainers modified by James Edmondson</title><link>https://sourceforge.net/p/madara/wiki/KnowledgeContainers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v9
+++ v10
@@ -27,19 +27,19 @@

 ### 1.1.1 Integer

-Location: `madara/knowledge_engine/containers/Integer.h` &lt;br/&gt;
+Location: `madara/knowledge/containers/Integer.h` &lt;br/&gt;
 Documentation: [Integer](http://madara.sourceforge.net/docs/cpp/d6/dde/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Integer.html)

 Integer is a container that provides interfaces for setting and getting an integer value from the Knowledge Base.

 ~~~~~~
 // setup includes and namespace alias for convenience
-#include "madara/knowledge_engine/containers/Integer.h"
-namespace engine = Madara::Knowledge_Engine;
-namespace containers = engine::Containers;
+#include "madara/knowledge/containers/Integer.h"
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;

 // create a knowledge base and make a container that points inside it
-engine::Knowledge_Base knowledge;
+engine::KnowledgeBase knowledge;
 containers::Integer my_id (".id", knowledge);

 // set id within the knowledge base to 1
@@ -55,19 +55,19 @@

 ### 1.1.2 Double

-Location: `madara/knowledge_engine/containers/Double.h` &lt;br/&gt;
+Location: `madara/knowledge/containers/Double.h` &lt;br/&gt;
 Documentation: [Double](http://madara.sourceforge.net/docs/cpp/d3/d88/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Double.html)

 Double is a container that provides interfaces for setting and getting a double value from the Knowledge Base.

 ~~~~~~
 // setup includes and namespace alias for convenience
-#include "madara/knowledge_engine/containers/Double.h"
-namespace engine = Madara::Knowledge_Engine;
-namespace containers = engine::Containers;
+#include "madara/knowledge/containers/Double.h"
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;

 // create a knowledge base and make a container that points inside it
-engine::Knowledge_Base knowledge;
+engine::KnowledgeBase knowledge;
 containers::Double funds (".funds", knowledge);

 // set funds to 300.50
@@ -90,12 +90,12 @@

 ~~~~~~
 // setup includes and namespace alias for convenience
-#include "madara/knowledge_engine/containers/Double.h"
-namespace engine = Madara::Knowledge_Engine;
-namespace containers = engine::Containers;
+#include "madara/knowledge/containers/Double.h"
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;

 // create a knowledge base and make a container that points inside it
-engine::Knowledge_Base knowledge;
+engine::KnowledgeBase knowledge;
 containers::String name (".name", knowledge);

 // set name to "John Smith"
@@ -117,20 +117,20 @@

 ### 1.2.1 Integer Vector/Array

-Location: `madara/knowledge_engine/containers/Integer_Array.h` &lt;br/&gt;
-Documentation: [Integer_Vector](http://madara.sourceforge.net/docs/cpp/d0/db9/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Integer__Vector.html)
-
-`Integer_Vector`, also known as `Integer_Array`, is a container that provides interfaces for setting and getting an integer value from the Knowledge Base.
-
-~~~~~~
-// setup includes and namespace alias for convenience
-#include "madara/knowledge_engine/containers/Integer_Vector.h"
-namespace engine = Madara::Knowledge_Engine;
-namespace containers = engine::Containers;
+Location: `madara/knowledge/containers/IntegerVector.h` &lt;br/&gt;
+Documentation: [IntegerVector](http://madara.sourceforge.net/docs/cpp/d0/db9/classmadara_1_1knowledge_1_1containers_1_1IntegerVector.html)
+
+`IntegerVector`, also known as `IntegerArray`, is a container that provides interfaces for setting and getting an integer value from the Knowledge Base.
+
+~~~~~~
+// setup includes and namespace alias for convenience
+#include "madara/knowledge/containers/Integer_Vector.h"
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;

 // create a knowledge base and make a 10 element array that points inside it
-engine::Knowledge_Base knowledge;
-containers::Integer_Array my_array (".array", knowledge, 10);
+engine::KnowledgeBase knowledge;
+containers::IntegerVector my_array (".array", knowledge, 10);

 // set index 1 of the array to true (1)
 my_array.set (1);
@@ -153,20 +153,20 @@

 ### 1.2.2 Double Vector/Array

-Location: `madara/knowledge_engine/containers/Double_Vector.h` &lt;br/&gt;
-Documentation: [Double_Vector](http://madara.sourceforge.net/docs/cpp/d7/d99/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Double__Vector.html)
+Location: `madara/knowledge/containers/DoubleVector.h` &lt;br/&gt;
+Documentation: [DoubleVector](http://madara.sourceforge.net/docs/cpp/d7/d99/classmadara_1_1knowledge_1_1containers_1_1DoubleVector.html)

 `Double_Vector`, also known as `Double_Array`, is a container that provides interfaces for setting and getting an array of double values within the Knowledge Base.

 ~~~~~~
 // setup includes and namespace alias for convenience
-#include "madara/knowledge_engine/containers/Double_Vector.h"
-namespace engine = Madara::Knowledge_Engine;
-namespace containers = engine::Containers;
+#include "madara/knowledge/containers/DoubleVector.h"
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;

 // create a knowledge base and make a 10 element array that points inside it
-engine::Knowledge_Base knowledge;
-containers::Double_Array my_array (".array", knowledge, 10);
+engine::KnowledgeBase knowledge;
+containers::DoubleArray my_array (".array", knowledge, 10);

 // set index 1 of the array to 6.5
 my_array.set (1, 6.5);
@@ -190,20 +190,20 @@

 ### 1.2.3 String Vector/Array

-Location: `madara/knowledge_engine/containers/String_Vector.h` &lt;br/&gt;
-Documentation: [String_Vector](http://madara.sourceforge.net/docs/cpp/d4/d22/classMadara_1_1Knowledge__Engine_1_1Containers_1_1String__Vector.html)
-
-`String_Vector`, also known as `String_Array`, is a container that provides interfaces for setting and getting an array of string values within the Knowledge Base.
-
-~~~~~~
-// setup includes and namespace alias for convenience
-#include "madara/knowledge_engine/containers/String_Vector.h"
-namespace engine = Madara::Knowledge_Engine;
-namespace containers = engine::Containers;
+Location: `madara/knowledge/containers/StringVector.h` &lt;br/&gt;
+Documentation: [StringVector](http://madara.sourceforge.net/docs/cpp/d4/d22/classmadara_1_1knowledge_1_1containers_1_1StringVector.html)
+
+`StringVector`, also known as `StringArray`, is a container that provides interfaces for setting and getting an array of string values within the Knowledge Base.
+
+~~~~~~
+// setup includes and namespace alias for convenience
+#include "madara/knowledge/containers/StringVector.h"
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;

 // create a knowledge base and make a 10 element array that points inside it
-engine::Knowledge_Base knowledge;
-containers::String_Array my_array (".array", knowledge, 10);
+engine::KnowledgeBase knowledge;
+containers::StringArray my_array (".array", knowledge, 10);

 // set the indices of the array to characters in Snow White
 my_array.set (0, "Snow White");
@@ -228,19 +228,19 @@

 ### 1.2.4 Dynamically-typed Vector/Array

-Location: `madara/knowledge_engine/containers/Vector.h` &lt;br/&gt;
-Documentation: [Vector](http://madara.sourceforge.net/docs/cpp/df/da8/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Vector.html)
+Location: `madara/knowledge/containers/Vector.h` &lt;br/&gt;
+Documentation: [Vector](http://madara.sourceforge.net/docs/cpp/df/da8/classmadara_1_1knowledge_1_1containers_1_1Vector.html)

 `Vector`, also known as `Array`, is a container that provides interfaces for setting and getting an array of multi-typed values within the Knowledge Base.

 ~~~~~~
 // setup includes and namespace alias for convenience
-#include "madara/knowledge_engine/containers/Vector.h"
-namespace engine = Madara::Knowledge_Engine;
-namespace containers = engine::Containers;
+#include "madara/knowledge/containers/Vector.h"
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;

 // create a knowledge base and make a 10 element array that points inside it
-engine::Knowledge_Base knowledge;
+engine::KnowledgeBase knowledge;
 containers::Array my_array ("some_array", knowledge, 10);

 // the array contains five characters from Snow White and their ages
@@ -270,20 +270,20 @@

 Map containers are facades into string-keyed maps of variable locations within the Knowledge Base. Unlike with instance variables, the name that is set for a map container is the prefix for variable locations instead of an actual variable name, and access times are O(log m), where m is the number of items existing in the Map container.

-Location: `madara/knowledge_engine/containers/Map.h` &lt;br/&gt;
-Documentation: [Map](http://madara.sourceforge.net/docs/cpp/d9/d82/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Map.html)
+Location: `madara/knowledge/containers/Map.h` &lt;br/&gt;
+Documentation: [Map](http://madara.sourceforge.net/docs/cpp/d9/d82/classmadara_1_1knowledge_1_1containers_1_1Map.html)

 The Map class is one of the most versatile container classes available in MADARA. This class is likely to prove invaluable to developers wanting to emulate classes within the knowledge base.

 ~~~~~~
 // setup includes and namespace alias for convenience
-#include "madara/knowledge_engine/containers/Map.h"
-namespace engine = Madara::Knowledge_Engine;
-namespace containers = engine::Containers;
-typedef  Madara::Knowledge_Record::Integer  Integer;
+#include "madara/knowledge/containers/Map.h"
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;
+typedef  engine::KnowledgeRecord::Integer  Integer;

 // create a knowledge base and make a map
-engine::Knowledge_Base knowledge;
+engine::KnowledgeBase knowledge;
 containers::Map map ("profile.1", knowledge);

 // create profile fields for a man named John Smith at profile.1
@@ -305,25 +305,25 @@

 Flexible Maps are abstractions intended to support multi-dimensional arrays and maps. These containers override the [] operator for both integer-based index and string-based accesses. These operators return other Flexible Maps which can either be set to an arbitrary value (such as an integer, string, double, byte buffer, etc.) or subindexed with integers or strings.

-Location: `madara/knowledge_engine/containers/Flex_Map.h` &lt;br/&gt;
-Documentation: [Flex_Map](http://madara.sourceforge.net/docs/cpp/da/dfe/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Flex__Map.html)
-
-`Flex_Map` replaces the old `Vector_N` class which was less intuitive and useful. `Flex_Map` is O(1) for subindexing (e.g., [1][2]) and only incurs an O(log n), with n being the number of keys in the knowledge base, lookup on the first access of an element with an accessor or mutator function (e.g. `to_string()` or setting the value explicitly). Flex_Map essentially always assumes an index is not a variable lookup until you are setting or getting a value explicitly. The keys function is an O(n) operation that must look through all keys in the Knowledge_Base to find all versions with the prefix set in constructor or set_name function.
+Location: `madara/knowledge_engine/containers/FlexMap.h` &lt;br/&gt;
+Documentation: [FlexMap](http://madara.sourceforge.net/docs/cpp/da/dfe/classmadara_1_1knowledge_1_1containers_1_1FlexMap.html)
+
+`FlexMap` replaces the old `VectorN` class which was less intuitive and useful. `FlexMap` is O(1) for subindexing (e.g., [1][2]) and only incurs an O(log n), with n being the number of keys in the knowledge base, lookup on the first access of an element with an accessor or mutator function (e.g. `to_string()` or setting the value explicitly). Flex_Map essentially always assumes an index is not a variable lookup until you are setting or getting a value explicitly. The keys function is an O(n) operation that must look through all keys in the Knowledge_Base to find all versions with the prefix set in constructor or set_name function.

 Though the subindexing is O(1), developers should keep in mind that each index is a concatenation of the container name with a delimiter (by default '.') and the index, which is essentially 2 concatenation operations.

-`Flex_Map` includes a `to_container` operation that can convert the `Flex_Map` into any supported container for fast O(1) changes later to String, Integer, Double, etc.
-
-~~~~~~
-// setup includes and namespace alias for convenience
-#include "madara/knowledge_engine/containers/Flex_Map.h"
-#include "madara/knowledge_engine/containers/String.h"
-namespace engine = Madara::Knowledge_Engine;
-namespace containers = engine::Containers;
+`FlexMap` includes a `to_container` operation that can convert the `FlexMap` into any supported container for fast O(1) changes later to String, Integer, Double, etc.
+
+~~~~~~
+// setup includes and namespace alias for convenience
+#include "madara/knowledge/containers/FlexMap.h"
+#include "madara/knowledge/containers/String.h"
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;

 // create a knowledge base and make a multi-dimensional array
-engine::Knowledge_Base knowledge;
-containers::Flex_Map my_array ("cities", knowledge);
+engine::KnowledgeBase knowledge;
+containers::FlexMap my_array ("cities", knowledge);
 containers::String city_name;

 // set location cities.1.2.3.4.name to "St. Louis"
@@ -352,21 +352,21 @@

 Counters are abstractions intended to support aggregate counters across multiple participating agents. Counters provide a solution to the problem of the many writers problem for single variable increments/decrements. What a Counter does under the hood is give each agent a copy of the variable, and the agent only increments/decrements/sets their versions of the variable. When another agent wants to know, the aggregate count, they call `to_integer()` or `to_record()`.

-Location: `madara/knowledge_engine/containers/Counter.h` &lt;br/&gt;
-Documentation: [Counter](http://madara.sourceforge.net/docs/cpp/d8/d35/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Counter.html)
+Location: `madara/knowledge/containers/Counter.h` &lt;br/&gt;
+Documentation: [Counter](http://madara.sourceforge.net/docs/cpp/d8/d35/classmadara_1_1knowledge_1_1containers_1_1Counter.html)

 Updating the Counter takes O(1) time. Retrieving a value from the Counter requires O(N) time, where N is the number of agents participating in the counting operation.

 ~~~~~~
 // setup includes and namespace alias for convenience
 #include &amp;lt;iostream&amp;gt;
-#include "madara/knowledge_engine/Knowledge_Base.h"
-#include "madara/knowledge_engine/containers/Counter.h"
-namespace engine = Madara::Knowledge_Engine;
-namespace containers = engine::Containers;
+#include "madara/knowledge/KnowledgeBase.h"
+#include "madara/knowledge/containers/Counter.h"
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;

 // create a knowledge base and make a multi-dimensional array
-engine::Knowledge_Base knowledge;
+engine::KnowledgeBase knowledge;
 containers::Counter entries ("entries", knowledge);

 // resize our entries counter to have 2 variables (2 agents),
@@ -387,7 +387,7 @@

 # 2. Interaction with the Transport Layer 

-When creating containers, each constructor supports a `Madara::Knowledge_Engine::Knowledge_Update_Settings` instance that provides control over the updating and retrieving of variables from the context. However, no function in the container classes directly interacts with the transport layer.
+When creating containers, each constructor supports a `madara::knowledge::KnowledgeUpdateSettings` instance that provides control over the updating and retrieving of variables from the context. However, no function in the container classes directly interacts with the transport layer.

 Container classes are intended to provide fast, efficient, and convenient facades into the Knowledge Base to support object-oriented programming. In order to send these updates to other reasoning agents in the network, functions will need to be called on the Knowledge_Base. In this section of the Wiki, we'll discuss how the containers are intended to be used and when interactions over the network occur.

@@ -400,23 +400,23 @@
 To showcase this concept, we'll use a complete program that sends a profile over multicast.

 ~~~~~~
-#include "madara/knowledge_engine/Knowledge_Base.h"
-#include "madara/knowledge_engine/containers/Map.h"
+#include "madara/knowledge/KnowledgeBase.h"
+#include "madara/knowledge/containers/Map.h"

 // setup convenience aliases
-namespace engine Madara::Knowledge_Engine;
-namespace containers engine::Containers;
-typedef  Madara::Knowledge_Record::Integer  Integer;
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;
+typedef  engine::KnowledgeRecord::Integer  Integer;

 int main (int argc, char ** argv)
 {
   // setup a Multicast transport at 239.255.0.1:4150
-  Madara::Transport::QoS_Transport_Settings settings;
+  madara::transport::QoSTransportSettings settings;
   settings.hosts.push_back ("239.255.0.1:4150");
-  settings.type Madara::Transport::MULTICAST;
+  settings.type = madara::transport::MULTICAST;

   // use the transport constructor 
-  Madara::Knowledge_Engine::Knowledge_Base knowledge ("", settings);
+  engine::KnowledgeBase knowledge ("", settings);

   // lock the context from any external updates until we're done
   knowledge.lock ();
@@ -452,25 +452,25 @@

 * Functions called from an evaluate are atomic and the context is already locked from outside updates
 * An evaluate call, by default, sends all modified variables over the attached network transports
-* MADARA containers allow for attaching a context through either the `Variables` or `Knowledge_Base` classes, so there is nothing gained by using containers outside of function calls from evaluate
+* MADARA containers allow for attaching a context through either the `Variables` or `KnowledgeBase` classes, so there is nothing gained by using containers outside of function calls from evaluate

 In the next example, we create a function called `set_profile` that is called from an evaluate statement within the main function.

 ~~~~~~
-#include "madara/knowledge_engine/Knowledge_Base.h"
-#include "madara/knowledge_engine/containers/Map.h"
+#include "madara/knowledge/KnowledgeBase.h"
+#include "madara/knowledge/containers/Map.h"
 #include "madara/utility/Utility.h"

 // setup convenience aliases
-namespace engine Madara::Knowledge_Engine;
-namespace containers engine::Containers;
-typedef  Madara::Knowledge_Record::Integer  Integer;
+namespace engine = madara::knowledge;
+namespace containers = engine::containers;
+typedef  engine::KnowledgeRecord::Integer  Integer;

 // a Map container to reference profile information
 containers::Map profile;

-Madara::Knowledge_Record
-set_profile (engine::Function_Arguments &amp;amp; args, engine::Variables &amp;amp; vars)
+engine::Knowledge_Record
+set_profile (engine::FunctionArguments &amp;amp; args, engine::Variables &amp;amp; vars)
 {
   Madara::Knowledge_Record result;

@@ -486,12 +486,12 @@
 int main (int argc, char ** argv)
 {
   // setup a Multicast transport at 239.255.0.1:4150
-  Madara::Transport::QoS_Transport_Settings settings;
+  madara::transport::QoSTransportSettings settings;
   settings.hosts.push_back ("239.255.0.1:4150");
-  settings.type Madara::Transport::MULTICAST;
+  settings.type = madara::transport::MULTICAST;

   // use the transport constructor 
-  Madara::Knowledge_Engine::Knowledge_Base knowledge ("", settings);
+  madara::knowledge::KnowledgeBase knowledge ("", settings);

   // attach the profile Map container to the knowledge base
   profile.set_name ("profile.1", knowledge);
@@ -509,7 +509,7 @@
    * Here we just sleep for a few seconds to make sure the transport
    * is given enough time to send out all of the updates
    **/
-  Madara::Utility::sleep (3);
+  madara::utility::sleep (3);

   return 0;
 }
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Edmondson</dc:creator><pubDate>Sat, 10 Oct 2015 03:46:16 -0000</pubDate><guid>https://sourceforge.net8e4d07f9f4f4f9b289209c19dbbdae91f4b5b181</guid></item><item><title>KnowledgeContainers modified by James Edmondson</title><link>https://sourceforge.net/p/madara/wiki/KnowledgeContainers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v8
+++ v9
@@ -369,7 +369,8 @@
 engine::Knowledge_Base knowledge;
 containers::Counter entries ("entries", knowledge);

-// resize our entries counter to have 2 variables (2 agents), with our id as 0 (the other agent would be 1)
+// resize our entries counter to have 2 variables (2 agents),
+// with our id as 0 (the other agent would be 1)
 entries.resize(0, 2);

 // add to the number of entries that you are maintaining
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Edmondson</dc:creator><pubDate>Sat, 15 Aug 2015 14:18:37 -0000</pubDate><guid>https://sourceforge.nete13ee977a571c27f4bc3be96025717de5dbfd601</guid></item><item><title>KnowledgeContainers modified by James Edmondson</title><link>https://sourceforge.net/p/madara/wiki/KnowledgeContainers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v7
+++ v8
@@ -369,6 +369,9 @@
 engine::Knowledge_Base knowledge;
 containers::Counter entries ("entries", knowledge);

+// resize our entries counter to have 2 variables (2 agents), with our id as 0 (the other agent would be 1)
+entries.resize(0, 2);
+
 // add to the number of entries that you are maintaining
 ++entries;
 entries += 2;
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Edmondson</dc:creator><pubDate>Sat, 15 Aug 2015 14:17:13 -0000</pubDate><guid>https://sourceforge.net327f4bb0cc2a6b18fc8f3478aa63ef922310b785</guid></item><item><title>KnowledgeContainers modified by James Edmondson</title><link>https://sourceforge.net/p/madara/wiki/KnowledgeContainers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -35,8 +35,8 @@
 ~~~~~~
 // setup includes and namespace alias for convenience
 #include "madara/knowledge_engine/containers/Integer.h"
-namespace engine Madara::Knowledge_Engine;
-namespace containers engine::Containers;
+namespace engine = Madara::Knowledge_Engine;
+namespace containers = engine::Containers;

 // create a knowledge base and make a container that points inside it
 engine::Knowledge_Base knowledge;
@@ -63,8 +63,8 @@
 ~~~~~~
 // setup includes and namespace alias for convenience
 #include "madara/knowledge_engine/containers/Double.h"
-namespace engine Madara::Knowledge_Engine;
-namespace containers engine::Containers;
+namespace engine = Madara::Knowledge_Engine;
+namespace containers = engine::Containers;

 // create a knowledge base and make a container that points inside it
 engine::Knowledge_Base knowledge;
@@ -91,8 +91,8 @@
 ~~~~~~
 // setup includes and namespace alias for convenience
 #include "madara/knowledge_engine/containers/Double.h"
-namespace engine Madara::Knowledge_Engine;
-namespace containers engine::Containers;
+namespace engine = Madara::Knowledge_Engine;
+namespace containers = engine::Containers;

 // create a knowledge base and make a container that points inside it
 engine::Knowledge_Base knowledge;
@@ -125,8 +125,8 @@
 ~~~~~~
 // setup includes and namespace alias for convenience
 #include "madara/knowledge_engine/containers/Integer_Vector.h"
-namespace engine Madara::Knowledge_Engine;
-namespace containers engine::Containers;
+namespace engine = Madara::Knowledge_Engine;
+namespace containers = engine::Containers;

 // create a knowledge base and make a 10 element array that points inside it
 engine::Knowledge_Base knowledge;
@@ -161,8 +161,8 @@
 ~~~~~~
 // setup includes and namespace alias for convenience
 #include "madara/knowledge_engine/containers/Double_Vector.h"
-namespace engine Madara::Knowledge_Engine;
-namespace containers engine::Containers;
+namespace engine = Madara::Knowledge_Engine;
+namespace containers = engine::Containers;

 // create a knowledge base and make a 10 element array that points inside it
 engine::Knowledge_Base knowledge;
@@ -198,8 +198,8 @@
 ~~~~~~
 // setup includes and namespace alias for convenience
 #include "madara/knowledge_engine/containers/String_Vector.h"
-namespace engine Madara::Knowledge_Engine;
-namespace containers engine::Containers;
+namespace engine = Madara::Knowledge_Engine;
+namespace containers = engine::Containers;

 // create a knowledge base and make a 10 element array that points inside it
 engine::Knowledge_Base knowledge;
@@ -236,8 +236,8 @@
 ~~~~~~
 // setup includes and namespace alias for convenience
 #include "madara/knowledge_engine/containers/Vector.h"
-namespace engine Madara::Knowledge_Engine;
-namespace containers engine::Containers;
+namespace engine = Madara::Knowledge_Engine;
+namespace containers = engine::Containers;

 // create a knowledge base and make a 10 element array that points inside it
 engine::Knowledge_Base knowledge;
@@ -278,8 +278,8 @@
 ~~~~~~
 // setup includes and namespace alias for convenience
 #include "madara/knowledge_engine/containers/Map.h"
-namespace engine Madara::Knowledge_Engine;
-namespace containers engine::Containers;
+namespace engine = Madara::Knowledge_Engine;
+namespace containers = engine::Containers;
 typedef  Madara::Knowledge_Record::Integer  Integer;

 // create a knowledge base and make a map
@@ -318,8 +318,8 @@
 // setup includes and namespace alias for convenience
 #include "madara/knowledge_engine/containers/Flex_Map.h"
 #include "madara/knowledge_engine/containers/String.h"
-namespace engine Madara::Knowledge_Engine;
-namespace containers engine::Containers;
+namespace engine = Madara::Knowledge_Engine;
+namespace containers = engine::Containers;

 // create a knowledge base and make a multi-dimensional array
 engine::Knowledge_Base knowledge;
@@ -345,6 +345,39 @@
 std::cout &amp;lt;&amp;lt; "St. Louis has been replaced by " &amp;lt;&amp;lt; *city_name &amp;lt;&amp;lt; std::endl;

 ~~~~~~
+
+----
+
+## 1.5 Counter
+
+Counters are abstractions intended to support aggregate counters across multiple participating agents. Counters provide a solution to the problem of the many writers problem for single variable increments/decrements. What a Counter does under the hood is give each agent a copy of the variable, and the agent only increments/decrements/sets their versions of the variable. When another agent wants to know, the aggregate count, they call `to_integer()` or `to_record()`.
+
+Location: `madara/knowledge_engine/containers/Counter.h` &lt;br/&gt;
+Documentation: [Counter](http://madara.sourceforge.net/docs/cpp/d8/d35/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Counter.html)
+
+Updating the Counter takes O(1) time. Retrieving a value from the Counter requires O(N) time, where N is the number of agents participating in the counting operation.
+
+~~~~~~
+// setup includes and namespace alias for convenience
+#include &amp;lt;iostream&amp;gt;
+#include "madara/knowledge_engine/Knowledge_Base.h"
+#include "madara/knowledge_engine/containers/Counter.h"
+namespace engine = Madara::Knowledge_Engine;
+namespace containers = engine::Containers;
+
+// create a knowledge base and make a multi-dimensional array
+engine::Knowledge_Base knowledge;
+containers::Counter entries ("entries", knowledge);
+
+// add to the number of entries that you are maintaining
+++entries;
+entries += 2;
+
+// other agents across the network may have updated their entry in "entries"
+std::cerr &amp;lt;&amp;lt; "Total entries in network is : " &amp;lt;&amp;lt; entries.to_integer() &amp;lt;&amp;lt; std::endl;
+
+~~~~~~
+

 ----

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Edmondson</dc:creator><pubDate>Sat, 15 Aug 2015 14:05:21 -0000</pubDate><guid>https://sourceforge.net13515279c803e8b9ad760c4fd82a43d05ee18cd5</guid></item><item><title>KnowledgeContainers modified by James Edmondson</title><link>https://sourceforge.net/p/madara/wiki/KnowledgeContainers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -303,7 +303,7 @@

 ## 1.4 Flexible Map

-Flexible Maps are abstractions intended to support multi-dimensional arrays and maps. These containers override the [] operator for both integer-based index and string-based accesses. These operators return other Flexible Map which can either be set to an arbitrary value (such as an integer, string, double, byte buffer, etc.) or subindexed with integers or strings.
+Flexible Maps are abstractions intended to support multi-dimensional arrays and maps. These containers override the [] operator for both integer-based index and string-based accesses. These operators return other Flexible Maps which can either be set to an arbitrary value (such as an integer, string, double, byte buffer, etc.) or subindexed with integers or strings.

 Location: `madara/knowledge_engine/containers/Flex_Map.h` &lt;br /&gt;
 Documentation: [Flex_Map](http://madara.sourceforge.net/docs/cpp/da/dfe/classMadara_1_1Knowledge__Engine_1_1Containers_1_1Flex__Map.html)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">James Edmondson</dc:creator><pubDate>Wed, 17 Jun 2015 17:37:51 -0000</pubDate><guid>https://sourceforge.net4b8370e77ffdb1224fc014ee912927eff2854167</guid></item></channel></rss>