home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / feel0_89.lha / Feel / AddOns / obread_p.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-13  |  866 b   |  40 lines

  1. /*
  2.   * obread_p.h
  3.   *  local defines for object reader
  4.   *
  5.   */
  6.  
  7. #ifndef obread_p_h
  8. #define obread_p_h
  9.  
  10. #define MIN_ID        0
  11. #define FIRST_USER_ID      16
  12. #define LAST_USER_ID     255
  13. #define MAX_ID         LAST_USER_ID
  14.  
  15. #define UC(x) ((unsigned char) (x))
  16.  
  17. /* Internal representation */
  18. typedef int Type_Id;
  19.  
  20. #define GET_READER(rd,id)        (vref(vref(rd,0),(id)))
  21. #define GET_WRITER(rd,obj)    (lookup_by_cpl(stacktop,vref(rd,1),obj))
  22. #define SET_WRITER(rd,class,value)   \
  23.                (EUCALL_3(Fn_table_ref_setter,vref(rd,1),class,value))
  24. #define WRITER_ID(wrt)         (UC(intval(CAR(wrt))))
  25. #define WRITER_FN(wrt)        (CDR(wrt))
  26.  
  27. #define MAKE_WRITER(id,fn)    (EUCALL_2(Fn_cons,(id),(fn)))
  28.  
  29. /* Type ids */
  30.  
  31. #define READ_INT UC(1)
  32. #define READ_CONS UC(2)
  33. #define READ_NULL UC(3)
  34. #define READ_VECTOR UC(4)
  35. #define READ_SYMBOL UC(5)
  36. #define READ_STRING UC(6)
  37. #define READ_FLOAT UC(7)
  38.  
  39. #endif
  40.