/**
 *
 * @copyright  2019 so-o.org
 * @version    1
 * @link       http://www.so-o.org
 */

"use strict";

import { defclass, sendmsg, supersend } from 'So-o';

defclass('X', null, 1,
		['count'],
		['value'],
		{	'new':	(self, ...args) => {
						let i = supersend(X, self, 'new', ...args);

						sendmsg(self, 'set', 'count', sendmsg(self, 'get', 'count') + 1);

						return i;
					},
			'initialize':	(self) => sendmsg(self, 'set', 'count', 0),
			'count':	(self) => sendmsg(self, 'get', 'count')
		},
		{	'init':	(self, value = 0) => {
				supersend(X, self, 'init');

				sendmsg(self, 'set', 'value', value);

				return self;
			},
			'free':	(self) => {
				let count = sendmsg(sendmsg(self, 'class'), 'get', 'count');

				sendmsg(sendmsg(self, 'class'), 'set', 'count', count -1);

				supersend(X, self, 'free');
			}
		}
);
