/* call-seq:
* mod.inspect => String
*
* Produce a concise representation of the Mod object.
*/
VALUE
rb_ldap_mod_inspect (VALUE self)
{
VALUE str;
VALUE hash = rb_hash_new ();
char *c;
c = rb_obj_classname (self);
str = rb_str_new (0, strlen (c) + 10 + 16 + 1); /* 10:tags 16:addr 1:nul */
sprintf (RSTRING (str)->ptr, "#<%s:0x%lx ", c, self);
RSTRING (str)->len = strlen (RSTRING (str)->ptr);
switch (FIX2INT (rb_ldap_mod_op (self)) & ~LDAP_MOD_BVALUES)
{
case LDAP_MOD_ADD:
rb_str_cat2 (str, "LDAP_MOD_ADD");
break;
case LDAP_MOD_DELETE:
rb_str_cat2 (str, "LDAP_MOD_DELETE");
break;
case LDAP_MOD_REPLACE:
rb_str_cat2 (str, "LDAP_MOD_REPLACE");
break;
#ifdef LDAP_MOD_INCREMENT
case LDAP_MOD_INCREMENT:
rb_str_cat2 (str, "LDAP_MOD_INCREMENT");
break;
#endif
#ifdef LDAP_MOD_OP
case LDAP_MOD_OP:
rb_str_cat2 (str, "LDAP_MOD_OP");
break;
#endif
default:
/* We shouldn't end up here. */
rb_str_cat2 (str, "unknown");
break;
}
if (FIX2INT (rb_ldap_mod_op (self)) & LDAP_MOD_BVALUES)
rb_str_cat2 (str, "|LDAP_MOD_BVALUES");
rb_str_cat2 (str, "\n");
rb_hash_aset (hash, rb_ldap_mod_type (self), rb_ldap_mod_vals (self));
rb_str_concat (str, rb_inspect (hash));
rb_str_cat2 (str, ">");
return str;
}