mini-property-list.red 782 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. % MINI-PROPERTY-LIST.RED - Small GET and PUT
  2. on syslisp;
  3. Procedure Prop x;
  4. If not IDP x then NIL
  5. else SYMPRP IDINF x;
  6. Procedure Get(x,y);
  7. Begin scalar z,L;
  8. If Not IDP x then return NIL;
  9. L:=SYMPRP IDINF x;
  10. If (Z:=Atsoc(y,L)) then return CDR Z;
  11. Return NIL;
  12. End;
  13. Procedure Put(x,y,z);
  14. Begin scalar P,L;
  15. If Not IDP x then return NIL;
  16. L:=SYMPRP IDINF x;
  17. If (P:=Atsoc(y,L)) then return %
  18. <<CDR(PairInf P):=z; z>>;
  19. L:=CONS(CONS(y,z),L);
  20. SYMPRP(IDINF x):=L;
  21. Return z;
  22. End;
  23. Procedure RemProp(x,y);
  24. Begin scalar P,L;
  25. If Not IDP x then return NIL;
  26. L:=SYMPRP IDINF x;
  27. If not(P:=Atsoc(y,L)) then return NIL;
  28. L:=Delatq(y,L);
  29. SYMPRP(IDINF x):=L;
  30. Return CDR P;
  31. End;
  32. Procedure GetFnType x;
  33. Get(x,'TYPE);
  34. off syslisp;
  35. end;