mcocomp编译器
为了表达 C/C++ 应用程序中数据库的内容和组织,数据库设计人员使用数据定义语言(DDL)来创建数据库结构。结构是数据模型的文本描述。它由 SmartEDB结构编译器处理,该编译器确保结构在语法上正确,然后生成应用程序编程接口(API)头文件(database_name.h
)和实现文件(database_name.c
)。当编译应用程序时,会从实现文件生成数据库的数据库字典。数据库字典只是 SmartEDB运行时使用的结构的二进制形式。
DDL 编译器的执行方式如下:
mcocomp [OPTIONS] ddlspec
其中 ddlspec 是包含结构的文本文件的名称。它可以遵循您选择的任何命名约定,但我们通常使用文件扩展名“.mco
”。
mcocomp
的选项如下:
-p, -P <path> - 指定输出目录。如果未指定目录,则文件将写入 ddlspec 文件所在的目录。
-i, -I <path> - 指定包含目录。如果未指定此路径,编译器将仅在 ddlspec 文件目录中查找。
-hpp, -c++, -C++ - 生成一个C++实现文件(.hpp)。
-smartptr - 为C++接口生成智能访问器方法。
-cs [namespace] - 生成 C# 类定义,可选择在命名空间内。
-java [package] - 生成一个Java接口。
-sa [typename] - 抑制类 API的 生成(用于 UDA API) 。
-si - 指定详细的结构初始化。默认情况下,编译器生成以下形式的代码:
struct A { int i; int j; }; A a = {3,4};
一些 C 编译器不接受这种形式的结构初始化,所以 si 开关将生成如下形式的代码:
struct A { int i; int j; }; A a; a.i = 3; a.j = 4;
-c, -C, -compact - 为数据库中的所有类指定“紧凑”选项。对于每个类中的结构、可变长度、可选和序列字段,将使用 2 字节的偏移量,并且所有对象的大小都限制为 64K(不包括 BLOB 和序列)。
-nonatomic/ -atomic -指定在使用 MURSIW 事务管理器时,所有瞬态类都是“非原子的”。此修饰符更改了非原子类的实例在事务中的处理方式。通常,对于原子类(默认情况),当程序对该类的对象请求更新操作时,运行时(1)制作该实例的工作副本,(2)将该实例放入事务列表,(3)从任何索引中删除该实例。这需要时间。在某些情况下,不需要完整的处理过程,因此对于“非原子”类,运行时跳过步骤(1)和(2),并且仅在要更新索引字段时执行(3)。这破坏了事务的 ACID 属性,但显著提高了性能。请注意,非原子类不支持回滚!(该修饰符可以作为类修饰符(如瞬态或持久)应用于结构中的特定类。)命令行选项“
-nonatomic
”和替代选项“-atomic
”都由mcocomp
应用于结构中的所有类。-s, -S - 抑制版权声明和时间戳控制台输出。
-x, -X - 生成 XML 方法:
classname\_xml\_create
,classname\_xml\_schema
,classname_xml_get
,classname_xml_put
-x32 - 生成 32 位指针。如果既未指定,默认的指针大小为主机系统上指针的大小。
-x64 - 生成 64位指针。如果既未指定,默认的指针大小为主机系统上指针的大小。
-dll - 为包装函数生成 declspec 前缀。
-mergeable - 生成可与其他字典合并的字典。
-sql - 启用 SQL 扩展。
-persistent - 设定所有未指定的类成为“持久型”。
-transient - 设定所有未指定的类成为“暂时型”(默认)。
-prefix - 在结构名称前加上数据库名称作为前缀。
-nosort - 不要更改字段的顺序(JNI/.NET 框架和 DDL 兼容结构)。
-ws1 - 将目标系统上 wchar_t 类型的大小指定为1字节。
-ws2 - 将目标系统上 wchar_t 类型的大小指定为2字节。
-ws4 - 将目标系统上 wchar_t 类型的大小指定为4字节。
-o, -O - 指示
mcocomp
生成 SmartEDB实现文件的优化版本;否则将生成默认(开发)版本。优化版本会生成内联函数,或者用宏替换某些函数,这些宏会放入实现头文件中,而不是实现的“.c”文件中-revno - 除了产品构建编号之外,还打印修订编号。
-compiler - 打印构建此实用程序的编译器的版本。
-help - 打印出
mcocomp
的使用信息。