blob: ccf08e37176f7bc5dd96d561e507fe36434b5ff0 [file] [log] [blame]
Guido van Rossum1abd82c2000-03-28 01:58:50 +00001""" Python 'mbcs' Codec for Windows
2
3
4Cloned by Mark Hammond (mhammond@skippinet.com.au) from ascii.py,
5which was written by Marc-Andre Lemburg (mal@lemburg.com).
6
7(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
8
9"""
Martin v. Löwis0eac1182006-06-15 06:45:05 +000010# Import them explicitly to cause an ImportError
11# on non-Windows systems
12from codecs import mbcs_encode, mbcs_decode
13# for IncrementalDecoder, IncrementalEncoder, ...
Guido van Rossum1abd82c2000-03-28 01:58:50 +000014import codecs
15
16### Codec APIs
17
18class Codec(codecs.Codec):
19
20 # Note: Binding these as C functions will result in the class not
21 # converting them to methods. This is intended.
Martin v. Löwis0eac1182006-06-15 06:45:05 +000022 encode = mbcs_encode
23 decode = mbcs_decode
Guido van Rossum1abd82c2000-03-28 01:58:50 +000024
Walter Dörwaldabb02e52006-03-15 11:35:15 +000025class IncrementalEncoder(codecs.IncrementalEncoder):
26 def encode(self, input, final=False):
Martin v. Löwis0eac1182006-06-15 06:45:05 +000027 return mbcs_encode(input,self.errors)[0]
Walter Dörwaldabb02e52006-03-15 11:35:15 +000028
Martin v. Löwisd8251432006-06-14 05:21:04 +000029class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
30 def _buffer_decode(self, input, errors, final):
Martin v. Löwis0eac1182006-06-15 06:45:05 +000031 return mbcs_decode(input,self.errors,final)
Martin v. Löwisd8251432006-06-14 05:21:04 +000032
Guido van Rossum1abd82c2000-03-28 01:58:50 +000033class StreamWriter(Codec,codecs.StreamWriter):
34 pass
Tim Peters469cdad2002-08-08 20:19:19 +000035
Guido van Rossum1abd82c2000-03-28 01:58:50 +000036class StreamReader(Codec,codecs.StreamReader):
37 pass
38
39class StreamConverter(StreamWriter,StreamReader):
40
41 encode = codecs.mbcs_decode
42 decode = codecs.mbcs_encode
43
44### encodings module API
45
46def getregentry():
Walter Dörwaldabb02e52006-03-15 11:35:15 +000047 return codecs.CodecInfo(
48 name='mbcs',
49 encode=Codec.encode,
50 decode=Codec.decode,
51 incrementalencoder=IncrementalEncoder,
52 incrementaldecoder=IncrementalDecoder,
53 streamreader=StreamReader,
54 streamwriter=StreamWriter,
55 )