# Path: xnb_parse/type_reader.py
# class TypeReaderPlugin(Plugin):
#     """
#     type reader plugins
#     """
# 
# class BaseTypeReader(object):
#     target_type = None
#     reader_name = None
#     is_value_type = False
#     is_generic_type = False
#     is_enum_type = False
#     file_platform = None
#     file_version = None
# 
#     def __init__(self, stream=None, version=None):
#         self.stream = stream
#         self.version = version
# 
#     def __str__(self):
#         return self.reader_name
# 
#     def read(self):
#         raise ReaderError("Unimplemented type reader: '{}'".format(self.reader_name))
# 
#     def init_reader(self, file_platform=None, file_version=None):
#         self.file_platform = file_platform
#         self.file_version = file_version
# 
# class ValueTypeReader(BaseTypeReader):
#     is_value_type = True
# 
# class ReaderError(Error):
#     pass


from xnb_parse.type_reader import TypeReaderPlugin, BaseTypeReader, ValueTypeReader, ReaderError
    reader_name = 'Microsoft.Xna.Framework.Content.SingleReader'

    def read(self):
        return self.stream.read_single()


class DoubleReader(ValueTypeReader, TypeReaderPlugin):
    target_type = 'System.Double'
    reader_name = 'Microsoft.Xna.Framework.Content.DoubleReader'

    def read(self):
        return self.stream.read_double()


class BooleanReader(ValueTypeReader, TypeReaderPlugin):
    target_type = 'System.Boolean'
    reader_name = 'Microsoft.Xna.Framework.Content.BooleanReader'

    def read(self):
        return self.stream.read_boolean()


class CharReader(ValueTypeReader, TypeReaderPlugin):
    target_type = 'System.Char'
    reader_name = 'Microsoft.Xna.Framework.Content.CharReader'

    def read(self):
        return self.stream.read_char()



# Path: xnb_parse/type_reader.py
# class TypeReaderPlugin(Plugin):
#     """
#     type reader plugins
#     """
# 
# class BaseTypeReader(object):
#     target_type = None
#     reader_name = None
#     is_value_type = False
#     is_generic_type = False
#     is_enum_type = False
#     file_platform = None
#     file_version = None
# 
#     def __init__(self, stream=None, version=None):
#         self.stream = stream
#         self.version = version
# 
#     def __str__(self):
#         return self.reader_name
# 
#     def read(self):
#         raise ReaderError("Unimplemented type reader: '{}'".format(self.reader_name))
# 
#     def init_reader(self, file_platform=None, file_version=None):
#         self.file_platform = file_platform
#         self.file_version = file_version
# 
# class ValueTypeReader(BaseTypeReader):
#     is_value_type = True
# 
# class ReaderError(Error):
#     pass


# Path: xnb_parse/type_readers/xna_primitive.py
from xnb_parse.type_reader import TypeReaderPlugin, BaseTypeReader, ValueTypeReader, ReaderError

    reader_name = 'Microsoft.Xna.Framework.Content.SingleReader'

    def read(self):
        return self.stream.read_single()


class DoubleReader(ValueTypeReader, TypeReaderPlugin):
    target_type = 'System.Double'
    reader_name = 'Microsoft.Xna.Framework.Content.DoubleReader'

    def read(self):
        return self.stream.read_double()


class BooleanReader(ValueTypeReader, TypeReaderPlugin):
    target_type = 'System.Boolean'
    reader_name = 'Microsoft.Xna.Framework.Content.BooleanReader'

    def read(self):
        return self.stream.read_boolean()


class CharReader(ValueTypeReader, TypeReaderPlugin):
    target_type = 'System.Char'
    reader_name = 'Microsoft.Xna.Framework.Content.CharReader'

    def read(self):
        return self.stream.read_char()



class StringReader(BaseTypeReader, TypeReaderPlugin):