AsInteger() public method

public AsInteger ( ) : int
return int
 /// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
 /// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
 private static void GetStringProperty(Variant result, Variant str, Variant member
     )
 {
     // processes properties toward strings.
     if (member.IsNumber() != true)
     {
         string name = member.GetString();
         if (name == null)
         {
             ThrowFrom_tjs_error(Error.E_MEMBERNOTFOUND, string.Empty);
         }
         if (name.Equals("length"))
         {
             // get string length
             string s = str.AsString();
             if (s == null)
             {
                 result.Set(0);
             }
             else
             {
                 // tTJSVariantString::GetLength can return zero if 'this' is NULL
                 result.Set(s.Length);
             }
             return;
         }
         else
         {
             if (name[0] >= '0' && name[0] <= '9')
             {
                 string s = str.AsString();
                 int n = int.Parse(name);
                 int len = s.Length;
                 if (n == len)
                 {
                     result.Set(string.Empty);
                     return;
                 }
                 if (n < 0 || n > len)
                 {
                     throw new TJSException(Error.RangeError);
                 }
                 result.Set(Sharpen.Runtime.Substring(s, n, n + 1));
                 return;
             }
         }
         ThrowFrom_tjs_error(Error.E_MEMBERNOTFOUND, name);
     }
     else
     {
         // member.Type() == tvtInteger || member.Type() == tvtReal
         string s = str.AsString();
         int n = member.AsInteger();
         int len = s.Length;
         if (n == len)
         {
             result.Set(string.Empty);
             return;
         }
         if (n < 0 || n > len)
         {
             throw new TJSException(Error.RangeError);
         }
         result.Set(Sharpen.Runtime.Substring(s, n, n + 1));
         return;
     }
 }
 /// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
 /// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
 protected internal static void TypeOfMemberIndirect(Variant result, Variant target
     , Variant member, Dispatch2 objthis, int flags)
 {
     if (target.IsObject())
     {
         VariantClosure clo = target.AsObjectClosure();
         if (member.IsInteger() != true)
         {
             string str = member.AsString();
             int hr = clo.PropGet(flags, str, result, clo.mObjThis != null ? clo.mObjThis : objthis
                 );
             if (hr == Error.S_OK)
             {
                 TypeOf(result);
             }
             else
             {
                 if (hr == Error.E_MEMBERNOTFOUND)
                 {
                     result.Set("undefined");
                 }
                 else
                 {
                     if (hr < 0)
                     {
                         ThrowFrom_tjs_error(hr, str);
                     }
                 }
             }
         }
         else
         {
             int hr = clo.PropGetByNum(flags, member.AsInteger(), result, clo.mObjThis != null
                  ? clo.mObjThis : objthis);
             if (hr == Error.S_OK)
             {
                 TypeOf(result);
             }
             else
             {
                 if (hr == Error.E_MEMBERNOTFOUND)
                 {
                     result.Set("undefined");
                 }
                 else
                 {
                     if (hr < 0)
                     {
                         ThrowFrom_tjs_error_num(hr, member.AsInteger());
                     }
                 }
             }
         }
     }
     else
     {
         if (target.IsString())
         {
             GetStringProperty(result, target, member);
             TypeOf(result);
         }
         else
         {
             if (target.IsOctet())
             {
                 GetOctetProperty(result, target, member);
                 TypeOf(result);
             }
             else
             {
                 string mes = Error.VariantConvertErrorToObject.Replace("%1", Utils.VariantToReadableString
                     (target));
                 throw new VariantException(mes);
             }
         }
     }
 }
 /// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
 /// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
 private static void GetOctetProperty(Variant result, Variant octet, Variant member
     )
 {
     // processes properties toward octets.
     if (member.IsNumber() != true)
     {
         string name = member.GetString();
         if (name == null)
         {
             ThrowFrom_tjs_error(Error.E_MEMBERNOTFOUND, string.Empty);
         }
         if (name.Equals("length"))
         {
             // get string length
             ByteBuffer o = octet.AsOctet();
             if (o != null)
             {
                 result.Set(o.Capacity());
             }
             else
             {
                 result.Set(0);
             }
             return;
         }
         else
         {
             if (name[0] >= '0' && name[0] <= '9')
             {
                 ByteBuffer o = octet.AsOctet();
                 int n = int.Parse(name);
                 int len = o != null ? o.Capacity() : 0;
                 if (n < 0 || n >= len)
                 {
                     throw new TJSException(Error.RangeError);
                 }
                 result.Set(o.Get(n));
                 return;
             }
         }
         ThrowFrom_tjs_error(Error.E_MEMBERNOTFOUND, name);
     }
     else
     {
         // member.Type() == tvtInteger || member.Type() == tvtReal
         ByteBuffer o = octet.AsOctet();
         int n = member.AsInteger();
         int len = o != null ? o.Capacity() : 0;
         if (n < 0 || n >= len)
         {
             throw new TJSException(Error.RangeError);
         }
         result.Set(o.Get(n));
         return;
     }
 }
 /// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
 /// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
 protected internal static void SetPropertyIndirect(Variant target, Variant member
     , Variant param, Dispatch2 objthis, int flags)
 {
     if (target.IsObject())
     {
         VariantClosure clo = target.AsObjectClosure();
         if (member.IsInteger() != true)
         {
             string str = member.AsString();
             int hr = clo.PropSet(flags, str, param, clo.mObjThis != null ? clo.mObjThis : objthis
                 );
             if (hr < 0)
             {
                 ThrowFrom_tjs_error(hr, str);
             }
         }
         else
         {
             int hr = clo.PropSetByNum(flags, member.AsInteger(), param, clo.mObjThis != null ?
                 clo.mObjThis : objthis);
             if (hr < 0)
             {
                 ThrowFrom_tjs_error_num(hr, member.AsInteger());
             }
         }
     }
     else
     {
         if (target.IsString())
         {
             SetStringProperty(param, target, member);
         }
         else
         {
             if (target.IsOctet())
             {
                 SetOctetProperty(param, target, member);
             }
             else
             {
                 string mes = Error.VariantConvertErrorToObject.Replace("%1", Utils.VariantToReadableString
                     (target));
                 throw new VariantException(mes);
             }
         }
     }
 }
 /// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
 public static void CharacterCodeFrom(Variant val)
 {
     char[] ch = new char[1];
     ch[0] = (char)val.AsInteger();
     val.Set(new string(ch));
 }
 /// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
 /// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
 protected internal static void OperatePropertyIndirect0(VariantClosure clo, Variant
     name, Variant result, Dispatch2 objthis, int ope)
 {
     if (name.IsInteger() != true)
     {
         string str = name.AsString();
         int hr = clo.Operation(ope, str, result, null, clo.mObjThis != null ? clo.mObjThis
              : objthis);
         if (hr < 0)
         {
             ThrowFrom_tjs_error(hr, str);
         }
     }
     else
     {
         int hr = clo.OperationByNum(ope, name.AsInteger(), result, null, clo.mObjThis !=
             null ? clo.mObjThis : objthis);
         if (hr < 0)
         {
             ThrowFrom_tjs_error_num(hr, name.AsInteger());
         }
     }
 }
