[macruby-changes] [2049] MacRuby/branches/experimental/ext/digest/digest.c
source_changes at macosforge.org
source_changes at macosforge.org
Wed Jul 22 16:31:44 PDT 2009
Revision: 2049
http://trac.macosforge.org/projects/ruby/changeset/2049
Author: pthomson at apple.com
Date: 2009-07-22 16:31:43 -0700 (Wed, 22 Jul 2009)
Log Message:
-----------
Digest::SHA1 works.
Modified Paths:
--------------
MacRuby/branches/experimental/ext/digest/digest.c
Modified: MacRuby/branches/experimental/ext/digest/digest.c
===================================================================
--- MacRuby/branches/experimental/ext/digest/digest.c 2009-07-22 23:31:42 UTC (rev 2048)
+++ MacRuby/branches/experimental/ext/digest/digest.c 2009-07-22 23:31:43 UTC (rev 2049)
@@ -95,7 +95,7 @@
* other)
*/
static VALUE
-rb_digest_instance_update(VALUE self, VALUE str)
+rb_digest_instance_update(VALUE self, SEL sel, VALUE str)
{
rb_raise(rb_eRuntimeError, "%s does not implement update()", RSTRING_PTR(rb_inspect(self)));
}
@@ -113,7 +113,7 @@
* security reasons.
*/
static VALUE
-rb_digest_instance_finish(VALUE self)
+rb_digest_instance_finish(VALUE self, SEL sel)
{
rb_raise(rb_eRuntimeError, "%s does not implement finish()", RSTRING_PTR(rb_inspect(self)));
}
@@ -127,7 +127,7 @@
* This method is overridden by each implementation subclass.
*/
static VALUE
-rb_digest_instance_reset(VALUE self)
+rb_digest_instance_reset(VALUE self, SEL sel)
{
rb_raise(rb_eRuntimeError, "%s does not implement reset()", RSTRING_PTR(rb_inspect(self)));
}
@@ -140,7 +140,7 @@
* to digest_obj.clone().reset().
*/
static VALUE
-rb_digest_instance_new(VALUE self)
+rb_digest_instance_new(VALUE self, SEL sel)
{
VALUE clone = rb_obj_clone(self);
rb_funcall(clone, id_reset, 0);
@@ -160,7 +160,7 @@
* after the process.
*/
static VALUE
-rb_digest_instance_digest(int argc, VALUE *argv, VALUE self)
+rb_digest_instance_digest(VALUE self, SEL sel, int argc, VALUE *argv)
{
VALUE str, value;
@@ -187,7 +187,7 @@
* initial state.
*/
static VALUE
-rb_digest_instance_digest_bang(VALUE self)
+rb_digest_instance_digest_bang(VALUE self, SEL sel)
{
VALUE value = rb_funcall(self, id_finish, 0);
rb_funcall(self, id_reset, 0);
@@ -235,7 +235,7 @@
* initial state.
*/
static VALUE
-rb_digest_instance_hexdigest_bang(VALUE self)
+rb_digest_instance_hexdigest_bang(VALUE self, SEL sel)
{
VALUE value = rb_funcall(self, id_finish, 0);
rb_funcall(self, id_reset, 0);
@@ -250,7 +250,7 @@
* Returns digest_obj.hexdigest().
*/
static VALUE
-rb_digest_instance_to_s(VALUE self)
+rb_digest_instance_to_s(VALUE self, SEL sel)
{
return rb_funcall(self, id_hexdigest, 0);
}
@@ -262,7 +262,7 @@
* Creates a printable version of the digest object.
*/
static VALUE
-rb_digest_instance_inspect(VALUE self)
+rb_digest_instance_inspect(VALUE self, SEL sel)
{
VALUE str;
size_t digest_len = 32; /* about this size at least */
@@ -291,15 +291,15 @@
* returns false.
*/
static VALUE
-rb_digest_instance_equal(VALUE self, VALUE other)
+rb_digest_instance_equal(VALUE self, SEL sel, VALUE other)
{
VALUE str1, str2;
if (rb_obj_is_kind_of(other, rb_mDigest_Instance) == Qtrue) {
- str1 = rb_digest_instance_digest(0, 0, self);
- str2 = rb_digest_instance_digest(0, 0, other);
+ str1 = rb_digest_instance_digest(self, 0, 0, 0);
+ str2 = rb_digest_instance_digest(other, 0, 0, 0);
} else {
- str1 = rb_digest_instance_to_s(self);
+ str1 = rb_digest_instance_to_s(self, 0);
str2 = other;
}
@@ -324,10 +324,10 @@
* If not, digest_obj.digest().length() is returned.
*/
static VALUE
-rb_digest_instance_digest_length(VALUE self)
+rb_digest_instance_digest_length(VALUE self, SEL sel)
{
/* subclasses really should redefine this method */
- VALUE digest = rb_digest_instance_digest(0, 0, self);
+ VALUE digest = rb_digest_instance_digest(self, 0, 0, 0);
/* never blindly assume that #digest() returns a string */
StringValue(digest);
@@ -342,7 +342,7 @@
* Returns digest_obj.digest_length().
*/
static VALUE
-rb_digest_instance_length(VALUE self)
+rb_digest_instance_length(VALUE self, SEL sel)
{
return rb_funcall(self, id_digest_length, 0);
}
@@ -356,7 +356,7 @@
* This method is overridden by each implementation subclass.
*/
static VALUE
-rb_digest_instance_block_length(VALUE self)
+rb_digest_instance_block_length(VALUE self, SEL sel)
{
rb_raise(rb_eRuntimeError, "%s does not implement block_length()", RSTRING_PTR(rb_inspect(self)));
}
@@ -378,7 +378,7 @@
* _string_ is passed to #digest().
*/
static VALUE
-rb_digest_class_s_digest(int argc, VALUE *argv, VALUE klass)
+rb_digest_class_s_digest(VALUE klass, SEL sel, int argc, VALUE *argv)
{
VALUE str;
volatile VALUE obj;
@@ -435,9 +435,9 @@
if (!p)
rb_raise(rb_eRuntimeError, "Digest::Base cannot be directly inherited in Ruby");
+
+ algo = (rb_digest_metadata_t*)RDATA(obj)->data;
- Data_Get_Struct(obj, rb_digest_metadata_t, algo);
-
switch (algo->api_version) {
case 2:
break;
@@ -476,7 +476,7 @@
/* :nodoc: */
static VALUE
-rb_digest_base_copy(VALUE copy, VALUE obj)
+rb_digest_base_copy(VALUE copy, SEL sel, VALUE obj)
{
rb_digest_metadata_t *algo;
void *pctx1, *pctx2;
@@ -496,7 +496,7 @@
/* :nodoc: */
static VALUE
-rb_digest_base_reset(VALUE self)
+rb_digest_base_reset(VALUE self, SEL sel)
{
rb_digest_metadata_t *algo;
void *pctx;
@@ -512,7 +512,7 @@
/* :nodoc: */
static VALUE
-rb_digest_base_update(VALUE self, VALUE str)
+rb_digest_base_update(VALUE self, SEL sel, VALUE str)
{
rb_digest_metadata_t *algo;
void *pctx;
@@ -529,7 +529,7 @@
/* :nodoc: */
static VALUE
-rb_digest_base_finish(VALUE self)
+rb_digest_base_finish(VALUE self, SEL sel)
{
rb_digest_metadata_t *algo;
void *pctx;
@@ -550,7 +550,7 @@
/* :nodoc: */
static VALUE
-rb_digest_base_digest_length(VALUE self)
+rb_digest_base_digest_length(VALUE self, SEL sel)
{
rb_digest_metadata_t *algo;
@@ -594,26 +594,26 @@
rb_mDigest_Instance = rb_define_module_under(rb_mDigest, "Instance");
/* instance methods that should be overridden */
- rb_define_method(rb_mDigest_Instance, "update", rb_digest_instance_update, 1);
- rb_define_method(rb_mDigest_Instance, "<<", rb_digest_instance_update, 1);
- rb_define_private_method(rb_mDigest_Instance, "finish", rb_digest_instance_finish, 0);
- rb_define_method(rb_mDigest_Instance, "reset", rb_digest_instance_reset, 0);
- rb_define_method(rb_mDigest_Instance, "digest_length", rb_digest_instance_digest_length, 0);
- rb_define_method(rb_mDigest_Instance, "block_length", rb_digest_instance_block_length, 0);
+ rb_objc_define_method(rb_mDigest_Instance, "update", rb_digest_instance_update, 1);
+ rb_objc_define_method(rb_mDigest_Instance, "<<", rb_digest_instance_update, 1);
+ rb_objc_define_private_method(rb_mDigest_Instance, "finish", rb_digest_instance_finish, 0);
+ rb_objc_define_method(rb_mDigest_Instance, "reset", rb_digest_instance_reset, 0);
+ rb_objc_define_method(rb_mDigest_Instance, "digest_length", rb_digest_instance_digest_length, 0);
+ rb_objc_define_method(rb_mDigest_Instance, "block_length", rb_digest_instance_block_length, 0);
/* instance methods that may be overridden */
- rb_define_method(rb_mDigest_Instance, "==", rb_digest_instance_equal, 1);
- rb_define_method(rb_mDigest_Instance, "inspect", rb_digest_instance_inspect, 0);
+ rb_objc_define_method(rb_mDigest_Instance, "==", rb_digest_instance_equal, 1);
+ rb_objc_define_method(rb_mDigest_Instance, "inspect", rb_digest_instance_inspect, 0);
/* instance methods that need not usually be overridden */
- rb_define_method(rb_mDigest_Instance, "new", rb_digest_instance_new, 0);
- rb_define_method(rb_mDigest_Instance, "digest", rb_digest_instance_digest, -1);
- rb_define_method(rb_mDigest_Instance, "digest!", rb_digest_instance_digest_bang, 0);
- rb_define_method(rb_mDigest_Instance, "hexdigest", rb_digest_instance_hexdigest, -1);
- rb_define_method(rb_mDigest_Instance, "hexdigest!", rb_digest_instance_hexdigest_bang, 0);
- rb_define_method(rb_mDigest_Instance, "to_s", rb_digest_instance_to_s, 0);
- rb_define_method(rb_mDigest_Instance, "length", rb_digest_instance_length, 0);
- rb_define_method(rb_mDigest_Instance, "size", rb_digest_instance_length, 0);
+ rb_objc_define_method(rb_mDigest_Instance, "new", rb_digest_instance_new, 0);
+ rb_objc_define_method(rb_mDigest_Instance, "digest", rb_digest_instance_digest, -1);
+ rb_objc_define_method(rb_mDigest_Instance, "digest!", rb_digest_instance_digest_bang, 0);
+ rb_objc_define_method(rb_mDigest_Instance, "hexdigest", rb_digest_instance_hexdigest, -1);
+ rb_objc_define_method(rb_mDigest_Instance, "hexdigest!", rb_digest_instance_hexdigest_bang, 0);
+ rb_objc_define_method(rb_mDigest_Instance, "to_s", rb_digest_instance_to_s, 0);
+ rb_objc_define_method(rb_mDigest_Instance, "length", rb_digest_instance_length, 0);
+ rb_objc_define_method(rb_mDigest_Instance, "size", rb_digest_instance_length, 0);
/*
* class Digest::Class
@@ -622,7 +622,7 @@
rb_include_module(rb_cDigest_Class, rb_mDigest_Instance);
/* class methods */
- rb_define_singleton_method(rb_cDigest_Class, "digest", rb_digest_class_s_digest, -1);
+ rb_objc_define_method(*(VALUE *)rb_cDigest_Class, "digest", rb_digest_class_s_digest, -1);
rb_objc_define_method(*(VALUE *)rb_cDigest_Class, "hexdigest", rb_digest_class_s_hexdigest, -1);
id_metadata = rb_intern("metadata");
@@ -630,13 +630,13 @@
/* class Digest::Base < Digest::Class */
rb_cDigest_Base = rb_define_class_under(rb_mDigest, "Base", rb_cDigest_Class);
- rb_define_alloc_func(rb_cDigest_Base, rb_digest_base_alloc);
+ rb_objc_define_method(*(VALUE *)rb_cDigest_Base, "alloc", rb_digest_base_alloc, 0);
- rb_define_method(rb_cDigest_Base, "initialize_copy", rb_digest_base_copy, 1);
- rb_define_method(rb_cDigest_Base, "reset", rb_digest_base_reset, 0);
- rb_define_method(rb_cDigest_Base, "update", rb_digest_base_update, 1);
- rb_define_method(rb_cDigest_Base, "<<", rb_digest_base_update, 1);
- rb_define_private_method(rb_cDigest_Base, "finish", rb_digest_base_finish, 0);
- rb_define_method(rb_cDigest_Base, "digest_length", rb_digest_base_digest_length, 0);
- rb_define_method(rb_cDigest_Base, "block_length", rb_digest_base_block_length, 0);
+ rb_objc_define_method(rb_cDigest_Base, "initialize_copy", rb_digest_base_copy, 1);
+ rb_objc_define_method(rb_cDigest_Base, "reset", rb_digest_base_reset, 0);
+ rb_objc_define_method(rb_cDigest_Base, "update", rb_digest_base_update, 1);
+ rb_objc_define_method(rb_cDigest_Base, "<<", rb_digest_base_update, 1);
+ rb_objc_define_private_method(rb_cDigest_Base, "finish", rb_digest_base_finish, 0);
+ rb_objc_define_method(rb_cDigest_Base, "digest_length", rb_digest_base_digest_length, 0);
+ rb_objc_define_method(rb_cDigest_Base, "block_length", rb_digest_base_block_length, 0);
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090722/265bd005/attachment-0001.html>
More information about the macruby-changes
mailing list