I think this should be part of the standard save mechanism, so I just committed the change to a bunch of externals.  I didn't touch externals/iem since I know you guys like to handle stuff yourself.  It actually makes sense like this (from entry.c):

static void entry_save(t_gobj *z, t_binbuf *b)
{
    t_entry *x = (t_entry *)z;

    binbuf_addv(b, "ssiisiiss", gensym("#X"),gensym("obj"),
                    x->x_obj.te_xpix, x->x_obj.te_ypix,
                   atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)),
                   x->x_width, x->x_height, x->x_bgcolour, x->x_fgcolour);
    binbuf_addv(b, ";");
}

Perhaps atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)) could be defined in m_pd.h as something like "class_getclassname"

.hc


On Oct 29, 2007, at 2:12 PM, IOhannes m zmoelnig wrote:

Hans-Christoph Steiner wrote:
We have a winner! :D

darn, i just finished an example that works as well....


fmasdr.
IOhannes

/******************************************************
 *
 * myname - implementation file
 *
 * copyleft (c) IOhannes m zm-bölnig-A
 *
 *   2007:forum::f-bür::umläute:2007-A
 *
 *   institute of electronic music and acoustics (iem)
 *
 ******************************************************
 *
 * license: GNU General Public License v.2
 *
 ******************************************************/


/* 
 * this object is an example on how to retrieve the object's own name
 * usage:
 *   + bang to print the object's name to the console
 */

#include "m_pd.h"

/* ------------------------- myname ---------------------------- */

static t_class *myname_class;

typedef struct _myname
{
  t_object  x_obj;
} t_myname;

static void myname_bang(t_myname *x) {
  t_text t=(t_text)x->x_obj;
  t_binbuf*b=t.te_binbuf;
  if(b!=0) {
    t_atom*ap=binbuf_getvec(b);
    post("my name is '%s'", atom_getsymbol(ap)->s_name);
  } else {
    post("hmm, i don't know my name");
  }
}


static void *myname_new(void)
{
  t_myname *x = (t_myname *)pd_new(myname_class);

  t_text t=(t_text)x->x_obj;
  t_binbuf*b=t.te_binbuf;
  if(b!=0) {
    t_atom*ap=binbuf_getvec(b);
    post("my name is '%s'", atom_getsymbol(ap)->s_name);
  } else {
    post("i don't know my name yet...");
  }

  

  return (x);
}

void myname_setup(void)
{
  myname_class = class_new(gensym("myname"), (t_newmethod)myname_new,
    0, sizeof(t_myname), 0, 0);
  class_addbang(myname_class, myname_bang);
}



----------------------------------------------------------------------------

Terrorism is not an enemy.  It cannot be defeated.  It's a tactic.  It's about as sensible to say we declare war on night attacks and expect we're going to win that war.  We're not going to win the war on terrorism.        - retired U.S. Army general, William Odom