Non strict validation. Activate git add in pre-commit hook after astyle.
[anna.git] / include / anna / core / util / MultiRangeExpression.hpp
index 71295b6..15b949c 100644 (file)
@@ -1,8 +1,8 @@
-// ANNA - Anna is Not 'N' Anymore
+// ANNA - Anna is Not Nothingness Anymore
 //
 // (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
 //
-// https://bitbucket.org/testillano/anna
+// http://redmine.teslayout.com/projects/anna-suite
 //
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions
@@ -14,7 +14,7 @@
 // copyright notice, this list of conditions and the following disclaimer
 // in the documentation and/or other materials provided with the
 // distribution.
-//     * Neither the name of Google Inc. nor the names of its
+//     *  Neither the name of the copyright holder nor the names of its
 // contributors may be used to endorse or promote products derived from
 // this software without specific prior written permission.
 //
@@ -63,18 +63,65 @@ public:
   ~MultiRangeExpression() {};
 
 
-  // get
+  /**
+  * Gets the configured literal by mean #setLiteral or #addLiteral
+  *
+  * @return Literal
+  */
   const char * getLiteral(void) const throw() { return a_literal.c_str(); }
+
+  /**
+  * Gets expanded representation for stored literal. E.g.: '1-3,8,10' => '1,2,3,7,8,10'
+  *
+  * @return Expanded literal
+  */
   std::string getExpandedLiteral(void) const throw();
 
+  /**
+  * Simplify stored literal. E.g.: '1,1,1,2,3,7,8,10' => '1-3,8,10' and returns it.
+  *
+  * @return Simplified literal
+  */
+  const char * simplifyLiteral(void) throw();
+
   // helpers
+
+  /**
+  * Returns true if the value provided is contained in the multirange expression literal
+  *
+  * @param value Value to be tested
+  * @return True or false
+  */
   bool contain(const unsigned int & value) const throw() { return (a_data.find(value) != a_data.end()); }
 
-  // set
+  // setters
+
+  /**
+  * Configures a new literal
+  *
+  * @param l Literal to be stored
+  */
   void setLiteral(const char * l) throw() {
     a_literal = l ? l : "";
     refresh();
   }
+
+  /**
+  * Accumulates the provided literal over the stored literal
+  * You could simplify with #simplifyLiteral, because perhaps there is overlapping between current literal and provided one.
+  *
+  * @param l Literal to be added
+  */
+  void addLiteral(const char * l) throw() {
+    if(!l) return;
+
+    if(std::string(l) != "") {
+      a_literal += ",";
+      a_literal += l;
+    }
+
+    refresh();
+  }
 };
 
 };