#!/usr/bin/python # -*- coding: utf-8 -*- # \file %filename%.py # \brief TODO # \author Florent Guiotte # \version 0.1 # \date 11 avril 2018 # # TODO details import logging class Stack(object): def __init__(self, begin=0, size=1, desc=None, symb=None) : self.logger = logging.getLogger('Stack') self.begin = begin self.end = begin + size self.desc = list() self.symb = list() for i in range(size): self.desc.append(desc.copy() if isinstance(desc, list) else [desc]) for i in range(size): self.symb.append(symb.copy() if isinstance(symb, list) else [symb]) def copy(self): self.logger.debug('Copy method called') new_stack = Stack() new_stack.__dict__ = self.__dict__.copy() new_stack.desc = self.desc.copy() new_stack.symb = self.symb.copy() self.logger.debug('Old Meta: {}, New Meta: {}'.format( hex(id(self.desc)), hex(id(new_stack.symb)))) return new_stack def __str__(self): return ("Stack: begin: {}, end: {}, desc: {}, symb: {}".format( self.begin, self.end, self.desc, self.symb))