    /*\
     * Extended entity data by Leon Kos, march 1993
     * AUTOCAD12, HyperWaft Project
     * Zagon programa (xload "eed") in EED s tem da Piknemo na entiteto
     * $Id: EED.CPP 1.1 1995/01/08 08:11:16 leon Exp $
    \*/

    #include  <afc/adsapp.hpp>

    #include <string.h>

    int
    printDxf (struct resbuf * eb)
    {				/* primer ADS12/104 */

      int rt, resType;

      if (eb == NULL)
        return RTNONE;

        resType = eb->restype % 1000;

      if ((resType >= 0) && (resType <= 9))
        rt = RTSTR;

      else if ((resType >= 10) && (resType <= 19))
        rt = RT3DPOINT;

      else if ((resType >= 38) && (resType <= 59))
        rt = RTREAL;

      else if ((resType >= 60) && (resType <= 79))
        rt = RTSHORT;

      else if ((resType >= 210) && (resType <= 239))
        rt = RT3DPOINT;

      else if (resType < 0)
        rt = resType;

      else
        rt = RTNONE;

      switch (rt)
        {
        case RTSHORT:
          ads_printf ("(%d . %d) ", eb->restype, eb->resval.rint);
          break;

        case RTREAL:
          ads_printf ("(%d . %0.3f) ", eb->restype, eb->resval.rreal);
          break;

        case RTSTR:
          ads_printf ("(%d . \"%s\") ", eb->restype, eb->resval.rstring);
          break;

        case RT3DPOINT:
          ads_printf ("(%d . %0.3f %0.3f %0.3f) ", eb->restype,
              eb->resval.rpoint[X], eb->resval.rpoint[Y],
              eb->resval.rpoint[Z]);

        break;

        case RTNONE:
          ads_printf ("(%d . Nepoznan tip) ", eb->restype);
          break;

        case -1:
        case -2:
          ads_printf ("(%d . <Entity name: %8lx>) ", eb->restype,
          eb->resval.rlname[0]);
        }

      return eb->restype;
    }

    void
    berient (void)
    {
      static struct resbuf appName =
      {NULL, RTSTR};
      ads_name ent;
      ads_point pt;
      struct resbuf *ebuf, *eb;

      appName.resval.rstring = strdup ("*");
      ads_entsel ( /*MSG4*/ "Pikni na gradnik >", ent, pt);
      ads_textscr ();
      ads_printf ("Entity name [%d], [%d]\n", ent[1], ent[2]);
      ebuf = ads_entgetx (ent, &appName);
      for (eb = ebuf; eb != NULL; eb = eb->rbnext)
        printDxf (eb);
      ads_relrb (ebuf);
    }

    #if 0

     /* Poisce string v vseh gradnikih, ki imajo EED */
    void
    locatehandle (void)
    {
      static struct resbuf appName =
      {NULL, RTSTR};		/* Extended entity data filter */
      ads_name ent, ssname;
      struct resbuf *ebuf, *eb;
      long sslen, i;
      char handle[30];

      appName.resval.rstring = strdup ("*");

      ads_textscr ();

      ads_ssget ("X", NULL, NULL, NULL, ssname);	/* Izberemo vse gradnike */

      ads_getstring (0, "Vstavi handle, ki ga isces v EED (max: 16 znakov):",
                        handle);

        ads_sslength (ssname, (long *) &sslen);
      ads_printf ("Stevilo izbranih gradnikov: %ld", sslen);

      for (i = 1; i <= sslen; i++)
        {
          ads_ssname (ssname, i, ent);
          ebuf = ads_entgetx (&ent, &appName);
          for (eb = ebuf; eb != NULL; eb = eb->rbnext)
    	    if (eb->restype % 1000 == 5 /* Ali je to EED Handle */
          &&strcmp (eb->resval.rstring, handle) == 0)
    	  {
    	    for (eb = ebuf; eb != NULL; eb = eb->rbnext)
    	      {
          		printDxf (eb);
    	      }
    	    ads_printf ("\n");
    	    break;
    	  }
          ads_relrb (ebuf);
        }
      return ads_ssfree (ssname);
    }

    #endif

    void main (int argc, char *argv[])
    {
        ADSApplication eed;
        eed.Register(berient, "c:eed");
        eed.Run(argc, argv);
    }

syntax highlighted by Code2HTML, v. 0.9.1