webkit源码解读-FileList

2024-03-27 21:58
文章标签 源码 解读 webkit filelist

本文主要是介绍webkit源码解读-FileList,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

FileList是文件组件的表示形式,是一个包装了系列File对象的对象。里面通过vector保持多个文件对象。

class FileList : public ScriptWrappable, public RefCounted<FileList> {
public:// 需要用create创建该类对象static Ref<FileList> create(){   // adoptRef是RefPtr中的函数,实现管理该对象的引用问题。这些不影响理解。return adoptRef(*new FileList);}static Ref<FileList> create(Vector<RefPtr<File>>&& files){   // adoptRef需要的是引用类型,需要要加*,WTFMove,WTF是web template framework简称,move是c++ std中提供的东西。return adoptRef(*new FileList(WTFMove(files)));}// 返回文件长度,简单调用vector的size实现unsigned length() const { return m_files.size(); }// 返回某个文件对象,见cpp文件WEBCORE_EXPORT File* item(unsigned index) const;// 判断文件列表是否为空,简单调用vector对象的isEmptybool isEmpty() const { return m_files.isEmpty(); }// 返回所有文件的路径,见cpp文件Vector<String> paths() const;private:// 不需要显示调用构造函数创建该类对象FileList();FileList(Vector<RefPtr<File>>&& files)// 初始化m_files变量: m_files(WTFMove(files)){ }// FileLists can only be changed by their owners.friend class DataTransfer;friend class FileInputType;// 追加文件void append(RefPtr<File>&& file) { m_files.append(WTFMove(file)); }// 删除所有文件void clear() { m_files.clear(); }// 是一个类似数组的vector,里面是一系列RefPtr对象,RefPtr对象负责管理File对象的引用问题。Vector<RefPtr<File>> m_files;
};

FileList.cpp

namespace WebCore {FileList::FileList()
{
}
// 返回某个文件对象
File* FileList::item(unsigned index) const
{if (index >= m_files.size())return 0;return m_files[index].get();
}
// 返回所有文件的路径
Vector<String> FileList::paths() const
{Vector<String> paths;for (unsigned i = 0; i < m_files.size(); ++i)paths.append(m_files[i]->path());return paths;
}} // namespace WebCore

这篇关于webkit源码解读-FileList的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/853508

相关文章

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr

关于Gateway路由匹配规则解读

《关于Gateway路由匹配规则解读》本文详细介绍了SpringCloudGateway的路由匹配规则,包括基本概念、常用属性、实际应用以及注意事项,路由匹配规则决定了请求如何被转发到目标服务,是Ga... 目录Gateway路由匹配规则一、基本概念二、常用属性三、实际应用四、注意事项总结Gateway路由

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步