From b89a7ee8b956c96a1dcee995ea840feddc5d4b27 Mon Sep 17 00:00:00 2001 From: Pierre Frisch Date: Thu, 22 Dec 2011 07:25:50 -0800 Subject: First commit of Ninja to ninja-internal Signed-off-by: Valerio Virgillito --- node_modules/montage/core/enum.js | 86 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100755 node_modules/montage/core/enum.js (limited to 'node_modules/montage/core/enum.js') diff --git a/node_modules/montage/core/enum.js b/node_modules/montage/core/enum.js new file mode 100755 index 00000000..309279b7 --- /dev/null +++ b/node_modules/montage/core/enum.js @@ -0,0 +1,86 @@ +/* + This file contains proprietary software owned by Motorola Mobility, Inc.
+ No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
+ (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. +
*/ +/** + @module montage/core/enum + @requires montage/core/core + @requires montage/core/logger + */ +var Montage = require("montage").Montage, + logger = require("core/logger").logger("enum"); +/** + @class module:montage/core/enum.Enum + @extends module:montage/core/core.Montage + */ +exports.Enum = Montage.create(Montage, /** @lends module:montage/core/enum.Enum# */ { +/** + @private +*/ + _value: { + value: 0 + }, +/** + @function + @returns itself + */ + init : { + value: function() { + if (Object.isSealed(this)) { + logger.error(this, "Object is sealed"); + } + return this; + } + }, +/** + @function + @returns {Object} Object.seal(this) + */ + initWithMembers : { + value: function() { + if (Object.isSealed(this)) { + logger.error(this, "Object is sealed"); + return this; + } + var member, i; + for (i = 0; typeof (member = arguments[i]) !== "undefined"; i++) { + if (member !== null) { + this.addMember(member); + } else { + logger.error(this, "Member at index " + i + " is null"); + } + } + return Object.seal(this); + } + }, +/** + @function + @param {String} member The member to be added. + */ + addMember : { + value: function(member) { + + if (typeof this[member] === "undefined") { + Object.defineProperty(this, member, { + writable: false, + configurable: false, + enumerable: true, + value: this._value + }); + this._value++; + } + } + }, +/** + @function + @returns {Object} Object.seal(this) + */ + seal : { + value: function() { + if (! Object.isSealed(this)) { + return Object.seal(this); + } + } + } +}); -- cgit v1.2.3