Modular 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Modular 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Modular 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Modular 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Modular 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 MIT
开发语言 C/C++
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开源组织
地区 国产
投 递 者 梁欢
适用人群 未知
收录时间 2015-04-07

软件简介

我在实际工作中发现很多类和模块是非常独立和相似的:它们一般都需要有初始化和反初始化的过程。一般做法是在程序初始化的位置对这些类和模块进行集中配置。比如程序中有ModuleA、ModuleE、ModuleF这三个模块,而且这三个模块之间有依赖顺序ModuleE<ModuleF<ModuleA,这时候的初始化过程就是:
ModuleE.Init();
ModuleF.Init();
ModuleA.Init();
如果模块很多,这种初始化过程就显得非常乏味。那么我们又没有更好的办法解决这个问题呢?这就是该项目给出的答案!

Modular能够自动收集C++项目中那些独立的模块,并提供统一的初始化入口。还是上面的那个问题,如果用Modular来解决你只需要做以下几件事情:

在模块ModuleE的实现文件中加入当前模块的注册信息:

#include "SelfModule.h"
#include "TypeSelect.h"
#include "Modular.h"

/**
* 定义当前模块
*/
static DefModule _Module("ModuleE"
#ifdef Mod_Config
    , "ModuleF;"
#else
    ,""
#endif
    , []$(Initializer)(){
        printf("ModuleE::Initializer()\n");
    }
    , []$(Uninitializer)(){
    printf("ModuleE::Uninitializer()\n");
    });

在模块ModuleF的实现文件中加入当前模块的注册信息:

#include "SelfModule.h"
#include "TypeSelect.h"
#include "Modular.h"

/**
 * 定义当前模块
 */
static DefModule _Module("ModuleF"
#ifdef Mod_Config
    , "ModuleA;"
#else
    ,""
#endif
    , []$(Initializer)(){
        printf("ModuleF::Initializer()\n");
    }
    , []$(Uninitializer)(){
        printf("ModuleF::Uninitializer()\n");
    });

在模块ModuleA的实现文件中加入当前模块的注册信息:

#include "SelfModule.h"
#include "TypeSelect.h"
#include "Modular.h"

/**
 * 定义当前模块
 */
static DefModule _Module("ModuleA"
    ,""
    , []$(Initializer)(){
        printf("ModuleA::Initializer()\n");
    }
    , []$(Uninitializer)(){
        printf("ModuleA::Uninitializer()\n");
    });

当你对每一个独立的模块进行注册后,就可以在应用初始化的位置使用一句话完成注册过程:

SelfModuleList::GetInstance()->Inits();

SelfModuleList::GetInstance()->Uninits();
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表于硬件 & IoT专区
2019/01/08 14:01

ModelarDB:Modular + Model

长文预警,今天介绍一个时间序列管理系统的论文:《ModelarDB: Modular Model-Based Time Series Management with Spark and Cassandra》,三个作者都来自丹麦奥尔堡大学,这三个人在 2017 年 TKDE 有一篇很全面的时序数据库 Survey《Time Series Management Systems: A Survey》。 正文 4616 字,预计阅读时间 12 分钟。 问题背景 工业系统(如风机)产生的数据量太大,无法存储所有原始数据,现在普遍只存储了聚合信息。但是这...

0
0
发表了博客
2013/06/15 08:59

Modular Java

http://www.infoq.com/articles/modular-java-what-is-it http://www.infoq.com/articles/modular-java-static-modularity http://www.infoq.com/articles/modular-java-dynamic-modularity

0
1
发表了博客
2013/10/01 12:37

Modular Java

《Modular Java》 作者:Craig Walls 出版日期:2009-07-30 语言:English 版本:第1版 页数:260页 描 述 Attack complexity in your Java applications using Modular Java. This pragmatic guide introduces you to OSGi and Spring Dynamic Modules, two of the most compelling frameworks for Java modularization. Driven by real-world examples, this book will equip you with the know-how you need to develop Jav...

0
0
发表了博客
2018/11/16 15:58

Modular Arithmetic ( Arithmetic and Algebra) CGAL 4.13 -User Manual

1 Introduction Modular arithmetic is a fundamental tool in modern algebra systems. In conjunction with the Chinese remainder theorem it serves as the workhorse in several algorithms computing the gcd, resultant etc. Moreover, it can serve as a very efficient filter, since it is often possible to exclude that some value is zero by computing its modular correspondent with respect to one prime onl...

0
0
发表了博客
2018/02/19 23:35

ZOJ 3609 Modular Inverse(拓展欧几里得求最小逆元)

Modular Inverse Time Limit: 2 Seconds Memory Limit: 65536 KB The modular modular multiplicative inverse of an integer a modulo m is an integer x such that a-1≡x (mod m). This is equivalent to ax≡1 (mod m). Input There are multiple test cases. The first line of input is an integer T ≈ 2000 indicating the number of test cases. Each test case contains two integers 0 < a ≤ 1000 and 0 < m ≤ 10...

0
0
发表了博客
2019/05/24 15:36

译文:A Robust and Modular Multi-Sensor Fusion ApproachApplied to MAV Navigation

A Robust and Modular Multi-Sensor Fusion ApproachApplied to MAV Navigation 众所周知,将来自多个传感器的信息融合用于机器人导航导致增加的鲁棒性和准确性。然而,在现场部署之前准确校准传感器集合以及传感器中断,不同的测量速率和延迟,使得多传感器融合成为挑战。因此,为了简单起见,大多数系统都没有利用所有可用的传感器信息。例如,在需要将机器人从室内转移到室外的任务中,忽视全球定位系统(GPS)信号是常态,这...

0
0
发表了博客
2020/03/14 10:41

gem5 — a modular discrete event driven computer system simulator platform — install

gem5 is a modular discrete event driven computer system simulator platform. http://gem5.org/Introduction

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
2 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部