예제 #1
0
bool FrSymbol::lockFrames(FrList *locklist)
{
   if (VFrame_Info)
      {
//!!!for now, just do one at a time
      while (locklist)
	 {
	 if (!((FrSymbol*)(locklist->first()))->lockFrame())
	    return false ;	// failed
	 locklist = locklist->rest() ;
	 }
      return true ;	// successful
      }
   else
      {
      while (locklist)
	 {
	 FrFrame *fr = ((FrSymbol*)(locklist->first()))->symbolFrame() ;
	 if (fr)
	    fr->setLock(true) ;
	 locklist = locklist->rest() ;
	 }
      return true ;   // successful
      }
}
예제 #2
0
bool FrSymbol::unlockFrame()
{
   FrFrame *fr = symbolFrame() ;
   // don't use find_vframe above, to avoid pulling in frame if not already
   // in memory

   if (fr && fr->isLocked() && VFrame_Info)
      {
      if (VFrame_Info->unlockFrame(this))
         fr->setLock(false) ;
      else
         return false ;
      }
   return true ;
}
예제 #3
0
FrFrame *FrSymbol::lockFrame()
{
   FrFrame *fr = find_vframe_inline(this) ;

   if (fr && !fr->isLocked() && VFrame_Info)
      {
      if (VFrame_Info->lockFrame(this))
         fr->setLock(true) ;
      else
         {
	 FrWarningVA("unable to lock frame %s",symbolName()) ;
         return 0 ;
         }
      }
   return fr ;
}