home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / CSSRC / OBJLOAD.C < prev    next >
C/C++ Source or Header  |  1990-10-28  |  2KB  |  102 lines

  1. /*
  2.     objload.c
  3.  
  4.     % sfile_LoadObj, sfile_SaveObj
  5.  
  6.     C-scape 3.2
  7.     Copyright (c) 1988-1990 by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.     12/17/89 jdc    added name set
  13.      1/21/90 jdc    changed oslist stuff
  14.      2/14/90 jdc    tweeked sf_loadobj
  15.      3/28/90 jmd    ansi-fied
  16.      4/16/90 jdc    renamed _bfile_gets to bf_gets
  17.      4/23/90 jmd    changed class to winclass
  18.      8/12/90 jdc    added opendata arg
  19.      8/13/90 jdc    added loaddefault_classfunc and class handle stuff
  20.     10/28/90 jdc    fixed boolean/int ret conflict
  21. */
  22.  
  23. #include <time.h>
  24.  
  25. #include "sed.h"
  26. #include "sfile.h"
  27. #include "sfilpriv.h"
  28. #include "teddecl.h"
  29. #include "sled.h"
  30.  
  31. OGLOBAL class_fptr loaddefault_classfunc = FNULL;
  32.  
  33. obj_type sfile_LoadObj(sfile_type sfile, char *name, VOID *opendata)
  34. {
  35.     obj_type obj;
  36.  
  37.     if (oslist_FindHandle(sfile->bfile->dir, name) == -1
  38.         || !sfile_Find(sfile, name, ID_LNFWIN)) {
  39.  
  40.         return(NULL);
  41.     }
  42.     if ((obj = sf_loadobj(sfile, name, opendata)) != NULL) {
  43.  
  44.         /* extra info: time stamp */
  45.         bf_gets(sfile->bfile, sfile->buf, SFILE_BUFLEN, '\0');
  46.     }
  47.     return(obj);
  48. }
  49.  
  50. obj_type sf_loadobj(sfile_type sfile, char *name, VOID *opendata)
  51. {
  52.     obj_type obj;
  53.      class_fptr objclass;
  54.     int handle;
  55.  
  56.     bf_gets(sfile->bfile, sfile->buf, SFILE_BUFLEN, '\0');
  57.  
  58.     if ((objclass = sfile_FindClassFunc(sfile, sfile->buf, &handle)) == FNULL) {
  59.         objclass = loaddefault_classfunc;
  60.         handle = sfile_PutClassFunc(sfile, sfile->buf, objclass);
  61.     }
  62.  
  63.     if (objclass != FNULL && (obj = obj_Open(objclass, opendata)) != NULL) {
  64.  
  65.         obj_SetClassHandle(obj, handle);
  66.         obj_SetName(obj, name);
  67.         if (obj_Do(obj, OBJM_LOAD, sfile, NULL)) {
  68.             return(obj);
  69.         }    
  70.     }    
  71.     return(NULL);
  72. }
  73.  
  74. boolean sfile_SaveObj(sfile_type sfile, obj_type obj, char *name)
  75. {
  76.     boolean ret;
  77.     TIME_T timep;
  78.  
  79.     if (!sfile_Find(sfile, name, ID_LNFWIN)) {
  80.         return(FALSE);
  81.     }
  82.     if ((ret = sf_saveobj(sfile, obj)) == TRUE) {
  83.  
  84.         /* extra info: time stamp */
  85.         sprintf(sfile->buf, "%ld\n", time(&timep));    
  86.         bfile_Write(sfile->bfile, sfile->buf, strlen(sfile->buf));
  87.     }
  88.     obj_SetName(obj, name);
  89.  
  90.     return(ret);
  91. }
  92.  
  93. boolean sf_saveobj(sfile_type sfile, obj_type obj)
  94. {
  95.     sprintf(sfile->buf, "%s\n", (obj_GetClassHandle(obj) == OSLIST_BADNAME) ?
  96.         obj_FindClassName(obj, sfile) : obj_GetClassName(obj, sfile));
  97.  
  98.     bfile_Write(sfile->bfile, sfile->buf, strlen(sfile->buf));
  99.  
  100.     return((obj_Do(obj, OBJM_SAVE, sfile, NULL) == 1) ? TRUE : FALSE);
  101. }
  102.