home *** CD-ROM | disk | FTP | other *** search
- /*
- objname.c
-
- % object name code
-
- OWL 1.2
- Copyright (c) 1989, by Oakland Group, Inc.
- ALL RIGHTS RESERVED.
-
- Revision History:
- -----------------
- 12/10/89 jmd added it
- 1/21/90 jdc changed oslist stuff
- 2/14/90 jdc added obj == NULL check in obj_SetName
- 3/28/90 jmd ansi-fied
- 9/07/90 jmd renamed oslist stuff
- */
-
- #include "oakhead.h"
- #include "commonod.h" /* for winname struct */
-
- obj_type obj_Find(char *name)
- /*
- returns a object with the given name.
- returns NULL if it finds no object.
- */
- {
- int h;
-
- if ((h = oslist_FindHandle(objnamelist, name)) != OSLIST_BADNAME) {
- return(((objname_struct *)oslist_GetData(objnamelist, h))->obj);
- }
-
- return(NULL);
- }
-
- /* -------------------------------------------------------------------------- */
- int obj_SetName(obj_type obj, char *name)
- /*
- sets an object's name
- set name to NULL to remove a window name
- returns: the handle (int)
- */
- {
- int nameno, objnameno;
- objname_struct objname, *oldname;
-
- if (obj == NULL) {
- return(-1);
- }
-
- if (name == NULL) {
- obj_RemoveName(obj);
- return(-1);
- }
-
- /* has a name list been created yet? */
- if (objnamelist == NULL) {
-
- /* create name list */
- if ((objnamelist = oslist_Open(5, sizeof(objname_struct))) == NULL) {
- return(-1);
- }
- nameno = -1;
- }
- else {
- nameno = oslist_FindHandle(objnamelist, name);
-
- if ((objnameno = obj_GetNameHandle(obj)) >= 0) {
- /* the object already has a name */
- if (nameno == objnameno) {
- /* we're not changing the object name, return */
- return(nameno);
- }
- else {
- obj_RemoveName(obj);
- }
- }
- }
-
- if (nameno >= 0) {
- /* name is already used, update the hit count
- and associate the object with it.
- */
-
- oldname = (objname_struct *)oslist_GetData(objnamelist, nameno);
-
- oldname->hits++; /* increment hit count */
- oldname->obj = obj;
- }
- else {
- /* new name, put it in the list */
- objname.hits = 1;
- objname.obj = obj;
-
- nameno = oslist_SetSym(objnamelist, name, (VOID *)(&objname));
- }
-
- obj_SetNameHandle(obj, nameno);
- return(nameno);
- }
-
-
-