public void Set(T obj)
 {
     td_bridge_object_ptr_reset(ptr, TLObjectFactory.CreateCxxObject(obj));
     //var oldobj = *(IntPtr*)ptr;
     //if (oldobj != IntPtr.Zero)
     //    CxxAbi.FreeCxxTLObject(oldobj);
     //*(IntPtr*)ptr = obj == null ? IntPtr.Zero : obj.TdCreateCxxObject();
 }
        public T Fetch()
        {
            // var objptr = *(IntPtr*)ptr;
            //T obj = null;
            //td_bridge_object_ptr_fetch(ptr, (objptr, _)=> {
            //    if (objptr != IntPtr.Zero)
            //        obj = (T)TLObjectFactory.FetchCxxObject(objptr);
            //});
            var objptr = td_bridge_object_ptr_get(ptr);

            return(objptr == IntPtr.Zero ? null : (T)TLObjectFactory.FetchCxxObject(objptr));
        }
 public void Add(TLObject obj)
 {
     td_bridge_vector_object_emplace_back(ptr, TLObjectFactory.CreateCxxObject(obj));
 }