示例#1
0
        /// <summary> Resolve the object into a variable by various means and
        /// using the current context.
        /// </summary>
        /// <returns> variable, or <code>null</code>
        /// </returns>
        internal virtual Variable resolveToVariable(Object o)
        {
            Variable v = null;

            // if o is a variable already, then we're done!
            if (o is Variable)
            {
                return((Variable)o);
            }
            // Resolve the name to something
            {
                // not an id so try as name
                String name = o.ToString();
                long   id   = nameAsId(name);

                /*
                 * if #N was used just pick up the variable, otherwise
                 * we need to use the current context to resolve
                 * the name to a member
                 */
                if (id != Value.UNKNOWN_ID)
                {
                    // TODO what here?
                }
                else
                {
                    // try to resolve as a member of current context (will set context if null)
                    id = determineContext(name);
                    v  = locateForNamed((int)id, name, true);
                    if (v != null)
                    {
                        v = new VariableFacade(v, id);
                    }
                    else if (v == null && m_createIfMissing && name[0] != '$')
                    {
                        v = new VariableFacade(id, name);
                    }
                }
            }
            return(v);
        }
		/// <summary> Resolve the object into a variable by various means and 
		/// using the current context.
		/// </summary>
		/// <returns> variable, or <code>null</code>
		/// </returns>
		internal virtual Variable resolveToVariable(Object o)
		{
			Variable v = null;
			// if o is a variable already, then we're done!
			if (o is Variable) return (Variable) o;
			// Resolve the name to something
			{
				// not an id so try as name 
				String name = o.ToString();
				long id = nameAsId(name);
				/*
				* if #N was used just pick up the variable, otherwise
				* we need to use the current context to resolve 
				* the name to a member
				*/
				if (id != Value.UNKNOWN_ID)
				{
					// TODO what here?
				}
				else
				{
					// try to resolve as a member of current context (will set context if null)
					id = determineContext(name);
					v = locateForNamed((int) id, name, true);
					if (v != null) v = new VariableFacade(v, id);
                    else if (v == null && m_createIfMissing && name[0] != '$')
                    {
                        v = new VariableFacade(id, name);
                    }
				}
			}
			return v;
		}