summaryrefslogtreecommitdiff
path: root/transcode.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-20 21:40:08 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-20 21:40:08 +0000
commita8969e999a788c880dbd72d4622ab5c8bdf738a6 (patch)
tree24f13b61066c9c370849aedc4f502afb934e6f55 /transcode.c
parentea64014c56374043926e95906fff06b4dfcd051b (diff)
* transcode.c (transcode_dispatch): constified return value.
* transcode_data.h (rb_transcoding): include pointer to rb_transcoder and auxiliary data. * transcode_data.h (rb_transcoder): all callback functions shoud have their own parameters. * enc/trans/{japanese,single_byte}.c: constified. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15148 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'transcode.c')
-rw-r--r--transcode.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/transcode.c b/transcode.c
index 86d5c6ad0e..ae3c0841aa 100644
--- a/transcode.c
+++ b/transcode.c
@@ -110,7 +110,7 @@ init_transcoder_table(void)
#define encoding_equal(enc1, enc2) (STRCASECMP(enc1, enc2) == 0)
-static rb_transcoder *
+static const rb_transcoder *
transcode_dispatch(const char* from_encoding, const char* to_encoding)
{
char *const key = transcoder_key(from_encoding, to_encoding);
@@ -214,17 +214,17 @@ transcode_loop(char **in_pos, char **out_pos,
*out_p++ = getBT3(next_info);
continue;
case FUNii:
- next_info = (VALUE)(*my_transcoder->func_ii)(next_info);
+ next_info = (VALUE)(*my_transcoder->func_ii)(next_info, my_transcoding);
goto follow_info;
case FUNsi:
- next_info = (VALUE)(*my_transcoder->func_si)(char_start);
+ next_info = (VALUE)(*my_transcoder->func_si)(char_start, my_transcoding);
goto follow_info;
break;
case FUNio:
- out_p += (VALUE)(*my_transcoder->func_io)(next_info, out_p);
+ out_p += (VALUE)(*my_transcoder->func_io)(next_info, out_p, my_transcoding);
break;
case FUNso:
- out_p += (VALUE)(*my_transcoder->func_so)(char_start, out_p);
+ out_p += (VALUE)(*my_transcoder->func_so)(char_start, out_p, my_transcoding);
break;
case INVALID:
goto invalid;
@@ -269,7 +269,7 @@ str_transcode(int argc, VALUE *argv, VALUE *self)
const char *from_e, *to_e;
int from_encidx, to_encidx;
VALUE from_encval, to_encval;
- rb_transcoder *my_transcoder;
+ const rb_transcoder *my_transcoder;
rb_transcoding my_transcoding;
int final_encoding = 0;
@@ -307,7 +307,7 @@ str_transcode(int argc, VALUE *argv, VALUE *self)
return to_encidx;
}
}
- if (STRCASECMP(from_e, to_e) == 0) {
+ if (encoding_equal(from_e, to_e)) {
return -1;
}
@@ -324,7 +324,7 @@ str_transcode(int argc, VALUE *argv, VALUE *self)
dest = rb_str_tmp_new(blen);
bp = RSTRING_PTR(dest);
my_transcoding.ruby_string_dest = dest;
- (*my_transcoder->preprocessor)(&fromp, &bp, (sp+slen), (bp+blen), my_transcoder, &my_transcoding);
+ (*my_transcoder->preprocessor)(&fromp, &bp, (sp+slen), (bp+blen), &my_transcoding);
if (fromp != sp+slen) {
rb_raise(rb_eArgError, "not fully converted, %d bytes left", sp+slen-fromp);
}
@@ -356,7 +356,7 @@ str_transcode(int argc, VALUE *argv, VALUE *self)
dest = rb_str_tmp_new(blen);
bp = RSTRING_PTR(dest);
my_transcoding.ruby_string_dest = dest;
- (*my_transcoder->postprocessor)(&fromp, &bp, (sp+slen), (bp+blen), my_transcoder, &my_transcoding);
+ (*my_transcoder->postprocessor)(&fromp, &bp, (sp+slen), (bp+blen), &my_transcoding);
if (fromp != sp+slen) {
rb_raise(rb_eArgError, "not fully converted, %d bytes left", sp+slen-fromp);
}