text: /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *   http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   * KIND, either express or implied.  See the License for the
   * specific language governing permissions and limitations
   * under the License.
   *
   */
  
  /*****************************************************************************/
  /*                                                                           */
  /*                             proton.Data.TypedNumber                       */
  /*                                                                           */
  /*****************************************************************************/
  
  // ---------------------- JavaScript Number Extensions ------------------------ 
  
  Number.prototype['ubyte'] = function() {
      return new Data.TypedNumber('UBYTE', this);
  };
  
  Number.prototype['byte'] = function() {
      return new Data.TypedNumber('BYTE', this);
  };
  
  Number.prototype['ushort'] = function() {
      return new Data.TypedNumber('USHORT', this);
  };
  
  Number.prototype['short'] = function() {
      return new Data.TypedNumber('SHORT', this);
  };
  
  Number.prototype['uint'] = function() {
      return new Data.TypedNumber('UINT', this);
  };
  
  Number.prototype['int'] = function() {
      return new Data.TypedNumber('INT', this);
  };
  
  Number.prototype['ulong'] = function() {
      return new Data.TypedNumber('ULONG', this);
  };
  
  Number.prototype['long'] = function() {
      return new Data.TypedNumber('LONG', this);
  };
  
  Number.prototype['float'] = function() {
      return new Data.TypedNumber('FLOAT', this);
  };
  
  Number.prototype['double'] = function() {
      return new Data.TypedNumber('DOUBLE', this);
  };
  
  Number.prototype['char'] = function() {
      return new Data.TypedNumber('CHAR', this);
  };
  
  String.prototype['char'] = function() {
      return new Data.TypedNumber('CHAR', this.charCodeAt(0));
  };
  
  // ------------------------- proton.Data.TypedNumber -------------------------- 
  /**
   * Create a proton.Data.TypedNumber.
   * @classdesc
   * This class is a simple wrapper class that allows a "type" to be recorded for
   * a number. The idea is that the JavaScript Number class is extended with extra
   * methods to allow numbers to be "modified" to TypedNumbers, so for example
   * 1.0.float() would modify 1.0 by returning a TypedNumber with type = FLOAT
   * and value = 1. The strings used for type correspond to the names of the Data
   * put* methods e.g. UBYTE, BYTE, USHORT, SHORT, UINT, INT, ULONG, LONG, FLOAT,
   * DOUBLE, CHAR so that the correct method to call can be derived from the type.
   * @constructor proton.Data.TypedNumber
   * @param {(string|number)} type the type of the Number either as a string or number.
   *        Stored internally as a string corresponding to one of the TypeNames.
   * @param {number} value the value of the Number.
   */
  // Use dot notation as it is a "protected" inner class not exported from the closure.
  Data.TypedNumber = function(type, value) { // Data.TypedNumber Constructor.
      this.type  = (typeof type === 'number') ? Data['TypeNames'][type] : type;
      this.value = value;
  };
  
  /**
   * @method toString
   * @memberof! proton.Data.TypedNumber#
   * @returns {string} the String form of a {@link proton.Data.TypedNumber}.
   */
  Data.TypedNumber.prototype.toString = Data.TypedNumber.prototype.valueOf = function() {
      return +this.value;
  };
  
  
  