#ifndef ADDRESS_H
#define ADDRESS_H

#include <iomanip>
#include <iostream>
using namespace std;

namespace hierarchy_memory          {
  namespace cache                     {
    namespace cache_multilevel          {
      namespace cache_onelevel            {

	class address_t
	{
	public    : uint32_t        tag;
	public    : uint32_t        familly;
	public    : uint32_t        offset;
      
	  friend ostream& operator<< (ostream& output_stream, const address_t &x)
	  {
	    output_stream << hex
			  << setw(8) << setfill('0') << x.tag     << " "
			  << setw(8) << setfill('0') << x.familly << " "
			  << setw(8) << setfill('0') << x.offset 
			  << dec;

	    return output_stream;
	  }
	};

      };};};};

#endif //!ADDRESS_H
