| /*------------------------------------------------------------------------- |
| * drawElements Quality Program OpenGL ES Utilities |
| * ------------------------------------------------ |
| * |
| * Copyright 2014 The Android Open Source Project |
| * |
| * Licensed 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. |
| * |
| */ |
| |
| /** |
| * This class allows one to create a random integer, floating point number or boolean (TODO, choose random items from a list and shuffle an array) |
| */ |
| 'use strict'; |
| goog.provide('framework.delibs.debase.deString'); |
| goog.require('framework.delibs.debase.deMath'); |
| |
| goog.scope(function() { |
| |
| var deString = framework.delibs.debase.deString; |
| var deMath = framework.delibs.debase.deMath; |
| |
| var DE_ASSERT = function(x) { |
| if (!x) |
| throw new Error('Assert failed'); |
| }; |
| |
| /** |
| * Compute hash from string. |
| * @param {?string} str String to compute hash value for. |
| * @return {number} Computed hash value. |
| */ |
| deString.deStringHash = function(str) { |
| /* \note [pyry] This hash is used in DT_GNU_HASH and is proven |
| to be robust for symbol hashing. */ |
| /* \see http://sources.redhat.com/ml/binutils/2006-06/msg00418.html */ |
| /** @type {number} */ var hash = 5381; |
| /** @type {number} */ var c; |
| |
| DE_ASSERT(str != undefined); |
| if (str !== null) { |
| var i = 0; |
| while (i < str.length) { //(c = (unsigned int)*str++) != 0) |
| c = str.charCodeAt(i); //trunc to 8-bit |
| hash = (hash << 5) + hash + c; |
| i++; |
| } |
| } |
| return hash; |
| }; |
| |
| /** |
| * Checks if a JS string is either empty or undefined |
| * @param {string} str |
| * @return {boolean} |
| */ |
| deString.deIsStringEmpty = function(str) { |
| if (str === undefined || str.length == 0) |
| return true; |
| return false; |
| }; |
| |
| /** |
| * @private |
| * @param {Object} enumType |
| * @param {?} value |
| * @return {string} |
| */ |
| deString.getString = function(enumType, value) { |
| for (var p in enumType) |
| if (enumType[p] == value) |
| return p; |
| |
| if (typeof value === 'undefined') |
| return 'undefined'; |
| |
| if (!value) |
| return 'null'; |
| |
| return value.toString(10); |
| }; |
| |
| /** |
| * @param {Object} enumType |
| * @param {?} value |
| * @return {string} |
| */ |
| deString.enumToString = function(enumType, value) { |
| if (typeof deString.enumToString[enumType] === 'undefined') |
| deString.enumToString[enumType] = {}; |
| |
| var table = deString.enumToString[enumType]; |
| if (typeof table[value] === 'undefined') { |
| var v = deString.getString(enumType, value); |
| table[value] = v; |
| } |
| |
| return table[value]; |
| }; |
| |
| }); |