/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: ParsedBlockValue.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.template;
import com.uwyn.rife.asm.ClassVisitor;
import com.uwyn.rife.asm.MethodVisitor;
import com.uwyn.rife.template.ParsedBlockPart;
public class ParsedBlockValue extends ParsedBlockPart
{
private String mValueKey = null;
private String mValueTag = null;
ParsedBlockValue(String valueKey, String valueTag)
{
assert valueKey != null;
assert valueKey.length() > 0;
assert valueTag != null;
assert valueTag.length() > 0;
mValueKey = valueKey;
mValueTag = valueTag;
}
String getData()
{
return mValueKey;
}
String getTag()
{
return mValueTag;
}
int getType()
{
return VALUE;
}
void visitByteCodeExternalForm(MethodVisitor visitor, String className, String staticIdentifier)
{
visitor.visitVarInsn (ALOAD, 0);
visitor.visitFieldInsn (GETSTATIC, className, staticIdentifier, "Ljava/lang/String;");
visitor.visitFieldInsn (GETSTATIC, className, staticIdentifier+"Tag", "Ljava/lang/String;");
visitor.visitVarInsn (ALOAD, 2);
visitor.visitMethodInsn (INVOKEVIRTUAL, className, "appendValueExternalForm", "(Ljava/lang/String;Ljava/lang/String;Lcom/uwyn/rife/template/ExternalValue;)V");
}
void visitByteCodeInternalForm(MethodVisitor visitor, String className, String staticIdentifier)
{
visitor.visitVarInsn (ALOAD, 0);
visitor.visitFieldInsn (GETSTATIC, className, staticIdentifier, "Ljava/lang/String;");
visitor.visitFieldInsn (GETSTATIC, className, staticIdentifier+"Tag", "Ljava/lang/String;");
visitor.visitVarInsn (ALOAD, 2);
visitor.visitMethodInsn (INVOKEVIRTUAL, className, "appendValueInternalForm", "(Ljava/lang/String;Ljava/lang/String;Lcom/uwyn/rife/template/InternalValue;)V");
}
void visitByteCodeStaticDeclaration(ClassVisitor visitor, String staticIdentifier)
{
visitor.visitField(ACC_PRIVATE|ACC_STATIC, staticIdentifier, "Ljava/lang/String;", null, null);
visitor.visitField(ACC_PRIVATE|ACC_STATIC, staticIdentifier+"Tag", "Ljava/lang/String;", null, null);
}
void visitByteCodeStaticDefinition(MethodVisitor visitor, String className, String staticIdentifier)
{
visitor.visitLdcInsn (mValueKey);
visitor.visitFieldInsn (PUTSTATIC, className, staticIdentifier, "Ljava/lang/String;");
visitor.visitLdcInsn (mValueTag);
visitor.visitFieldInsn (PUTSTATIC, className, staticIdentifier+"Tag", "Ljava/lang/String;");
}
}