11ae29591efbb29492ce05378909ccf4028d7c1eeBehdad Esfahbodfrom __future__ import print_function, division, absolute_import
27ed91eca1eaa96b79eae780778e89bb9ec44c1eeBehdad Esfahbodfrom fontTools.misc.py23 import *
3d0a31f5a43c4743671c4941fe45dda059aada0beBehdad Esfahbodfrom fontTools.ttLib import getClassTag
47842e56b97ce677b83bdab09cda48bc2d89ac75aJust
5e388db566b9ba42669c7e353db4293cf27bc2a5bBehdad Esfahbodclass DefaultTable(object):
67842e56b97ce677b83bdab09cda48bc2d89ac75aJust
77842e56b97ce677b83bdab09cda48bc2d89ac75aJust	dependencies = []
87842e56b97ce677b83bdab09cda48bc2d89ac75aJust
9d0a31f5a43c4743671c4941fe45dda059aada0beBehdad Esfahbod	def __init__(self, tag=None):
10d0a31f5a43c4743671c4941fe45dda059aada0beBehdad Esfahbod		if tag is None:
11d0a31f5a43c4743671c4941fe45dda059aada0beBehdad Esfahbod			tag = getClassTag(self.__class__)
12960280bbd6277b56be45595a050a720a49fd5917Behdad Esfahbod		self.tableTag = Tag(tag)
137842e56b97ce677b83bdab09cda48bc2d89ac75aJust
147842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def decompile(self, data, ttFont):
157842e56b97ce677b83bdab09cda48bc2d89ac75aJust		self.data = data
167842e56b97ce677b83bdab09cda48bc2d89ac75aJust
177842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def compile(self, ttFont):
187842e56b97ce677b83bdab09cda48bc2d89ac75aJust		return self.data
197842e56b97ce677b83bdab09cda48bc2d89ac75aJust
2081acddadbd0384e105becc1eac292e50e21084a5Behdad Esfahbod	def toXML(self, writer, ttFont, progress=None):
21f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust		if hasattr(self, "ERROR"):
22f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust			writer.comment("An error occurred during the decompilation of this table")
23f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust			writer.newline()
24f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust			writer.comment(self.ERROR)
25f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust			writer.newline()
267842e56b97ce677b83bdab09cda48bc2d89ac75aJust		writer.begintag("hexdata")
277842e56b97ce677b83bdab09cda48bc2d89ac75aJust		writer.newline()
287842e56b97ce677b83bdab09cda48bc2d89ac75aJust		writer.dumphex(self.compile(ttFont))
297842e56b97ce677b83bdab09cda48bc2d89ac75aJust		writer.endtag("hexdata")
307842e56b97ce677b83bdab09cda48bc2d89ac75aJust		writer.newline()
317842e56b97ce677b83bdab09cda48bc2d89ac75aJust
323a9fd301808f5a8991ca9ac44028d1ecb22d307fBehdad Esfahbod	def fromXML(self, name, attrs, content, ttFont):
337842e56b97ce677b83bdab09cda48bc2d89ac75aJust		from fontTools.misc.textTools import readHex
347842e56b97ce677b83bdab09cda48bc2d89ac75aJust		from fontTools import ttLib
35180ace6a5ff1399ec53bc696e8bef7cce6eef39aBehdad Esfahbod		if name != "hexdata":
36cd5aad92f23737ff93a110d5c73d624658a28da8Behdad Esfahbod			raise ttLib.TTLibError("can't handle '%s' element" % name)
377842e56b97ce677b83bdab09cda48bc2d89ac75aJust		self.decompile(readHex(content), ttFont)
387842e56b97ce677b83bdab09cda48bc2d89ac75aJust
397842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def __repr__(self):
407842e56b97ce677b83bdab09cda48bc2d89ac75aJust		return "<'%s' table at %x>" % (self.tableTag, id(self))
417842e56b97ce677b83bdab09cda48bc2d89ac75aJust
428ea6439d3b66c5acc246261d761d4375bcb7cfabBehdad Esfahbod	def __ne__(self, other):
438ea6439d3b66c5acc246261d761d4375bcb7cfabBehdad Esfahbod		return not self.__eq__(other)
44b7fd2e19138b177403689bdd6989cfd2402aa2b3Behdad Esfahbod	def __eq__(self, other):
45b7fd2e19138b177403689bdd6989cfd2402aa2b3Behdad Esfahbod		if type(self) != type(other):
46273a90074ac209d67b5e2cb8ea510cd6c2b10272Behdad Esfahbod			return NotImplemented
47b7fd2e19138b177403689bdd6989cfd2402aa2b3Behdad Esfahbod		return self.__dict__ == other.__dict__
48