home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / OWLSCR / OBJNAME.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-09-07  |  2.1 KB  |  104 lines

  1. /*
  2.     objname.c
  3.  
  4.     % object name code
  5.  
  6.     OWL 1.2
  7.     Copyright (c) 1989, by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.     12/10/89 jmd    added it
  13.      1/21/90 jdc    changed oslist stuff
  14.      2/14/90 jdc    added obj == NULL check in obj_SetName
  15.      3/28/90 jmd    ansi-fied
  16.      9/07/90 jmd    renamed oslist stuff
  17. */
  18.  
  19. #include "oakhead.h"
  20. #include "commonod.h"        /* for winname struct */
  21.  
  22. obj_type obj_Find(char *name)
  23. /*
  24.     returns a object with the given name.
  25.     returns NULL if it finds no object.
  26. */
  27. {
  28.     int h;
  29.  
  30.     if ((h = oslist_FindHandle(objnamelist, name)) != OSLIST_BADNAME) {
  31.         return(((objname_struct *)oslist_GetData(objnamelist, h))->obj);
  32.     }
  33.  
  34.     return(NULL);
  35. }
  36.  
  37. /* -------------------------------------------------------------------------- */
  38. int obj_SetName(obj_type obj, char *name)
  39. /*
  40.     sets an object's name
  41.     set name to NULL to remove a window name
  42.     returns: the handle (int)
  43. */
  44. {
  45.     int nameno, objnameno;
  46.     objname_struct objname, *oldname;
  47.     
  48.     if (obj == NULL) {
  49.         return(-1);
  50.     }
  51.  
  52.     if (name == NULL) {
  53.         obj_RemoveName(obj);
  54.         return(-1);
  55.     }
  56.     
  57.     /* has a name list been created yet? */
  58.     if (objnamelist == NULL) {
  59.  
  60.         /* create name list */
  61.         if ((objnamelist = oslist_Open(5, sizeof(objname_struct))) == NULL) {
  62.             return(-1);
  63.         }
  64.         nameno = -1;
  65.     }
  66.       else {
  67.         nameno = oslist_FindHandle(objnamelist, name);
  68.  
  69.         if ((objnameno = obj_GetNameHandle(obj)) >= 0) {
  70.             /* the object already has a name */
  71.             if (nameno == objnameno) {
  72.                 /* we're not changing the object name, return */
  73.                 return(nameno);
  74.             }
  75.             else {
  76.                 obj_RemoveName(obj);
  77.             }
  78.         }
  79.     }
  80.  
  81.     if (nameno >= 0) {
  82.         /* name is already used, update the hit count 
  83.            and associate the object with it.
  84.         */
  85.  
  86.         oldname = (objname_struct *)oslist_GetData(objnamelist, nameno);
  87.  
  88.         oldname->hits++;            /* increment hit count */
  89.         oldname->obj = obj;
  90.     }
  91.     else {
  92.         /* new name, put it in the list */
  93.         objname.hits = 1;
  94.         objname.obj = obj;
  95.  
  96.         nameno = oslist_SetSym(objnamelist, name, (VOID *)(&objname));
  97.     }
  98.  
  99.     obj_SetNameHandle(obj, nameno);
  100.     return(nameno);
  101. }
  102.  
  103.  
  104.