1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#ifndef __macrovsa_Number__
#define __macrovsa_Number__

#include "Symbol.hpp"

namespace macrovsa {
  /**
   * @class Number
   * @description Implements a macroscopic ersatz of a VSA positive integer.
   * - It is implemented via successive [Binding](./Binding.html), without using a C++ `std::list`.
   */
  class Number {
public:

    /**
     * @function getInt
     * @memberof Number
     * @static
     * @description Returns the Symbol corresponding to a given positive integer.
     * - Here, instead of the usual iterative binding solution, we cheat by using string representation of numbers.
     *  - Therefore we do not have the `s_{n+p} = B_{s_0}^p s_n` recurrence property for a symbol `s_n` representing `n`.
     * @param {uint} value The symbol numeric value. Reasonnable value is between 0 and about 1000.
     * @return {Symbol} A reference to the corresponding value.
     */
    static const Symbol& getInt(unsigned int value);
  };
}

#endif