예제 #1
0
        public string ToDescriptor()
        {
            string str = "(";

            foreach (var param in Parameters)
            {
                str += param.Type.ToDescriptor();
            }
            str += ")";

            if (ReturnType.PrimitiveType == TypeCode.Empty && ReturnType.ClassName == null)
            {
                str += "V";
            }
            else
            {
                str += ReturnType.ToDescriptor();
            }

            return(str);
        }
예제 #2
0
        public ushort ConstClass(JavaType v)
        {
            string nameOrDescriptor;

            if (v.ArrayRank != 0)
            {
                nameOrDescriptor = v.ToDescriptor();
            }
            else if (v.ClassName != null)
            {
                nameOrDescriptor = v.ClassName.Replace('.', '/');
            }
            else
            {
                throw Where.Exception("invalid class name");
            }

            ushort stringIndex = ConstUtf8(nameOrDescriptor);

            return((ushort)constants.Put(new JavaConstant.Class(stringIndex), Where));
        }