/** * This file Copyright (c) 2005-2008 Aptana, Inc. This program is * dual-licensed under both the Aptana Public License and the GNU General * Public license. You may elect to use one or the other of these licenses. * * This program is distributed in the hope that it will be useful, but * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or * NONINFRINGEMENT. Redistribution, except as permitted by whichever of * the GPL or APL you select, is prohibited. * * 1. For the GPL license (GPL), you can redistribute and/or modify this * program under the terms of the GNU General Public License, * Version 3, as published by the Free Software Foundation. You should * have received a copy of the GNU General Public License, Version 3 along * with this program; if not, write to the Free Software Foundation, Inc., 51 * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Aptana provides a special exception to allow redistribution of this file * with certain other free and open source software ("FOSS") code and certain additional terms * pursuant to Section 7 of the GPL. You may view the exception and these * terms on the web at http://www.aptana.com/legal/gpl/. * * 2. For the Aptana Public License (APL), this program and the * accompanying materials are made available under the terms of the APL * v1.0 which accompanies this distribution, and is available at * http://www.aptana.com/legal/apl/. * * You may view the GPL, Aptana's exception and additional terms, and the * APL in the file titled license.html at the root of the corresponding * plugin containing this source file. * * Any modifications to this file must keep this entire header intact. */ package com.aptana.ide.editor.js.runtime; import com.aptana.ide.metadata.IDocumentation; /** * @author Kevin Lindsey */ public class JSUndefined implements IObject { /* * Fields */ private static final JSUndefined instance = new JSUndefined(); /* * Properties */ /** * Return the JSNull singleton for this environment * * @return Returns the JSNull singleton */ public static JSUndefined getSingletonInstance() { return instance; } /* * IObject implementation */ /** * @see com.aptana.ide.editor.js.runtime.IObject#canPut(java.lang.String) */ public boolean canPut(String propertyName) { return false; } /** * @see com.aptana.ide.editor.js.runtime.IObject#getProperty(java.lang.String) */ public Property getProperty(String propertyName) { // do nothing return null; } /** * @see com.aptana.ide.editor.js.runtime.IObject#getPropertyValue(java.lang.String, int, int) */ public IObject getPropertyValue(String propertyName, int fileIndex, int offset) { // do nothing return ObjectBase.UNDEFINED; } /** * @see com.aptana.ide.editor.js.runtime.IObject#putPropertyValue(java.lang.String, com.aptana.ide.editor.js.runtime.IObject, int) */ public void putPropertyValue(String propertyName, IObject value, int fileIndex) { // do nothing } /** * @see com.aptana.ide.editor.js.runtime.IObject#putPropertyValue(java.lang.String, com.aptana.ide.editor.js.runtime.IObject, int, int) */ public void putPropertyValue(String propertyName, IObject value, int fileIndex, int attributes) { // do nothing } /** * @see com.aptana.ide.editor.js.runtime.IObject#getPropertyNames() */ public String[] getPropertyNames() { // do nothing return new String[0]; } /** * @see com.aptana.ide.editor.js.runtime.IObject#getPropertyNames(boolean) */ public String[] getPropertyNames(boolean getAll) { // do nothing return new String[0]; } /** * @see com.aptana.ide.editor.js.runtime.IObject#hasProperty(java.lang.String) */ public boolean hasProperty(String propertyName) { // do nothing return false; } /** * @see com.aptana.ide.editor.js.runtime.IObject#getLocalProperty(java.lang.String) */ public Property getLocalProperty(String propertyName) { // do nothing return null; } /** * @see com.aptana.ide.editor.js.runtime.IObject#putLocalProperty(java.lang.String, com.aptana.ide.editor.js.runtime.Property) */ public void putLocalProperty(String propertyName, Property property) { // do nothing } /** * @see com.aptana.ide.editor.js.runtime.IObject#getLocalPropertyNames() */ public String[] getLocalPropertyNames() { // do nothing return new String[0]; } /** * @see com.aptana.ide.editor.js.runtime.IObject#hasLocalProperty(java.lang.String) */ public boolean hasLocalProperty(String propertyName) { // do nothing return false; } /** * @see com.aptana.ide.editor.js.runtime.IObject#unputPropertyName(java.lang.String, int, int) */ public void unputPropertyName(String propertyName, int fileIndex, int offset) { // do nothing } /** * @see com.aptana.ide.editor.js.runtime.IObject#deletePropertyName(java.lang.String) */ public boolean deletePropertyName(String propertyName) { // do nothing return false; } /** * @see com.aptana.ide.editor.js.runtime.IObject#getPrototype() */ public IObject getPrototype() { // do nothing return null; } /** * @see com.aptana.ide.editor.js.runtime.IObject#setPrototype(com.aptana.ide.editor.js.runtime.IObject) */ public void setPrototype(IObject prototype) { // do nothing } /** * @see com.aptana.ide.editor.js.runtime.IObject#getClassName() */ public String getClassName() { return "undefined"; //$NON-NLS-1$ } /** * Return the unerlying primitive type * * @param environment * The environment * @param fileIndex * The file index * @param offset * The file offset * @return Returns the unerlying primitive type for this object */ public IObject getInstance(Environment environment, int fileIndex, int offset) { return instance; } /* * IRange implementation */ /** * @see com.aptana.ide.lexer.IRange#getEndingOffset() */ public int getEndingOffset() { return -1; } /** * @see com.aptana.ide.lexer.IRange#getLength() */ public int getLength() { return 0; } /** * @see com.aptana.ide.lexer.IRange#getStartingOffset() */ public int getStartingOffset() { return -1; } /** * @see com.aptana.ide.lexer.IRange#isEmpty() */ public boolean isEmpty() { return true; } /** * @see com.aptana.ide.lexer.IRange#containsOffset(int) */ public boolean containsOffset(int offset) { return false; } /* * IDocumentation implementation */ /** * @see com.aptana.ide.metadata.IDocumentationContainer#getDocumentation() */ public IDocumentation getDocumentation() { return null; } /** * @see com.aptana.ide.metadata.IDocumentationContainer#hasDocumentation() */ public boolean hasDocumentation() { return false; } /** * @see com.aptana.ide.metadata.IDocumentationContainer#setDocumentation(com.aptana.ide.metadata.IDocumentation) */ public void setDocumentation(IDocumentation documentation) { // do nothing } /** * @see com.aptana.ide.editor.js.runtime.IObject#getLocalPropertyCount() */ public int getLocalPropertyCount() { return 0; } }