コード例 #1
0
 public Var(PPVar var)
 {
     ppvar     = var;
     isManaged = true;
     if (NeedsRefcounting(ppvar))
     {
         PPBVar.AddRef(ppvar);
     }
 }
コード例 #2
0
 public Var(Var other)
 {
     ppvar     = other.ppvar;
     isManaged = true;
     if (NeedsRefcounting(ppvar))
     {
         PPBVar.AddRef(ppvar);
     }
 }
コード例 #3
0
        public PPResource AsResource()
        {
            if (!IsResource)
            {
                return(PPResource.Empty);
            }

            return(PPBVar.VarToResource(ppvar));
        }
コード例 #4
0
        public string AsString()
        {
            if (!IsString)
            {
                return(string.Empty);
            }

            uint len = 0;

            return(PPBVar.VarToUtf8(ppvar, out len));
        }
コード例 #5
0
 public Var(object var)
 {
     if (var is int)
     {
         ppvar.type         = PPVarType.Int32;
         ppvar.value.as_int = (int)var;
         isManaged          = true;
     }
     if (var is uint)
     {
         ppvar.type         = PPVarType.Int32;
         ppvar.value.as_int = Convert.ToInt32(var);
         isManaged          = true;
     }
     else if (var is string)
     {
         ppvar     = VarFromUtf8Helper((string)var);
         isManaged = true;
     }
     else if (var is bool)
     {
         ppvar.type          = PPVarType.Bool;
         ppvar.value.as_bool = (bool)var ? PPBool.True : PPBool.False;
         isManaged           = true;
     }
     else if (var is double)
     {
         ppvar.type            = PPVarType.Double;
         ppvar.value.as_double = (double)var;
         isManaged             = true;
     }
     // Note: You may see precision differences
     else if (var is float)
     {
         ppvar.type            = PPVarType.Double;
         ppvar.value.as_double = Convert.ToDouble((float)var);
         isManaged             = true;
     }
     else if (var is Var)
     {
         ppvar     = ((Var)var).ppvar;
         isManaged = true;
         if (NeedsRefcounting(ppvar))
         {
             PPBVar.AddRef(ppvar);
         }
     }
     else
     {
         ppvar.type = PPVarType.Undefined;
         isManaged  = true;
     }
 }
コード例 #6
0
 // This helper function uses the latest available version of VarFromUtf8. Note
 // that version 1.0 of this method has a different API to later versions.
 public static PPVar VarFromUtf8Helper(string utf8_str)
 {
     if (string.IsNullOrEmpty(utf8_str))
     {
         return(PPBVar.VarUtf8Empty());
     }
     else
     {
         var bytes = Encoding.UTF8.GetBytes(utf8_str);
         return(PPBVar.VarFromUtf8(bytes, (uint)bytes.Length));
     }
 }
コード例 #7
0
ファイル: runtime.cs プロジェクト: vzolotov/WebSharp
 /// <summary>
 /// Method that will release all the PPResource's that have been placed on the queue to be released.
 /// </summary>
 /// <param name="result"></param>
 void ReleasePump(PPError result)
 {
     if (!resourceReleaseQueue.IsEmpty)
     {
         object resourceToBeReleased;
         while (resourceReleaseQueue.TryDequeue(out resourceToBeReleased))
         {
             if (resourceToBeReleased is PPResource)
             {
                 PPBCore.ReleaseResource((PPResource)resourceToBeReleased);
             }
             else if (resourceToBeReleased is PPVar)
             {
                 PPBVar.Release((PPVar)resourceToBeReleased);
             }
         }
     }
     PPBCore.CallOnMainThread(releaseLoopTime, new CompletionCallback(ReleasePump), releaseLoopTime);
 }