(FILECREATED "27-Aug-86 19:07:53" {QV}<NOTECARDS>1.3K>NEXT>FGHPATCH103.;1 16393  

      changes to:  (VARS FGHPATCH103COMS)
		   (RECORDS Card))


(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT FGHPATCH103COMS)

(RPAQQ FGHPATCH103COMS ((* * Fix to race condition with caching process when fetching types.)
			  (* * from NCCARDS -- NOTE entire system needs recompiling to integrate 
			     this.)
			  (RECORDS Card)))
(* * Fix to race condition with caching process when fetching types.)

(* * from NCCARDS -- NOTE entire system needs recompiling to integrate this.)

[DECLARE: EVAL@COMPILE 

(ACCESSFNS Card (

          (* * Instance variables of the card object)


		   (UID (fetch (CardObject UID) of DATUM)
			  (replace (CardObject UID) of DATUM with NEWVALUE))
		   (NoteFile (LET ((\NF (fetch (CardObject NoteFile) of DATUM)))
			          (COND
				    ((type? NoteFile \NF)
				      \NF)
				    (\NF (replace (CardObject NoteFile) of DATUM
					    with (NC.NoteFileFromNoteFileUID \NF)))))
			     (replace (CardObject NoteFile) of DATUM with NEWVALUE))
		   (Monitor (fetch (CardObject Monitor) of DATUM)
			    (replace (CardObject Monitor) of DATUM with NEWVALUE))
		   (Status (fetch (CardObject Status) of DATUM)
			   (replace (CardObject Status) of DATUM with NEWVALUE))
		   (IndexDirtyFlg (fetch (CardObject IndexDirtyFlg) of DATUM)
				  (replace (CardObject IndexDirtyFlg) of DATUM with NEWVALUE))
		   (IndexLoc (fetch (CardObject IndexLoc) of DATUM)
			     (replace (CardObject IndexLoc) of DATUM with NEWVALUE))
		   (MainLoc (fetch (CardObject MainLoc) of DATUM)
			    (replace (CardObject MainLoc) of DATUM with NEWVALUE))
		   (LinksLoc (fetch (CardObject LinksLoc) of DATUM)
			     (replace (CardObject LinksLoc) of DATUM with NEWVALUE))
		   (PropListLoc (fetch (CardObject PropListLoc) of DATUM)
				(replace (CardObject PropListLoc) of DATUM with NEWVALUE))
		   (TitleLoc (fetch (CardObject TitleLoc) of DATUM)
			     (replace (CardObject TitleLoc) of DATUM with NEWVALUE))
		   (Title (fetch (CardObject Title) of DATUM)
			  (replace (CardObject Title) of DATUM with NEWVALUE))
		   (TitleDirtyFlg (fetch (CardObject TitleDirtyFlg) of DATUM)
				  (replace (CardObject TitleDirtyFlg) of DATUM with NEWVALUE))

          (* Note the use of NC.GetType if CardType is NIL. This is required to force the access to go to the disk for the 
	  card type if the card type caching process is not finished before this fetch is being made.
	  Sort of a kludge.)


		   (Type (OR (fetch (CardObject Type) of DATUM)
			       (NC.GetType DATUM))
			 (replace (CardObject Type) of DATUM with NEWVALUE))
		   (ActiveFlg (fetch (CardObject ActiveFlg) of DATUM)
			      (replace (CardObject ActiveFlg) of DATUM with NEWVALUE))
		   (ActiveCardFlg (fetch (CardObject ActiveFlg) of DATUM)
				  (replace (CardObject ActiveFlg) of DATUM with NEWVALUE))
		   (CardCache (fetch (CardObject CardCache) of DATUM)
			      (replace (CardObject CardCache) of DATUM with NEWVALUE))
		   (UserData (fetch (CardObject UserData) of DATUM)
			     (replace (CardObject UserData) of DATUM with NEWVALUE))
		   (Substance (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			           (AND \Cache (fetch (CardCache Substance) of \Cache)))
			      (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			           (COND
				     (\Cache (replace (CardCache Substance) of \Cache
						with NEWVALUE))
				     (T (replace (CardObject CardCache) of DATUM
					   with (create CardCache
							    Substance ← NEWVALUE))
					NEWVALUE))))
		   (Links (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			       (AND \Cache (fetch (CardCache Links) of \Cache)))
			  (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			       (COND
				 (\Cache (replace (CardCache Links) of \Cache with NEWVALUE))
				 (T (replace (CardObject CardCache) of DATUM
				       with (create CardCache
							Links ← NEWVALUE))
				    NEWVALUE))))
		   (FromLinks (LET ((\Cache (fetch (CardObject CardCache) of DATUM))
				    \Links)
			           (AND \Cache (SETQ \Links (fetch (CardCache Links)
								   of \Cache))
					  (fetch (LinksCache FromLinks) of \Links)))
			      (LET ((\Cache (OR (fetch (CardObject CardCache) of DATUM)
						  (replace (CardObject CardCache) of DATUM
						     with (create CardCache))))
				    \Links)
			           (SETQ \Links (fetch (CardCache Links) of \Cache))
			           (COND
				     (\Links (replace (LinksCache FromLinks) of \Links
						with NEWVALUE))
				     (T (replace (CardCache Links) of \Cache
					   with (create LinksCache
							    FromLinks ← NEWVALUE))
					NEWVALUE))))
		   (ToLinks (LET ((\Cache (fetch (CardObject CardCache) of DATUM))
				  \Links)
			         (AND \Cache (SETQ \Links (fetch (CardCache Links)
								 of \Cache))
					(fetch (LinksCache ToLinks) of \Links)))
			    (LET ((\Cache (OR (fetch (CardObject CardCache) of DATUM)
						(replace (CardObject CardCache) of DATUM
						   with (create CardCache))))
				  \Links)
			         (SETQ \Links (fetch (CardCache Links) of \Cache))
			         (COND
				   (\Links (replace (LinksCache ToLinks) of \Links with 
											 NEWVALUE))
				   (T (replace (CardCache Links) of \Cache
					 with (create LinksCache
							  ToLinks ← NEWVALUE))
				      NEWVALUE))))
		   (GlobalLinks (LET ((\Cache (fetch (CardObject CardCache) of DATUM))
				      \Links)
				     (AND \Cache (SETQ \Links (fetch (CardCache Links)
								     of \Cache))
					    (fetch (LinksCache GlobalLinks) of \Links)))
				(LET ((\Cache (OR (fetch (CardObject CardCache) of DATUM)
						    (replace (CardObject CardCache) of DATUM
						       with (create CardCache))))
				      \Links)
				     (SETQ \Links (fetch (CardCache Links) of \Cache))
				     (COND
				       (\Links (replace (LinksCache GlobalLinks) of \Links
						  with NEWVALUE))
				       (T (replace (CardCache Links) of \Cache
					     with (create LinksCache
							      GlobalLinks ← NEWVALUE))
					  NEWVALUE))))
		   (PropList (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			          (AND \Cache (fetch (CardCache PropList) of \Cache)))
			     (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			          (COND
				    (\Cache (replace (CardCache PropList) of \Cache with 
											 NEWVALUE))
				    (T (replace (CardObject CardCache) of DATUM
					  with (create CardCache
							   PropList ← NEWVALUE))
				       NEWVALUE))))
		   (Region (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			        (AND \Cache (fetch (CardCache Region) of \Cache)))
			   (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			        (COND
				  (\Cache (replace (CardCache Region) of \Cache with NEWVALUE))
				  (T (replace (CardObject CardCache) of DATUM
					with (create CardCache
							 Region ← NEWVALUE))
				     NEWVALUE))))
		   (SavedRegion (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				     (AND \Cache (fetch (CardCache SavedRegion) of \Cache)))
				(LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				     (COND
				       (\Cache (replace (CardCache SavedRegion) of \Cache
						  with NEWVALUE))
				       (T (replace (CardObject CardCache) of DATUM
					     with (create CardCache
							      SavedRegion ← NEWVALUE))
					  NEWVALUE))))
		   (ItemDate (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			          (AND \Cache (fetch (CardCache ItemDate) of \Cache)))
			     (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			          (COND
				    (\Cache (replace (CardCache ItemDate) of \Cache with 
											 NEWVALUE))
				    (T (replace (CardObject CardCache) of DATUM
					  with (create CardCache
							   ItemDate ← NEWVALUE))
				       NEWVALUE))))
		   (LinksDate (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			           (AND \Cache (fetch (CardCache LinksDate) of \Cache)))
			      (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			           (COND
				     (\Cache (replace (CardCache LinksDate) of \Cache
						with NEWVALUE))
				     (T (replace (CardObject CardCache) of DATUM
					   with (create CardCache
							    LinksDate ← NEWVALUE))
					NEWVALUE))))
		   (TitleDate (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			           (AND \Cache (fetch (CardCache TitleDate) of \Cache)))
			      (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
			           (COND
				     (\Cache (replace (CardCache TitleDate) of \Cache
						with NEWVALUE))
				     (T (replace (CardObject CardCache) of DATUM
					   with (create CardCache
							    TitleDate ← NEWVALUE))
					NEWVALUE))))
		   (PropListDate (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				      (AND \Cache (fetch (CardCache PropListDate) of \Cache)))
				 (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				      (COND
					(\Cache (replace (CardCache PropListDate) of \Cache
						   with NEWVALUE))
					(T (replace (CardObject CardCache) of DATUM
					      with (create CardCache
							       PropListDate ← NEWVALUE))
					   NEWVALUE))))
		   (LinksDirtyFlg (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				       (AND \Cache (fetch (CardCache LinksDirtyFlg) of \Cache)))
				  (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				       (COND
					 (\Cache (replace (CardCache LinksDirtyFlg) of \Cache
						    with NEWVALUE))
					 (T (replace (CardObject CardCache) of DATUM
					       with (create CardCache
								LinksDirtyFlg ← NEWVALUE))
					    NEWVALUE))))
		   (PropListDirtyFlg (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				          (AND \Cache (fetch (CardCache PropListDirtyFlg)
							   of \Cache)))
				     (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				          (COND
					    (\Cache (replace (CardCache PropListDirtyFlg)
						       of \Cache with NEWVALUE))
					    (T (replace (CardObject CardCache) of DATUM
						  with (create CardCache
								   PropListDirtyFlg ← NEWVALUE))
					       NEWVALUE))))
		   (SubstanceDirtyFlg (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				           (AND \Cache (fetch (CardCache SubstanceDirtyFlg)
							    of \Cache)))
				      (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				           (COND
					     (\Cache (replace (CardCache SubstanceDirtyFlg)
							of \Cache with NEWVALUE))
					     (T (replace (CardObject CardCache) of DATUM
						   with (create CardCache
								    SubstanceDirtyFlg ← NEWVALUE))
						NEWVALUE))))
		   (NewCardFlg (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				    (AND \Cache (fetch (CardCache NewCardFlg) of \Cache)))
			       (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				    (COND
				      (\Cache (replace (CardCache NewCardFlg) of \Cache
						 with NEWVALUE))
				      (T (replace (CardObject CardCache) of DATUM
					    with (create CardCache
							     NewCardFlg ← NEWVALUE))
					 NEWVALUE))))
		   (BeingDeletedFlg (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				         (AND \Cache (fetch (CardCache BeingDeletedFlg)
							  of \Cache)))
				    (LET ((\Cache (fetch (CardObject CardCache) of DATUM)))
				         (COND
					   (\Cache (replace (CardCache BeingDeletedFlg)
						      of \Cache with NEWVALUE))
					   (T (replace (CardObject CardCache) of DATUM
						 with (create CardCache
								  BeingDeletedFlg ← NEWVALUE))
					      NEWVALUE))))

          (* * Class variables of the card object {class == card type})


		   (SuperType (LET ((NoteCardType (fetch (Card Type) of DATUM)))
			           (NC.GetCardTypeField SuperType NoteCardType)))
		   (LinkDisplayMode (LET ((NoteCardType (fetch (Card Type) of DATUM)))
				         (NC.GetCardTypeField LinkDisplayMode NoteCardType)))
		   (DefaultWidth (LET ((NoteCardType (fetch (Card Type) of DATUM)))
				      (NC.GetCardTypeField DefaultWidth NoteCardType)))
		   (DefaultHeight (LET ((NoteCardType (fetch (Card Type) of DATUM)))
				       (NC.GetCardTypeField DefaultHeight NoteCardType)))
		   (LinkAnchorModesSupported (LET ((NoteCardType (fetch (Card Type) of DATUM)))
					          (NC.GetCardTypeField LinkAnchorModesSupported 
								       NoteCardType)))
		   (LinkIconAttachedBitMap (LET ((NoteCardType (fetch (Card Type) of DATUM)))
					        (NC.GetCardTypeField LinkIconAttachedBitMap 
								     NoteCardType)))
		   (LeftButtonMenuItems (LET ((NoteCardType (fetch (Card Type) of DATUM)))
					     (NC.GetCardTypeField LeftButtonMenuItems NoteCardType)))
		   (MiddleButtonMenuItems (LET ((NoteCardType (fetch (Card Type) of DATUM)))
					       (NC.GetCardTypeField MiddleButtonMenuItems 
								    NoteCardType)))

          (* * Methods of the card object {class == card type})


		   (MakeFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
			        (NC.GetCardTypeField MakeFn NoteCardType)))
		   (EditFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
			        (NC.GetCardTypeField EditFn NoteCardType)))
		   (QuitFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
			        (NC.GetCardTypeField QuitFn NoteCardType)))
		   (GetFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
			       (NC.GetCardTypeField GetFn NoteCardType)))
		   (PutFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
			       (NC.GetCardTypeField PutFn NoteCardType)))
		   (CopyFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
			        (NC.GetCardTypeField CopyFn NoteCardType)))
		   (MarkDirtyFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
				     (NC.GetCardTypeField MarkDirtyFn NoteCardType)))
		   (DirtyPFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
			          (NC.GetCardTypeField DirtyPFn NoteCardType)))
		   (CollectLinksFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
				        (NC.GetCardTypeField CollectLinksFn NoteCardType)))
		   (DeleteLinksFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
				       (NC.GetCardTypeField DeleteLinksFn NoteCardType)))
		   (UpdateLinkIconsFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
				           (NC.GetCardTypeField UpdateLinkIconsFn NoteCardType)))
		   (InsertLinkFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
				      (NC.GetCardTypeField InsertLinkFn NoteCardType)))
		   (TranslateWindowPositionFn (LET ((NoteCardType (fetch (Card Type) of DATUM)))
					           (NC.GetCardTypeField TranslateWindowPositionFn 
									NoteCardType))))
		  (CREATE (create CardObject))
		  (TYPE? (TYPE? CardObject DATUM)))
]
(PUTPROPS FGHPATCH103 COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL)))
STOP