>| NEWOBJ(obj, c-type) -- allocate memory for an object >| OBJSETUP(obj, class, T_class); -- set appropriate flags >| rb_obj_call_init(obj, argc, argv); -- call initialize > >Yes. But I think it's better for T_DATA object to use >Data_Make_Struct/Data_Wrap_Struct, as Clemens stated. Agreed, but here's my real question: suppose you have a non-built- in class such as MD5, which does not expose a C-level constructor (something like rb_str_new, rb_time_new, etc). What is the preferred way to create a new MD5 object from C code? Thanks, /\ndy -- Andrew Hunt, The Pragmatic Programmers, LLC. Innovative Object-Oriented Software Development web: http://www.pragmaticprogrammer.com email: andy / pragmaticprogrammer.com -- Our New Book: "The Pragmatic Programmer" Published by Addison-Wesley Oct 1999 (see www.pragmaticprogrammer.com/ppbook) --