Doom3 CVarSystem分析
转发请注明出处
CVarSystem是用来方便管理控制台变量的。其中核心类有idCVar类
与 idCVarSystem。 其中idCVarSystemLocal实现了idCVarSystem类。
声明一个idCVar对象即声明了一个控制台变量,例如:
idCVar my_var("myval0");
但是想象一下,当我们在程序中多处使用一个变量的时候,若我们把我们
所要的数据塞到idCVar类里的话。那么就会出现歧义。也就是有可能出现同名
的变量在多个不同的地方被声明,并且值不同。idCVar类应用了Proxy(代理模式)
这种设计模式。idCVar并不直接持有变量的值。而他通过一个叫intenalVar的
成员变量,而该成员变量同样指向一个idCVar对象。访问idCVar变量的函数都
通过调用intenalVar的同名函数获得。也就是说真正持有数据的intenalVar所指向
的指针。而intenalVar在初始化后会被指向一个idInternalCVar的对象。该
idInternalCVar类继承自idCVar类。在初始化idCVar时会自动在idCVarSystemLocal
控制台变量系统中注册自己。若当前类没有被分配一个internalVar 该 idCVarSystemLocal
会为其分配一个。若看到声明该控制台变量的名称已经在系统中存在同名的internalVar
则让该变量指向这个已存在的idInternalCVar变量。并且尝试更改其值。这种
感觉有点类似于只能指针。你可以向以下方式声明变量:
在某个函数中:
void func1(){
...
idCVar("myval0" , "0" , CVAR_INTEGER , "my frsit val");
...
}
在另一个函数中:
void func2(){
...
idCVar("myval0" , "123" , CVAR_INTEGER , "my val");
...
}
在两处声明的同名控制台变量指向的是一个idInternalCVar对象!
Doom3 CVarSystem分析相关推荐
- doom3 源代码评测 1
原文地址 http://fabiensanglard.net/doom3/ 2012年6月8日 DOOM3源代码评测:简介(第1部分,共6部分)>> 2011年11月23日,id软件保持传 ...
- 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析
目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...
- 2022-2028年中国自动驾驶系统行业现状调研分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国自动驾驶系统行业市场行业相关概述.中国自 ...
- 2022-2028年中国阻尼涂料市场研究及前瞻分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国阻尼涂料行业市场行业相关概述.中国阻尼涂 ...
- 2021-2028年中国阻燃装饰行业市场需求与投资规划分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国阻燃装饰行业市场行业相关概述.中国阻燃装 ...
- 2022-2028年全球与中国漂白吸水棉市场研究及前瞻分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国漂白吸水棉行业市场行业相关概述.全 ...
- 2022-2028年全球与中国青苔清洗剂市场研究及前瞻分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国青苔清洗剂行业市场行业相关概述.全 ...
- 2022-2028年全球与中国氢碘化物市场智研瞻分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国氢碘化物行业市场行业相关概述.全球 ...
- 2022-2028年全球与中国人字拖市场研究及前瞻分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国人字拖行业市场行业相关概述.全球与 ...
- 2022-2028年全球与中国乳胶丝市场研究及前瞻分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国乳胶丝行业市场行业相关概述.全球与 ...
最新文章
- MLIR算子量化Quantization
- 阿里云首席科学家闵万里:我们为什么敢挑战一百年的制度,因为黑科技能为挽救生命抢来50%的可能性
- 盯住未来!揭秘英特尔的AI芯片生意
- JAVA日期加减运算
- 脑科学助力人工智能,离不开大数据
- ubuntu 21.04安装OBS Studio录屏软件
- osgEarth使用没有DX的Triton库Triton-MT-DLL-NODX.lib
- Spring工作原理分析
- AgileConfig轻量级配置中心1.3.0发布,支持多用户权限控制
- 线性代数 —— 线性基与前缀线性基
- c++byte数组和文件的相互转换_经常对文件相互转换,全能转换工具,解决办公中遇到的所有难题...
- maven多模块项目,多web合并项目使用心得
- 【米课】思维导图与深度思考
- 【人脸识别】基于matlab GUI Gabor+SVM比较PCA+SVM人脸识别【含Matlab源码 685期】
- 2023年南开大学税务专硕考研上岸前辈备考经验指导
- 黎曼Zeta函数,人类文明永恒的纪念
- vue3生成二维码打印
- 【漫漫转码路】Day 38 C++ day09
- 星淘惠:阿拉山口跨境电商班列为跨境电商保稳提质助力
- 北邮在线计算机,北邮在线圆我IT梦
热门文章
- 二十一世纪大学英语读写教程(第四册)学习笔记(原文)——2 - The Gratitude We Need(我们所需要的感激)
- ugui 转轮_Unity3D的FingerGesture插件
- 股票涨或跌为什么?看懂本质,才能顺势而为!
- 虚拟机上的hadoop localhost:8088,localhost:50070均不能访问
- 2022年虾皮开店(shopee入驻)最新教程!
- L3-001 凑零钱 (30 分)——01背包+路径记录
- 程序员刚入职一周,有公司又开了更高薪资的offer,怎么办?
- macOS Monterey 12.1 (21C52) 正式版 ISO、IPSW、PKG 下载
- Python中Round函数:怎么解释?怎么用?
- Serialization和Deserialization