var VnObject = require('./object');
var Type = require('./type');
var ParamIface = require('./param-iface');
var LotIface = require('./lot-iface');

/**
 * A simple implementation of @ParamIface.
 */
module.exports = new Class({
	Extends: VnObject
	,Implements: ParamIface
	,Tag: 'vn-param'
	,Properties: {
		value: {
			type: null
			,set: function(x) {
				this._setValue(x);
			}
			,get: function() {
				return this._value;
			}
		},
		type: {
			type: Type
			,set: function(x) {
				this._setType(x);
			}
			,get: function() {
				return this._type;
			}
		},
		param: {
			type: ParamIface
			,set: function(x) {
				this._setParam(x);
			}
			,get: function() {
				return this._param;
			}
		},
		master: {
			type: ParamIface
			,set: function(x) {
				this._setParam(x);
			}
			,get: function() {
				return this._param;
			}
		},
		lot: {
			type: LotIface
			,set: function(x) {
				this._setLot(x);
			}
			,get: function() {
				return this._lot;
			}
		},
		name: {
			type: String
			,set: function(x) {
				this._setName(x);
			}
			,get: function() {
				return this._name;
			}
		},
		oneWay: {
			type: Boolean
			,set: function(x) {
				this._oneWay = x;
			}
			,get: function() {
				return this._oneWay;
			}
		}
	}
});