package com.google.code.joto.ast.valueholder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.ArrayEltRefValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.CollectionEltRefValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.CollectionValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.ImmutableObjectValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.MapEntryKeyRefValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.MapEntryValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.MapEntryValueRefValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.MapValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.ObjectValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.PrimitiveArrayEltValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.PrimitiveArrayValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.PrimitiveFieldValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.RefArrayValueHolder;
import com.google.code.joto.ast.valueholder.ValueHolderAST.RefFieldValueHolder;
/**
* Visitor design pattern for ValueHolderAST class hierarchy
*/
public interface ValueHolderVisitor {
void caseObject(ObjectValueHolder p);
void casePrimitiveField(PrimitiveFieldValueHolder node);
void caseRefField(RefFieldValueHolder node);
void casePrimitiveArray(PrimitiveArrayValueHolder<?> p);
void casePrimitiveArrayElt(PrimitiveArrayEltValueHolder<?> p);
void caseRefArray(RefArrayValueHolder p);
void caseRefArrayElt(ArrayEltRefValueHolder p);
// non primitive helper sub-classes of ObjectValueHolder
void caseImmutableObjectValue(ImmutableObjectValueHolder p);
void caseCollection(CollectionValueHolder p);
void caseCollectionElt(CollectionEltRefValueHolder p);
void caseMap(MapValueHolder p);
void caseMapEntry(MapEntryValueHolder p);
void caseMapEntryKey(MapEntryKeyRefValueHolder p);
void caseMapEntryValue(MapEntryValueRefValueHolder p);
}