blob: 00a1bc52148bba87218bb24fc5fcc3c5e64b45e8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 xored software, Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.internal.javascript.ti;
import java.util.Set;
import org.eclipse.dltk.javascript.typeinference.ReferenceKind;
import org.eclipse.dltk.javascript.typeinference.ReferenceLocation;
import org.eclipse.dltk.javascript.typeinfo.IRLocalType;
import org.eclipse.dltk.javascript.typeinfo.IRType;
import org.eclipse.dltk.javascript.typeinfo.JSTypeSet;
public interface IValue {
int DEFAULT = 0;
int CREATE = 1;
int NO_LOCAL_TYPES = 2;
boolean hasChild(String name);
/**
* @param flags
* {@link #DEFAULT} or {@link #NO_LOCAL_TYPES} to skip delegation
* to children of {@link IRLocalType}.
*/
Set<String> getDirectChildren(int flags);
IValue getChild(String name, boolean resolve);
/**
* @param flags
* {@link #DEFAULT} or {@link #CREATE} if child should be created
* without any attempts to find already existing type member.
*/
IValue createChild(String name, int flags);
IRType getDeclaredType();
void setDeclaredType(IRType declaredType);
JSTypeSet getDeclaredTypes();
void addType(IRType type);
JSTypeSet getTypes();
Object getAttribute(String key, boolean includeReferences);
@Deprecated
Object getAttribute(String key);
void setAttribute(String key, Object value);
ReferenceKind getKind();
void setKind(ReferenceKind kind);
ReferenceLocation getLocation();
void setLocation(ReferenceLocation location);
void addValue(IValue src);
void addReference(IValue src);
void removeReference(IValue value);
void clear();
void putChild(String name, IValue value);
Set<String> getDeletedChildren();
void deleteChild(String name, boolean force);
}