示例#1
0
FrObject *string_to_Frame(const char *&input, const char *)
{
   FrFrame *frame ;
   FrSymbol *name ;

   input++ ;				// consume the initial left bracket
   name = string_to_Symbol(input) ;	// read frame name
   if (name && name->symbolp())        	// the name must be a symbol
      {
      frame = find_vframe_inline(name) ;
      if (!frame)
	 frame = (read_as_VFrame && FramepaC_new_VFrame)
	    	? FramepaC_new_VFrame(name) : new FrFrame(name) ;
      while (FrSkipWhitespace(input) == '[')
	 string_to_Slot(input,frame) ;
      if (*input == ']')
	 input++ ;
      else
	 FrWarning(errmsg_frame_malformed) ;
      return frame ;
      }
   else
      {
      FrWarning(errmsg_frame_name) ;
      return 0 ;
      }
}
示例#2
0
bool FrSymbol::isLocked() const
{
   FrFrame *fr = find_vframe_inline(this) ;

   if (fr)
      return fr->isLocked() ;
   else if (VFrame_Info)
      return VFrame_Info->isLocked(this) ;
   else
      return false ;
}
示例#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 ;
}
示例#4
0
static FrObject *read_Frame(istream &input, const char *)
{
   input.get() ;		    // consume the initial left bracket
   FrSymbol *name ;
   name = read_Symbol(input) ;	    // read frame name
   if (!name || !name->symbolp())   // the name must be a symbol
      {
      FrWarning(errmsg_frame_name) ;
      free_object(name) ;
      return 0 ;
      }
   FrFrame *frame = find_vframe_inline(name) ;
   if (!frame)
      frame = (read_as_VFrame && FramepaC_new_VFrame)
	 	? FramepaC_new_VFrame(name) : new FrFrame(name) ;
   while (FrSkipWhitespace(input) == '[')
      read_Slot(input,frame) ;
   if (input.get() != ']')	    // next non-whitespace char may be EOF
      FrWarning(errmsg_frame_malformed) ;
   return frame ;
}