示例#7
0
 /// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
 public static object VariantToJavaObject(Variant param, Type type)
 {
     if (type.IsPrimitive)
     {
         // プリミティブタイプの场合
         if (type.Equals(typeof(int)))
         {
             return Sharpen.Extensions.ValueOf(param.AsInteger());
         }
         else
         {
             if (type.Equals(typeof(double)))
             {
                 return (param.AsDouble());
             }
             else
             {
                 if (type.Equals(typeof(bool)))
                 {
                     return Sharpen.Extensions.ValueOf(param.AsInteger() != 0 ? true : false);
                 }
                 else
                 {
                     if (type.Equals(typeof(float)))
                     {
                         return ((float)param.AsDouble());
                     }
                     else
                     {
                         if (type.Equals(typeof(long)))
                         {
                             return Sharpen.Extensions.ValueOf(param.AsInteger());
                         }
                         else
                         {
                             if (type.Equals(typeof(char)))
                             {
                                 return ((char)param.AsInteger());
                             }
                             else
                             {
                                 if (type.Equals(typeof(byte)))
                                 {
                                     return (unchecked((byte)param.AsInteger()));
                                 }
                                 else
                                 {
                                     if (type.Equals(typeof(short)))
                                     {
                                         return ((short)param.AsInteger());
                                     }
                                     else
                                     {
                                         // may be Void.TYPE
                                         return null;
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     else
     {
         if (type.Equals(typeof(string)))
         {
             return param.AsString();
         }
         else
         {
             if (type.Equals(typeof(ByteBuffer)))
             {
                 return param.AsOctet();
             }
             else
             {
                 if (type.Equals(typeof(Variant)))
                 {
                     return param;
                 }
                 else
                 {
                     if (type.Equals(typeof(VariantClosure)))
                     {
                         return param.AsObjectClosure();
                     }
                     else
                     {
                         if (type.Equals(typeof(Dispatch2)))
                         {
                             return param.AsObject();
                         }
                         else
                         {
                             if (type.Equals(param.ToJavaObject().GetType()))
                             {
                                 return param.ToJavaObject();
                             }
                             else
                             {
                                 // その他 のクラス
                                 return null;
                             }
                         }
                     }
                 }
             }
         }
     }
 }
示例#8
0
 /// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
 public override int Set(Variant param, Dispatch2 objthis)
 {
     RegExpNI _this = (RegExpNI)objthis.GetNativeInstance(Kirikiri.Tjs2.RegExpClass.mClassID
         );
     if (_this == null)
     {
         return Error.E_NATIVECLASSCRASH;
     }
     _this.mStart = param.AsInteger();
     return Error.S_OK;
 }
示例#9
0
 /// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
 /// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
 private bool CallSetMissing(string name, Variant value)
 {
     // call 'missing' method for PopSet
     if (mProsessingMissing)
     {
         return false;
     }
     mProsessingMissing = true;
     bool res = false;
     try
     {
         Variant val = new Variant(value);
         SimpleGetSetProperty prop = new SimpleGetSetProperty(val);
         try
         {
             Variant[] args = new Variant[3];
             args[0] = new Variant(1);
             // true: set
             args[1] = new Variant(name);
             // member name
             args[2] = new Variant(prop);
             //tTJSVariant *pargs[3] = {args +0, args +1, args +2};
             Variant funcresult = new Variant();
             int er = FuncCall(0, mmissing_name, funcresult, args, this);
             if (er < 0)
             {
                 res = false;
             }
             else
             {
                 res = funcresult.AsInteger() != 0;
             }
         }
         finally
         {
         }
     }
     finally
     {
         //prop.Release();
         mProsessingMissing = false;
     }
     return res;
 }
示例#10
0
 /// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
 /// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
 public virtual void Randomize(Variant[] param)
 {
     if (param.Length == 0)
     {
         // parametor not given
         if (mRandomBits128 != null)
         {
             // another random generator is given
             //tjs_uint8 buf[32];
             //unsigned long tmp[32];
             ByteBuffer buf = ByteBuffer.AllocateDirect(32);
             mRandomBits128.GetRandomBits128(buf, 0);
             mRandomBits128.GetRandomBits128(buf, 16);
             int[] tmp = new int[32];
             for (int i = 0; i < 32; i++)
             {
                 long num = (long)buf.Get(i) + ((long)buf.Get(i) << 8) + ((long)buf.Get(1) << 16)
                     + ((long)buf.Get(i) << 24);
                 tmp[i] = (int)(num > int.MaxValue ? num - unchecked((long)(0x100000000L)) : num);
             }
             if (mGenerator != null)
             {
                 mGenerator = null;
             }
             mGenerator = new MersenneTwister(tmp);
         }
         else
         {
             if (mGenerator != null)
             {
                 mGenerator = null;
             }
             mGenerator = new MersenneTwister(Runtime.CurrentTimeMillis());
         }
     }
     else
     {
         if (param.Length >= 1)
         {
             if (param[0].IsObject())
             {
                 MersenneTwisterData data = null;
                 try
                 {
                     // may be a reconstructible information
                     VariantClosure clo = param[0].AsObjectClosure();
                     if (clo.mObject == null)
                     {
                         throw new TJSException(Error.NullAccess);
                     }
                     string state;
                     Variant val = new Variant();
                     data = new MersenneTwisterData();
                     // get state array
                     //TJSThrowFrom_tjs_error
                     int hr = clo.PropGet(Interface.MEMBERMUSTEXIST, "state", val, null);
                     if (hr < 0)
                     {
                         Error.ThrowFrom_tjs_error(hr, null);
                     }
                     state = val.AsString();
                     if (state.Length != MT_N * 8)
                     {
                         throw new TJSException(Error.NotReconstructiveRandomizeData);
                     }
                     int p = 0;
                     for (int i = 0; i < MT_N; i++)
                     {
                         long n = 0;
                         int tmp;
                         for (int j = 0; j < 8; j++)
                         {
                             int c = state[p + j];
                             tmp = -1;
                             if (c >= '0' && c <= '9')
                             {
                                 n = c - '0';
                             }
                             else
                             {
                                 if (c >= 'a' && c <= 'f')
                                 {
                                     n = c - 'a' + 10;
                                 }
                                 else
                                 {
                                     if (c >= 'A' && c <= 'F')
                                     {
                                         n = c - 'A' + 10;
                                     }
                                 }
                             }
                             if (tmp == -1)
                             {
                                 throw new TJSException(Error.NotReconstructiveRandomizeData);
                             }
                             else
                             {
                                 n <<= 4;
                                 n += tmp;
                             }
                         }
                         p += 8;
                         data.state.Put(i, n & unchecked((long)(0xffffffffL)));
                     }
                     // get other members
                     hr = clo.PropGet(Interface.MEMBERMUSTEXIST, "left", val, null);
                     if (hr < 0)
                     {
                         Error.ThrowFrom_tjs_error(hr, null);
                     }
                     data.left = val.AsInteger();
                     hr = clo.PropGet(Interface.MEMBERMUSTEXIST, "next", val, null);
                     data.next = val.AsInteger();
                     if (mGenerator != null)
                     {
                         mGenerator = null;
                     }
                     mGenerator = new MersenneTwister(data);
                 }
                 catch (VariantException)
                 {
                     data = null;
                     throw new TJSException(Error.NotReconstructiveRandomizeData);
                 }
                 catch (TJSException)
                 {
                     data = null;
                     throw new TJSException(Error.NotReconstructiveRandomizeData);
                 }
                 data = null;
             }
             else
             {
                 // 64bitじゃなくて、32bit にしてしまっている。实用上问题あれば修正。
                 int n = param[0].AsInteger();
                 int[] tmp = new int[1];
                 tmp[0] = n;
                 if (mGenerator != null)
                 {
                     mGenerator = null;
                 }
                 mGenerator = new MersenneTwister(tmp);
             }
         }
     }
 }