Tanstore
Jump to navigation
Jump to search
Tanstore stands for Tommyaweosme's alphanumeric storage unit.
Possible values
0 (space) 1-26 alphabet 27-36 numberbet 37 (newline)
A more explicit listing comprehending the recognized symbols and their affiliated Tanstore character codes may be extracted from the following tabulation:
| Code | Character | Category |
|---|---|---|
| 0 | (space) | (space) |
| 1 | A | alphabet |
| 2 | B | alphabet |
| 3 | C | alphabet |
| 4 | D | alphabet |
| 5 | E | alphabet |
| 6 | F | alphabet |
| 7 | G | alphabet |
| 8 | H | alphabet |
| 9 | I | alphabet |
| 10 | J | alphabet |
| 11 | K | alphabet |
| 12 | L | alphabet |
| 13 | M | alphabet |
| 14 | N | alphabet |
| 15 | O | alphabet |
| 16 | P | alphabet |
| 17 | Q | alphabet |
| 18 | R | alphabet |
| 19 | S | alphabet |
| 20 | T | alphabet |
| 21 | U | alphabet |
| 22 | V | alphabet |
| 23 | W | alphabet |
| 24 | X | alphabet |
| 25 | Y | alphabet |
| 26 | Z | alphabet |
| 27 | 0 | numberbet |
| 28 | 1 | numberbet |
| 29 | 2 | numberbet |
| 30 | 3 | numberbet |
| 31 | 4 | numberbet |
| 32 | 5 | numberbet |
| 33 | 6 | numberbet |
| 34 | 7 | numberbet |
| 35 | 8 | numberbet |
| 36 | 9 | numberbet |
| 37 | (newline) | (newline) |
Implementations
An peirastic implementation of an encoder and decoder in the Common Lisp programming language shall be adduced below:
(deftype tanstore-code ()
"Defines the valid integral range for Tanstore character codes."
'(integer 0 37))
;;; -------------------------------------------------------
(deftype destination ()
"Defines a sink for output operations."
'(or null (eql T) stream string))
;;; -------------------------------------------------------
(define-condition Tanstore-Error (error)
()
(:documentation
"Furnishes the firmament for all Tanstore-related errors."))
;;; -------------------------------------------------------
(define-condition No-Tanstore-Character-Error (Tanstore-Error)
((offending-character
:initarg :offending-character
:initform (error "Missing offending character.")
:reader no-tanstore-character-error-offending-character
:type character
:documentation "The non-Tanstore symbol."))
(:report
(lambda (condition stream)
(declare (type No-Tanstore-Character-Error condition))
(declare (type destination stream))
(format stream "No Tanstore symbol: ~c."
(no-tanstore-character-error-offending-character condition))))
(:documentation
"Communicates the attempt to request a non-Tanstore symbol."))
;;; -------------------------------------------------------
(define-condition Invalid-Tanstore-Code-Error (Tanstore-Error)
((offending-code
:initarg :offending-code
:initform (error "Missing offending code.")
:reader invalid-tanstore-code-error-offending-code
:type integer
:documentation "The number representing no valid Tanstore code."))
(:report
(lambda (condition stream)
(declare (type Invalid-Tanstore-Code-Error condition))
(declare (type destination stream))
(format stream "No valid Tanstore code: ~d."
(invalid-tanstore-code-error-offending-code condition))))
(:documentation
"Communicates an attempt to request a character by adminiculum of
an invalid Tanstore code."))
;;; -------------------------------------------------------
(declaim (type (simple-string 38) +TANSTORE-SYMBOLS+))
;;; -------------------------------------------------------
(defparameter +TANSTORE-SYMBOLS+
" ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
"
"Maps the recognized characters via their indices into this string to
their Tanstore codes.")
;;; -------------------------------------------------------
(defun get-tanstore-code (character)
"Returns the Tanstore code affiliated with the CHARACTER, or signals
an error of the type ``No-Tanstore-Character-Error`` upon its
disrespondency with the Tanstore character repertoire."
(declare (type character character))
(the tanstore-code
(or (position character +TANSTORE-SYMBOLS+ :test #'char-equal)
(error 'No-Tanstore-Character-Error :offending-character character))))
;;; -------------------------------------------------------
(defun get-tanstore-character (code)
"Returns the character amenable to the Tanstore character CODE, or
signals an error of the type ``Invalid-Tanstore-Code-Error`` upon
its disrespondency with the valid Tanstore character code range."
(declare (type tanstore-code code))
(the character
(if (array-in-bounds-p +TANSTORE-SYMBOLS+ code)
(schar +TANSTORE-SYMBOLS+ code)
(error 'Invalid-Tanstore-Code-Error :offending-code code))))