refactor database.cpp (1/2)

This commit is contained in:
yyc12345 2022-07-30 18:12:22 +08:00
parent c1fc832b88
commit 6b3f5d1364
18 changed files with 786 additions and 864 deletions

View File

@ -39,8 +39,7 @@
SuperScriptMaterializer处理流程里会涉及很多不同的数据库文件以下是这些数据库和其内表的格式。 SuperScriptMaterializer处理流程里会涉及很多不同的数据库文件以下是这些数据库和其内表的格式。
其中这些是Materializer直接输出的基于文档的数据库 其中这些是Materializer直接输出的基于文档的数据库
* script.db * doc.db
* data.db
* env.db * env.db
这些数据库是上面数据库经过Decorator处理可以被Viewer接受的数据库 这些数据库是上面数据库经过Decorator处理可以被Viewer接受的数据库
@ -50,9 +49,9 @@ SuperScriptMaterializer处理流程里会涉及很多不同的数据库文件
* query.db * query.db
* composition.db * composition.db
## script.db 格式 ## doc.db 格式
script.db导出的是当前Virtools文档内的脚本及其它重要数据。 doc.db导出的是当前Virtools文档内的脚本及其它重要数据。
表列表: 表列表:

View File

@ -12,32 +12,24 @@ EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86 Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86 Release|x86 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6D751BF5-87D6-4123-94B3-34721938CF04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6D751BF5-87D6-4123-94B3-34721938CF04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6D751BF5-87D6-4123-94B3-34721938CF04}.Debug|x64.ActiveCfg = Debug|Any CPU
{6D751BF5-87D6-4123-94B3-34721938CF04}.Debug|x86.ActiveCfg = Debug|Any CPU {6D751BF5-87D6-4123-94B3-34721938CF04}.Debug|x86.ActiveCfg = Debug|Any CPU
{6D751BF5-87D6-4123-94B3-34721938CF04}.Release|Any CPU.ActiveCfg = Release|Any CPU {6D751BF5-87D6-4123-94B3-34721938CF04}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6D751BF5-87D6-4123-94B3-34721938CF04}.Release|x64.ActiveCfg = Release|Any CPU
{6D751BF5-87D6-4123-94B3-34721938CF04}.Release|x86.ActiveCfg = Release|Any CPU {6D751BF5-87D6-4123-94B3-34721938CF04}.Release|x86.ActiveCfg = Release|Any CPU
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|Any CPU.ActiveCfg = Debug|Win32 {4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|Any CPU.ActiveCfg = Debug|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|x64.ActiveCfg = Debug|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|x86.ActiveCfg = Debug|Win32 {4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|x86.ActiveCfg = Debug|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|x86.Build.0 = Debug|Win32 {4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|x86.Build.0 = Debug|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|Any CPU.ActiveCfg = Release|Win32 {4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|Any CPU.ActiveCfg = Release|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|x64.ActiveCfg = Release|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|x86.ActiveCfg = Release|Win32 {4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|x86.ActiveCfg = Release|Win32
{4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|x86.Build.0 = Release|Win32 {4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|x86.Build.0 = Release|Win32
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Debug|x64.ActiveCfg = Debug|Any CPU
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Debug|x86.ActiveCfg = Debug|Any CPU {0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Debug|x86.ActiveCfg = Debug|Any CPU
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Release|Any CPU.ActiveCfg = Release|Any CPU {0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Release|x64.ActiveCfg = Release|Any CPU
{0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Release|x86.ActiveCfg = Release|Any CPU {0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build"> <?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
@ -15,7 +16,7 @@
<RootNamespace>SuperScriptMaterializer</RootNamespace> <RootNamespace>SuperScriptMaterializer</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<PlatformToolset>v100</PlatformToolset> <PlatformToolset>v100</PlatformToolset>
<UseOfMfc>Dynamic</UseOfMfc> <UseOfMfc>Dynamic</UseOfMfc>
@ -30,18 +31,18 @@
<UseOfMfc>Dynamic</UseOfMfc> <UseOfMfc>Dynamic</UseOfMfc>
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="Virtools.props"/> <Import Project="Virtools.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="Virtools.props"/> <Import Project="Virtools.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Label="Shared"> <ImportGroup Label="Shared">
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros"/> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(VIRTOOLS_OUTPUT_PATH)</OutDir> <OutDir>$(VIRTOOLS_OUTPUT_PATH)</OutDir>
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
@ -107,31 +108,33 @@
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="database.h"/> <ClInclude Include="database.h" />
<ClInclude Include="data_export.h"/> <ClInclude Include="data_export.h" />
<ClInclude Include="env_export.h"/> <ClInclude Include="env_export.h" />
<ClInclude Include="resource.h"/> <ClInclude Include="resource.h" />
<ClInclude Include="script_export.h"/> <ClInclude Include="script_export.h" />
<ClInclude Include="shared_export.h"/> <ClInclude Include="shared_export.h" />
<ClInclude Include="virtools_compatible.h"/> <ClInclude Include="string_helper.hpp" />
<ClInclude Include="vt_menu.h"/> <ClInclude Include="virtools_compatible.h" />
<ClInclude Include="stdafx.h"/> <ClInclude Include="vt_menu.h" />
<ClInclude Include="stdafx.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="database.cpp"/> <ClCompile Include="database.cpp" />
<ClCompile Include="data_export.cpp"/> <ClCompile Include="data_export.cpp" />
<ClCompile Include="env_export.cpp"/> <ClCompile Include="env_export.cpp" />
<ClCompile Include="main.cpp"/> <ClCompile Include="main.cpp" />
<ClCompile Include="script_export.cpp"/> <ClCompile Include="script_export.cpp" />
<ClCompile Include="shared_export.cpp"/> <ClCompile Include="shared_export.cpp" />
<ClCompile Include="virtools_compatible.cpp"/> <ClCompile Include="string_helper.cpp" />
<ClCompile Include="vt_menu.cpp"/> <ClCompile Include="virtools_compatible.cpp" />
<ClCompile Include="vt_player.cpp"/> <ClCompile Include="vt_menu.cpp" />
<ClCompile Include="vt_player.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="SuperScriptMaterializer.def"/> <None Include="SuperScriptMaterializer.def" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@ -42,6 +42,9 @@
<ClInclude Include="data_export.h"> <ClInclude Include="data_export.h">
<Filter>头文件</Filter> <Filter>头文件</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="string_helper.hpp">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="database.cpp"> <ClCompile Include="database.cpp">
@ -71,6 +74,9 @@
<ClCompile Include="data_export.cpp"> <ClCompile Include="data_export.cpp">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="string_helper.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="SuperScriptMaterializer.def"> <None Include="SuperScriptMaterializer.def">

View File

@ -4,6 +4,6 @@
#include "stdafx.h" #include "stdafx.h"
#include "database.h" #include "database.h"
void DigCKObjectData(CKObject* cko, scriptDatabase* db, db_shared_dictData* helper, EXPAND_CK_ID parents); void DigCKObjectData(CKObject* cko, DocumentDatabase* mDb, dbdoc_data* helper, EXPAND_CK_ID parents);
#endif #endif

File diff suppressed because it is too large Load Diff

View File

@ -6,9 +6,6 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include <set> #include <set>
#include "virtools_compatible.h"
#define STRINGCACHE_SIZE 25565
typedef long EXPAND_CK_ID; typedef long EXPAND_CK_ID;
enum bLinkInputOutputType { enum bLinkInputOutputType {
@ -25,9 +22,16 @@ enum pLinkInputOutputType {
#pragma region data struct define #pragma region data struct define
// =================== script db // =================== doc mDb
typedef struct { struct dbdoc_script {
EXPAND_CK_ID thisobj;
std::string host_name;
int index;
EXPAND_CK_ID behavior;
};
struct dbdoc_script_behavior {
EXPAND_CK_ID thisobj; EXPAND_CK_ID thisobj;
std::string name; std::string name;
CK_BEHAVIOR_TYPE type; CK_BEHAVIOR_TYPE type;
@ -39,59 +43,52 @@ typedef struct {
//pTarget, pIn, pOut, bIn, bOut //pTarget, pIn, pOut, bIn, bOut
std::string pin_count; std::string pin_count;
EXPAND_CK_ID parent; EXPAND_CK_ID parent;
}db_script_behavior; };
typedef struct { struct dbdoc_script_bIO {
EXPAND_CK_ID thisobj; EXPAND_CK_ID thisobj;
std::string host_name;
int index; int index;
EXPAND_CK_ID behavior; std::string name;
}db_script_script; EXPAND_CK_ID parent;
};
typedef dbdoc_script_bIO dbdoc_script_bIn;
typedef dbdoc_script_bIO dbdoc_script_bOut;
typedef struct { struct dbdoc_script_pTarget {
EXPAND_CK_ID thisobj; EXPAND_CK_ID thisobj;
std::string name; std::string name;
std::string type; std::string type;
std::string type_guid; std::string type_guid;
EXPAND_CK_ID belong_to; EXPAND_CK_ID parent;
EXPAND_CK_ID direct_source; EXPAND_CK_ID direct_source;
EXPAND_CK_ID shared_source; EXPAND_CK_ID shared_source;
}db_script_pTarget; };
typedef struct { struct dbdoc_script_pIn {
EXPAND_CK_ID thisobj; EXPAND_CK_ID thisobj;
int index; int index;
std::string name; std::string name;
std::string type; std::string type;
std::string type_guid; std::string type_guid;
EXPAND_CK_ID belong_to; EXPAND_CK_ID parent;
EXPAND_CK_ID direct_source; EXPAND_CK_ID direct_source;
EXPAND_CK_ID shared_source; EXPAND_CK_ID shared_source;
}db_script_pIn; };
typedef struct { struct dbdoc_script_pOut {
EXPAND_CK_ID thisobj; EXPAND_CK_ID thisobj;
int index; int index;
std::string name; std::string name;
std::string type; std::string type;
std::string type_guid; std::string type_guid;
EXPAND_CK_ID belong_to; EXPAND_CK_ID parent;
}db_script_pOut; };
typedef struct { struct dbdoc_script_bLink {
EXPAND_CK_ID thisobj;
int index;
std::string name;
EXPAND_CK_ID belong_to;
}db_shared_bIO;
typedef db_shared_bIO db_script_bIn;
typedef db_shared_bIO db_script_bOut;
typedef struct {
EXPAND_CK_ID input; EXPAND_CK_ID input;
EXPAND_CK_ID output; EXPAND_CK_ID output;
int delay; int delay;
EXPAND_CK_ID belong_to; EXPAND_CK_ID parent;
//additional field //additional field
EXPAND_CK_ID input_obj; EXPAND_CK_ID input_obj;
@ -100,35 +97,28 @@ typedef struct {
EXPAND_CK_ID output_obj; EXPAND_CK_ID output_obj;
bLinkInputOutputType output_type; bLinkInputOutputType output_type;
int output_index; int output_index;
}db_script_bLink; };
typedef struct { struct dbdoc_script_pLocal {
EXPAND_CK_ID thisobj; EXPAND_CK_ID thisobj;
std::string name; std::string name;
std::string type; std::string type;
std::string type_guid; std::string type_guid;
BOOL is_setting; BOOL is_setting;
EXPAND_CK_ID belong_to; EXPAND_CK_ID parent;
}db_script_pLocal; };
typedef struct { struct dbdoc_script_pAttr {
EXPAND_CK_ID thisobj; EXPAND_CK_ID thisobj;
std::string name; std::string name;
std::string type; std::string type;
std::string type_guid; std::string type_guid;
}db_script_pAttr; };
typedef struct { struct dbdoc_script_pLink {
std::string field;
std::string data;
EXPAND_CK_ID belong_to;
}db_shared_dictData;
typedef db_shared_dictData db_script_pData;
typedef struct {
EXPAND_CK_ID input; EXPAND_CK_ID input;
EXPAND_CK_ID output; EXPAND_CK_ID output;
EXPAND_CK_ID belong_to; EXPAND_CK_ID parent;
//additional field //additional field
EXPAND_CK_ID input_obj; EXPAND_CK_ID input_obj;
@ -139,64 +129,61 @@ typedef struct {
pLinkInputOutputType output_type; pLinkInputOutputType output_type;
BOOL output_is_bb; BOOL output_is_bb;
int output_index; int output_index;
}db_script_pLink; };
typedef struct { struct dbdoc_script_pOper {
EXPAND_CK_ID thisobj; EXPAND_CK_ID thisobj;
std::string op; std::string op;
std::string op_guid; std::string op_guid;
EXPAND_CK_ID belong_to; EXPAND_CK_ID parent;
}db_script_pOper; };
typedef struct { struct dbdoc_script_eLink {
EXPAND_CK_ID export_obj; EXPAND_CK_ID export_obj;
EXPAND_CK_ID internal_obj; EXPAND_CK_ID internal_obj;
BOOL is_in; BOOL is_in;
int index; int index;
EXPAND_CK_ID belong_to; EXPAND_CK_ID parent;
}db_script_eLink; };
struct dbdoc_msg {
CKMessageType index;
std::string name;
};
// =================== data db struct dbdoc_array {
typedef struct {
EXPAND_CK_ID thisobj; EXPAND_CK_ID thisobj;
std::string name; std::string name;
CK_CLASSID type_classid;
std::string type_guid;
std::string type_name;
int rows; int rows;
int columns; int columns;
}db_data_obj; };
typedef struct { struct dbdoc_array_header {
int index; int index;
std::string name; std::string name;
CK_ARRAYTYPE type; CK_ARRAYTYPE type;
std::string param_type; std::string param_type;
std::string param_type_guid; std::string param_type_guid;
EXPAND_CK_ID belong_to; EXPAND_CK_ID parent;
}db_data_objHeader; };
typedef struct { struct dbdoc_array_cell {
int row; int row;
int column; int column;
std::string showcase; std::string showcase;
EXPAND_CK_ID inner_object;
EXPAND_CK_ID inner_param; EXPAND_CK_ID inner_param;
EXPAND_CK_ID belong_to; EXPAND_CK_ID parent;
}db_data_objBody; };
typedef db_shared_dictData db_data_objParam; struct dbdoc_data {
std::string field;
std::string data;
EXPAND_CK_ID parent;
};
typedef struct { // =================== env mDb
CKMessageType index;
std::string name;
}db_data_msg;
// =================== env db struct dbenv_op {
typedef struct {
CK_PARAMETEROPERATION funcPtr; CK_PARAMETEROPERATION funcPtr;
std::string in1_guid; std::string in1_guid;
std::string in2_guid; std::string in2_guid;
@ -204,9 +191,9 @@ typedef struct {
std::string op_guid; std::string op_guid;
std::string op_name; std::string op_name;
CKOperationType op_code; CKOperationType op_code;
}db_env_op; };
typedef struct { struct dbenv_param {
CKParameterType index; CKParameterType index;
std::string guid; std::string guid;
std::string derived_from; std::string derived_from;
@ -225,9 +212,9 @@ typedef struct {
CKDWORD dw_flags; CKDWORD dw_flags;
CKDWORD cid; CKDWORD cid;
std::string saver_manager; std::string saver_manager;
}db_env_param; };
typedef struct { struct dbenv_attr {
CKAttributeType index; CKAttributeType index;
std::string name; std::string name;
CKAttributeCategory category_index; CKAttributeCategory category_index;
@ -236,15 +223,14 @@ typedef struct {
CKParameterType param_index; CKParameterType param_index;
CK_CLASSID compatible_classid; CK_CLASSID compatible_classid;
std::string default_value; std::string default_value;
}db_env_attr; };
typedef struct { struct dbenv_plugin {
int dll_index; int dll_index;
std::string dll_name; std::string dll_name;
int plugin_index; int plugin_index;
std::string category; std::string category;
CKBOOL active; CKBOOL active;
CKBOOL needed_by_file;
std::string guid; std::string guid;
std::string desc; std::string desc;
std::string author; std::string author;
@ -252,136 +238,124 @@ typedef struct {
DWORD version; DWORD version;
CK_INITINSTANCEFCT func_init; CK_INITINSTANCEFCT func_init;
CK_EXITINSTANCEFCT func_exit; CK_EXITINSTANCEFCT func_exit;
}db_env_plugin; };
typedef struct { struct dbenv_variable {
std::string name; std::string name;
std::string desciption; std::string desciption;
XWORD flags; XWORD flags;
UNIVERSAL_VAR_TYPE type; UNIVERSAL_VAR_TYPE type;
std::string representation; std::string representation;
std::string data; std::string data;
}db_env_variable; };
#pragma endregion #pragma endregion
class dbScriptDataStructHelper { class DbDataStructHelper_Doc {
public:
void init(CKParameterManager* paramManager);
void dispose();
char* _stringCache;
CKParameterManager* _parameterManager;
db_script_behavior* _db_behavior;
db_script_script* _db_script;
db_script_pTarget* _db_pTarget;
db_script_pIn* _db_pIn;
db_script_pOut* _db_pOut;
db_script_bIn* _db_bIn;
db_script_bOut* _db_bOut;
db_script_bLink* _db_bLink;
db_script_pLocal* _db_pLocal;
db_script_pAttr* _db_pAttr;
db_script_pLink* _db_pLink;
db_script_pData* _db_pData;
db_script_pOper* _db_pOper;
db_script_eLink* _db_eLink;
};
class dbDataDataStructHelper {
public: public:
void init(CKParameterManager* paramManager); DbDataStructHelper_Doc(CKParameterManager* paramManager);
void dispose(); ~DbDataStructHelper_Doc();
char* _stringCache; CKParameterManager* param_manager;
CKParameterManager* _parameterManager;
db_data_obj* _db_obj; dbdoc_script script;
db_data_objHeader* _db_objHeader; dbdoc_script_behavior script_behavior;
db_data_objBody* _db_objBody; dbdoc_script_bIn script_bIn;
db_data_objParam* _db_objParam; dbdoc_script_bOut script_bOut;
db_data_msg* _db_msg; dbdoc_script_pIn script_pIn;
dbdoc_script_pOut script_pOut;
dbdoc_script_bLink script_bLink;
dbdoc_script_pLocal script_pLocal;
dbdoc_script_pAttr script_pAttr;
dbdoc_script_pLink script_pLink;
dbdoc_script_pOper script_pOper;
dbdoc_script_eLink script_eLink;
dbdoc_script_pTarget script_pTarget;
dbdoc_msg msg;
dbdoc_array _array;
dbdoc_array_header array_header;
dbdoc_array_cell array_cell;
dbdoc_data data;
}; };
class dbEnvDataStructHelper { class DbDataStructHelper_Env {
public:
void init();
void dispose();
char* _stringCache;
db_env_op* _db_op;
db_env_param* _db_param;
//db_data_msg* _db_envMsg;
db_env_attr* _db_attr;
db_env_plugin* _db_plugin;
db_env_variable* _db_variable;
};
class database {
public:
void open(const char* file);
void close();
protected:
sqlite3_stmt* safeStmt(size_t index);
virtual BOOL init() { return TRUE; }
virtual BOOL finalJob() { return TRUE; }
sqlite3* db;
std::vector<sqlite3_stmt*>* stmtCache;
};
class scriptDatabase : public database {
public:
void write_behavior(db_script_behavior* data);
void write_script(db_script_script* data);
void write_pTarget(db_script_pTarget* data);
void write_pIn(db_script_pIn* data);
void write_pOut(db_script_pOut* data);
void write_bIn(db_script_bIn* data);
void write_bOut(db_script_bOut* data);
void write_bLink(db_script_bLink* data);
void write_pLocal(db_script_pLocal* data);
void write_pLink(db_script_pLink* data);
void write_pData(db_script_pData* data);
void write_pOper(db_script_pOper* data);
void write_eLink(db_script_eLink* data);
BOOL write_pAttr(db_script_pAttr* data);
protected:
BOOL init();
BOOL finalJob();
std::set<EXPAND_CK_ID>* pAttrUniqueEnsurance;
};
class dataDatabase : public database {
public: public:
void write_obj(db_data_obj* data); DbDataStructHelper_Env();
void write_objHeader(db_data_objHeader* data); ~DbDataStructHelper_Env();
void write_objBody(db_data_objBody* data);
void write_objParam(db_data_objParam* data); dbenv_op op;
void write_msg(db_data_msg* data); dbenv_param param;
dbenv_attr attr;
dbenv_plugin plugin;
dbenv_variable variable;
};
class SSMaterializerDatabase {
public:
SSMaterializerDatabase(const char* file);
virtual ~SSMaterializerDatabase();
protected: protected:
BOOL init(); sqlite3_stmt* CreateStmt(const char* stmt);
BOOL finalJob(); virtual BOOL Init() = 0;
virtual BOOL Finalize() = 0;
sqlite3* mDb;
std::vector<sqlite3_stmt*> mStmtCache;
}; };
class envDatabase : public database { class DocumentDatabase : public SSMaterializerDatabase {
public: public:
void write_op(db_env_op* data); DocumentDatabase(const char* file);
void write_param(db_env_param* data); virtual ~DocumentDatabase();
//void write_msg(db_data_msg* data);
void write_attr(db_env_attr* data);
void write_plugin(db_env_plugin* data);
void write_variable(db_env_variable* data);
protected: void write_script(dbdoc_script& data);
BOOL init(); void write_script_behavior(dbdoc_script_behavior& data);
BOOL finalJob(); void write_script_pTarget(dbdoc_script_pTarget& data);
void write_script_pIn(dbdoc_script_pIn& data);
void write_script_pOut(dbdoc_script_pOut& data);
void write_script_bIn(dbdoc_script_bIn& data);
void write_script_bOut(dbdoc_script_bOut& data);
void write_script_bLink(dbdoc_script_bLink& data);
void write_script_pLocal(dbdoc_script_pLocal& data);
void write_script_pLink(dbdoc_script_pLink& data);
void write_script_pOper(dbdoc_script_pOper& data);
void write_script_eLink(dbdoc_script_eLink& data);
BOOL write_script_pAttr(dbdoc_script_pAttr& data);
void write_msg(dbdoc_msg& data);
void write_array(dbdoc_array& data);
void write_array_header(dbdoc_array_header& data);
void write_array_cell(dbdoc_array_cell& data);
void write_data(dbdoc_data& data);
protected:
BOOL Init() override;
BOOL Finalize() override;
std::set<EXPAND_CK_ID> m_pAttrUniqueEnsurance;
};
class EnvironmentDatabase : public SSMaterializerDatabase {
public:
EnvironmentDatabase(const char* file);
virtual ~EnvironmentDatabase();
void write_op(dbenv_op& data);
void write_param(dbenv_param& data);
void write_attr(dbenv_attr& data);
void write_plugin(dbenv_plugin& data);
void write_variable(dbenv_variable& data);
protected:
BOOL Init() override;
BOOL Finalize() override;
}; };
#endif #endif

View File

@ -5,7 +5,7 @@
#define copyGuid(guid,str) sprintf(helper->_stringCache,"%d,%d",guid.d1,guid.d2);str=helper->_stringCache; #define copyGuid(guid,str) sprintf(helper->_stringCache,"%d,%d",guid.d1,guid.d2);str=helper->_stringCache;
#define safeStringCopy(storage,str) storage=(str)?(str):""; #define safeStringCopy(storage,str) storage=(str)?(str):"";
void IterateParameterOperation(CKParameterManager* parameterManager, envDatabase* db, dbEnvDataStructHelper* helper) { void IterateParameterOperation(CKParameterManager* parameterManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
int count = parameterManager->GetParameterOperationCount(); int count = parameterManager->GetParameterOperationCount();
CKOperationDesc* opList = NULL; CKOperationDesc* opList = NULL;
int listCount = 0, cacheListCount = 0; int listCount = 0, cacheListCount = 0;
@ -32,14 +32,14 @@ void IterateParameterOperation(CKParameterManager* parameterManager, envDatabase
copyGuid(opList[j].ResGuid, helper->_db_op->out_guid); copyGuid(opList[j].ResGuid, helper->_db_op->out_guid);
helper->_db_op->funcPtr = opList[j].Fct; helper->_db_op->funcPtr = opList[j].Fct;
db->write_op(helper->_db_op); mDb->write_op(helper->_db_op);
} }
} }
if (opList != NULL) free(opList); if (opList != NULL) free(opList);
} }
void IterateParameter(CKParameterManager* parameterManager, envDatabase* db, dbEnvDataStructHelper* helper) { void IterateParameter(CKParameterManager* parameterManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
int count = parameterManager->GetParameterTypesCount(); int count = parameterManager->GetParameterTypesCount();
CKParameterTypeDesc* desc = NULL; CKParameterTypeDesc* desc = NULL;
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
@ -70,21 +70,21 @@ void IterateParameter(CKParameterManager* parameterManager, envDatabase* db, dbE
helper->_db_param->cid = desc->Cid; helper->_db_param->cid = desc->Cid;
copyGuid(desc->Saver_Manager, helper->_db_param->saver_manager); copyGuid(desc->Saver_Manager, helper->_db_param->saver_manager);
db->write_param(helper->_db_param); mDb->write_param(helper->_db_param);
} }
} }
void IterateMessage(CKMessageManager* msgManager, envDatabase* db, dbEnvDataStructHelper* helper) { void IterateMessage(CKMessageManager* msgManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
int count = msgManager->GetMessageTypeCount(); int count = msgManager->GetMessageTypeCount();
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
helper->_db_envMsg->index = i; helper->_db_envMsg->index = i;
helper->_db_envMsg->name = msgManager->GetMessageTypeName(i); helper->_db_envMsg->name = msgManager->GetMessageTypeName(i);
db->write_msg(helper->_db_envMsg); mDb->write_msg(helper->_db_envMsg);
} }
} }
void IterateAttribute(CKAttributeManager* attrManager, envDatabase* db, dbEnvDataStructHelper* helper) { void IterateAttribute(CKAttributeManager* attrManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
int count = attrManager->GetAttributeCount(); int count = attrManager->GetAttributeCount();
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
helper->_db_attr->index = i; helper->_db_attr->index = i;
@ -96,11 +96,11 @@ void IterateAttribute(CKAttributeManager* attrManager, envDatabase* db, dbEnvDat
helper->_db_attr->compatible_classid = attrManager->GetAttributeCompatibleClassId(i); helper->_db_attr->compatible_classid = attrManager->GetAttributeCompatibleClassId(i);
helper->_db_attr->default_value = attrManager->GetAttributeDefaultValue(i) != NULL ? attrManager->GetAttributeDefaultValue(i) : ""; helper->_db_attr->default_value = attrManager->GetAttributeDefaultValue(i) != NULL ? attrManager->GetAttributeDefaultValue(i) : "";
db->write_attr(helper->_db_attr); mDb->write_attr(helper->_db_attr);
} }
} }
void IteratePlugin(CKPluginManager* plgManager, envDatabase* db, dbEnvDataStructHelper* helper) { void IteratePlugin(CKPluginManager* plgManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
for (int i = 0; i <= 7; i++) { for (int i = 0; i <= 7; i++) {
int catCount = plgManager->GetPluginCount(i); int catCount = plgManager->GetPluginCount(i);
helper->_db_plugin->category = plgManager->GetCategoryName(i); helper->_db_plugin->category = plgManager->GetCategoryName(i);
@ -121,13 +121,13 @@ void IteratePlugin(CKPluginManager* plgManager, envDatabase* db, dbEnvDataStruct
helper->_db_plugin->func_init = plgInfo->m_InitInstanceFct; helper->_db_plugin->func_init = plgInfo->m_InitInstanceFct;
helper->_db_plugin->func_exit = plgInfo->m_ExitInstanceFct; helper->_db_plugin->func_exit = plgInfo->m_ExitInstanceFct;
db->write_plugin(helper->_db_plugin); mDb->write_plugin(helper->_db_plugin);
} }
} }
} }
#if !defined(VIRTOOLS_21) #if !defined(VIRTOOLS_21)
void IterateVariable(CKVariableManager* varManager, envDatabase* db, dbEnvDataStructHelper* helper) { void IterateVariable(CKVariableManager* varManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper) {
CKVariableManager::Iterator it = varManager->GetVariableIterator(); CKVariableManager::Iterator it = varManager->GetVariableIterator();
CKVariableManager::Variable* varobj = NULL; CKVariableManager::Variable* varobj = NULL;
XString dataCopyCache; XString dataCopyCache;
@ -141,7 +141,7 @@ void IterateVariable(CKVariableManager* varManager, envDatabase* db, dbEnvDataSt
varobj->GetStringValue(dataCopyCache); varobj->GetStringValue(dataCopyCache);
helper->_db_variable->data = dataCopyCache.CStr(); helper->_db_variable->data = dataCopyCache.CStr();
db->write_variable(helper->_db_variable); mDb->write_variable(helper->_db_variable);
} }
} }
#endif #endif

View File

@ -4,11 +4,11 @@
#include "stdafx.h" #include "stdafx.h"
#include "database.h" #include "database.h"
void IterateParameterOperation(CKParameterManager* parameterManager, envDatabase* db, dbEnvDataStructHelper* helper); void IterateParameterOperation(CKParameterManager* parameterManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
void IterateParameter(CKParameterManager* parameterManager, envDatabase* db, dbEnvDataStructHelper* helper); void IterateParameter(CKParameterManager* parameterManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
void IterateMessage(CKMessageManager* msgManager, envDatabase* db, dbEnvDataStructHelper* helper); void IterateMessage(CKMessageManager* msgManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
void IterateAttribute(CKAttributeManager* attrManager, envDatabase* db, dbEnvDataStructHelper* helper); void IterateAttribute(CKAttributeManager* attrManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
void IteratePlugin(CKPluginManager* plgManager, envDatabase* db, dbEnvDataStructHelper* helper); void IteratePlugin(CKPluginManager* plgManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
void IterateVariable(CKVariableManager* varManager, envDatabase* db, dbEnvDataStructHelper* helper); void IterateVariable(CKVariableManager* varManager, EnvironmentDatabase* mDb, dbEnvDataStructHelper* helper);
#endif #endif

View File

@ -11,7 +11,7 @@
#pragma region inline func #pragma region inline func
void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB, BOOL isTarget) { void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB, BOOL isTarget) {
//WARNING: i only choose one between [DirectSource] and [SharedSource] bucause i don't find any pIn both have these two field //WARNING: i only choose one between [DirectSource] and [SharedSource] bucause i don't find any pIn both have these two field
CKParameter* directSource = NULL; CKParameter* directSource = NULL;
CKObject* ds_Owner = NULL; CKObject* ds_Owner = NULL;
@ -48,7 +48,7 @@ void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase*
helper->_db_pLink->input_type = pLinkInputOutputType_PATTR; helper->_db_pLink->input_type = pLinkInputOutputType_PATTR;
helper->_db_pLink->input_is_bb = FALSE; helper->_db_pLink->input_is_bb = FALSE;
helper->_db_pLink->input_index = -1; helper->_db_pLink->input_index = -1;
proc_pAttr(ctx, db, helper, directSource); proc_pAttr(ctx, mDb, helper, directSource);
break; break;
default: default:
//normal object, see as virtual bb pLocal shortcut //normal object, see as virtual bb pLocal shortcut
@ -56,7 +56,7 @@ void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase*
helper->_db_pLink->input_type = pLinkInputOutputType_PATTR; helper->_db_pLink->input_type = pLinkInputOutputType_PATTR;
helper->_db_pLink->input_is_bb = FALSE; helper->_db_pLink->input_is_bb = FALSE;
helper->_db_pLink->input_index = -1; helper->_db_pLink->input_index = -1;
proc_pAttr(ctx, db, helper, directSource); proc_pAttr(ctx, mDb, helper, directSource);
break; break;
} }
} }
@ -91,11 +91,11 @@ void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase*
helper->_db_pLink->output_index = index; helper->_db_pLink->output_index = index;
helper->_db_pLink->belong_to = grandparents; helper->_db_pLink->belong_to = grandparents;
db->write_pLink(helper->_db_pLink); mDb->write_script_pLink(helper->_db_pLink);
} }
} }
void proc_pTarget(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents) { void proc_pTarget(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents) {
helper->_db_pTarget->thisobj = cache->GetID(); helper->_db_pTarget->thisobj = cache->GetID();
helper->_db_pTarget->name = cache->GetName(); helper->_db_pTarget->name = cache->GetName();
helper->_db_pTarget->type = helper->_parameterManager->ParameterTypeToName(cache->GetType()); helper->_db_pTarget->type = helper->_parameterManager->ParameterTypeToName(cache->GetType());
@ -104,9 +104,9 @@ void proc_pTarget(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbSc
helper->_db_pTarget->direct_source = cache->GetDirectSource() ? cache->GetDirectSource()->GetID() : -1; helper->_db_pTarget->direct_source = cache->GetDirectSource() ? cache->GetDirectSource()->GetID() : -1;
helper->_db_pTarget->shared_source = cache->GetSharedSource() ? cache->GetSharedSource()->GetID() : -1; helper->_db_pTarget->shared_source = cache->GetSharedSource() ? cache->GetSharedSource()->GetID() : -1;
db->write_pTarget(helper->_db_pTarget); mDb->write_script_pTarget(helper->_db_pTarget);
//judge whether expoer parameter and write database //judge whether expoer parameter and write SSMaterializerDatabase
if (((CKBehavior*)ctx->GetObject(grandparents))->GetInputParameterPosition(cache) != -1) { if (((CKBehavior*)ctx->GetObject(grandparents))->GetInputParameterPosition(cache) != -1) {
helper->_db_eLink->export_obj = cache->GetID(); helper->_db_eLink->export_obj = cache->GetID();
helper->_db_eLink->internal_obj = parents; helper->_db_eLink->internal_obj = parents;
@ -114,15 +114,15 @@ void proc_pTarget(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbSc
helper->_db_eLink->index = -1; helper->_db_eLink->index = -1;
helper->_db_eLink->belong_to = grandparents; helper->_db_eLink->belong_to = grandparents;
db->write_eLink(helper->_db_eLink); mDb->write_script_eLink(helper->_db_eLink);
return; return;
} }
//=========try generate pLink //=========try generate pLink
generate_pLink_in_pIn(ctx, cache, db, helper, parents, grandparents, -1, TRUE, TRUE); generate_pLink_in_pIn(ctx, cache, mDb, helper, parents, grandparents, -1, TRUE, TRUE);
} }
void proc_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB) { void proc_pIn(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB) {
helper->_db_pIn->thisobj = cache->GetID(); helper->_db_pIn->thisobj = cache->GetID();
helper->_db_pIn->index = index; helper->_db_pIn->index = index;
helper->_db_pIn->name = cache->GetName(); helper->_db_pIn->name = cache->GetName();
@ -134,9 +134,9 @@ void proc_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScript
helper->_db_pIn->direct_source = cache->GetDirectSource() ? cache->GetDirectSource()->GetID() : -1; helper->_db_pIn->direct_source = cache->GetDirectSource() ? cache->GetDirectSource()->GetID() : -1;
helper->_db_pIn->shared_source = cache->GetSharedSource() ? cache->GetSharedSource()->GetID() : -1; helper->_db_pIn->shared_source = cache->GetSharedSource() ? cache->GetSharedSource()->GetID() : -1;
db->write_pIn(helper->_db_pIn); mDb->write_script_pIn(helper->_db_pIn);
//judge whether expoer parameter and write database //judge whether expoer parameter and write SSMaterializerDatabase
if (((CKBehavior*)ctx->GetObject(grandparents))->GetInputParameterPosition(cache) != -1) { if (((CKBehavior*)ctx->GetObject(grandparents))->GetInputParameterPosition(cache) != -1) {
helper->_db_eLink->export_obj = cache->GetID(); helper->_db_eLink->export_obj = cache->GetID();
helper->_db_eLink->internal_obj = parents; helper->_db_eLink->internal_obj = parents;
@ -144,16 +144,16 @@ void proc_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScript
helper->_db_eLink->index = index; helper->_db_eLink->index = index;
helper->_db_eLink->belong_to = grandparents; helper->_db_eLink->belong_to = grandparents;
db->write_eLink(helper->_db_eLink); mDb->write_script_eLink(helper->_db_eLink);
return; return;
} }
//=========try generate pLink //=========try generate pLink
generate_pLink_in_pIn(ctx, cache, db, helper, parents, grandparents, index, executedFromBB, FALSE); generate_pLink_in_pIn(ctx, cache, mDb, helper, parents, grandparents, index, executedFromBB, FALSE);
} }
void proc_pOut(CKContext* ctx, CKParameterOut* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB) { void proc_pOut(CKContext* ctx, CKParameterOut* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB) {
helper->_db_pOut->thisobj = cache->GetID(); helper->_db_pOut->thisobj = cache->GetID();
helper->_db_pOut->index = index; helper->_db_pOut->index = index;
helper->_db_pOut->name = cache->GetName(); helper->_db_pOut->name = cache->GetName();
@ -163,9 +163,9 @@ void proc_pOut(CKContext* ctx, CKParameterOut* cache, scriptDatabase* db, dbScri
copyGuid(cache->GetGUID(), helper->_db_pOut->type_guid); copyGuid(cache->GetGUID(), helper->_db_pOut->type_guid);
helper->_db_pOut->belong_to = parents; helper->_db_pOut->belong_to = parents;
db->write_pOut(helper->_db_pOut); mDb->write_script_pOut(helper->_db_pOut);
//judge whether expoer parameter and write database //judge whether expoer parameter and write SSMaterializerDatabase
if (((CKBehavior*)ctx->GetObject(grandparents))->GetOutputParameterPosition(cache) != -1) { if (((CKBehavior*)ctx->GetObject(grandparents))->GetOutputParameterPosition(cache) != -1) {
helper->_db_eLink->export_obj = cache->GetID(); helper->_db_eLink->export_obj = cache->GetID();
helper->_db_eLink->internal_obj = parents; helper->_db_eLink->internal_obj = parents;
@ -173,7 +173,7 @@ void proc_pOut(CKContext* ctx, CKParameterOut* cache, scriptDatabase* db, dbScri
helper->_db_eLink->index = index; helper->_db_eLink->index = index;
helper->_db_eLink->belong_to = grandparents; helper->_db_eLink->belong_to = grandparents;
db->write_eLink(helper->_db_eLink); mDb->write_script_eLink(helper->_db_eLink);
return; return;
} }
@ -210,29 +210,29 @@ void proc_pOut(CKContext* ctx, CKParameterOut* cache, scriptDatabase* db, dbScri
helper->_db_pLink->belong_to = grandparents; helper->_db_pLink->belong_to = grandparents;
db->write_pLink(helper->_db_pLink); mDb->write_script_pLink(helper->_db_pLink);
} }
} }
void proc_bIn(CKBehaviorIO* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, int index) { void proc_bIn(CKBehaviorIO* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, int index) {
helper->_db_bIn->thisobj = cache->GetID(); helper->_db_bIn->thisobj = cache->GetID();
helper->_db_bIn->index = index; helper->_db_bIn->index = index;
helper->_db_bIn->name = cache->GetName(); helper->_db_bIn->name = cache->GetName();
helper->_db_bIn->belong_to = parents; helper->_db_bIn->belong_to = parents;
db->write_bIn(helper->_db_bIn); mDb->write_script_bIn(helper->_db_bIn);
} }
void proc_bOut(CKBehaviorIO* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, int index) { void proc_bOut(CKBehaviorIO* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, int index) {
helper->_db_bOut->thisobj = cache->GetID(); helper->_db_bOut->thisobj = cache->GetID();
helper->_db_bOut->index = index; helper->_db_bOut->index = index;
helper->_db_bOut->name = cache->GetName(); helper->_db_bOut->name = cache->GetName();
helper->_db_bOut->belong_to = parents; helper->_db_bOut->belong_to = parents;
db->write_bOut(helper->_db_bOut); mDb->write_script_bOut(helper->_db_bOut);
} }
void proc_bLink(CKBehaviorLink* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) { void proc_bLink(CKBehaviorLink* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
CKBehaviorIO* io = cache->GetInBehaviorIO(); CKBehaviorIO* io = cache->GetInBehaviorIO();
CKBehavior* beh = io->GetOwner(); CKBehavior* beh = io->GetOwner();
helper->_db_bLink->input = io->GetID(); helper->_db_bLink->input = io->GetID();
@ -249,10 +249,10 @@ void proc_bLink(CKBehaviorLink* cache, scriptDatabase* db, dbScriptDataStructHel
helper->_db_bLink->delay = cache->GetActivationDelay(); helper->_db_bLink->delay = cache->GetActivationDelay();
helper->_db_bLink->belong_to = parents; helper->_db_bLink->belong_to = parents;
db->write_bLink(helper->_db_bLink); mDb->write_script_bLink(helper->_db_bLink);
} }
void proc_pLocal(CKParameterLocal* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, BOOL is_setting) { void proc_pLocal(CKParameterLocal* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, BOOL is_setting) {
helper->_db_pLocal->thisobj = cache->GetID(); helper->_db_pLocal->thisobj = cache->GetID();
helper->_db_pLocal->name = cache->GetName() ? cache->GetName() : ""; helper->_db_pLocal->name = cache->GetName() ? cache->GetName() : "";
CKParameterType vaildTypeChecker = cache->GetType(); CKParameterType vaildTypeChecker = cache->GetType();
@ -262,27 +262,27 @@ void proc_pLocal(CKParameterLocal* cache, scriptDatabase* db, dbScriptDataStruct
helper->_db_pLocal->is_setting = is_setting; helper->_db_pLocal->is_setting = is_setting;
helper->_db_pLocal->belong_to = parents; helper->_db_pLocal->belong_to = parents;
db->write_pLocal(helper->_db_pLocal); mDb->write_script_pLocal(helper->_db_pLocal);
//export plocal metadata //export plocal metadata
DigParameterData(cache, db, helper, cache->GetID()); DigParameterData(cache, mDb, helper, cache->GetID());
} }
void proc_pOper(CKContext* ctx, CKParameterOperation* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) { void proc_pOper(CKContext* ctx, CKParameterOperation* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
helper->_db_pOper->thisobj = cache->GetID(); helper->_db_pOper->thisobj = cache->GetID();
helper->_db_pOper->op = helper->_parameterManager->OperationGuidToName(cache->GetOperationGuid()); helper->_db_pOper->op = helper->_parameterManager->OperationGuidToName(cache->GetOperationGuid());
copyGuid(cache->GetOperationGuid(), helper->_db_pOper->op_guid); copyGuid(cache->GetOperationGuid(), helper->_db_pOper->op_guid);
helper->_db_pOper->belong_to = parents; helper->_db_pOper->belong_to = parents;
db->write_pOper(helper->_db_pOper); mDb->write_script_pOper(helper->_db_pOper);
//export 2 input param and 1 output param //export 2 input param and 1 output param
proc_pIn(ctx, cache->GetInParameter1(), db, helper, cache->GetID(), parents, 0, FALSE); proc_pIn(ctx, cache->GetInParameter1(), mDb, helper, cache->GetID(), parents, 0, FALSE);
proc_pIn(ctx, cache->GetInParameter2(), db, helper, cache->GetID(), parents, 1, FALSE); proc_pIn(ctx, cache->GetInParameter2(), mDb, helper, cache->GetID(), parents, 1, FALSE);
proc_pOut(ctx, cache->GetOutParameter(), db, helper, cache->GetID(), parents, 0, FALSE); proc_pOut(ctx, cache->GetOutParameter(), mDb, helper, cache->GetID(), parents, 0, FALSE);
} }
void proc_pAttr(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper* helper, CKParameter* cache) { void proc_pAttr(CKContext* ctx, DocumentDatabase* mDb, dbDocDataStructHelper* helper, CKParameter* cache) {
//write self first to detect conflict //write self first to detect conflict
helper->_db_pAttr->thisobj = cache->GetID(); helper->_db_pAttr->thisobj = cache->GetID();
safeStringCopy(helper->_db_pAttr->name, cache->GetName()); safeStringCopy(helper->_db_pAttr->name, cache->GetName());
@ -291,32 +291,32 @@ void proc_pAttr(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper* he
else helper->_db_pAttr->type = "!!UNKNOW TYPE!!"; //unknow type else helper->_db_pAttr->type = "!!UNKNOW TYPE!!"; //unknow type
copyGuid(cache->GetGUID(), helper->_db_pAttr->type_guid); copyGuid(cache->GetGUID(), helper->_db_pAttr->type_guid);
if (!db->write_pAttr(helper->_db_pAttr)) if (!mDb->write_script_pAttr(helper->_db_pAttr))
return; return;
//not duplicated, continue write property //not duplicated, continue write property
CKObject* host = cache->GetOwner(); CKObject* host = cache->GetOwner();
helper_pDataExport("attr.host_id", (long)host->GetID(), db, helper, cache->GetID()); helper_pDataExport("attr.host_id", (long)host->GetID(), mDb, helper, cache->GetID());
helper_pDataExport("attr.host_name", host->GetName(), db, helper, cache->GetID()); helper_pDataExport("attr.host_name", host->GetName(), mDb, helper, cache->GetID());
} }
//============================helper for pLocal data export //============================helper for pLocal data export
void helper_pDataExport(const char* field, const char* data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) { void helper_pDataExport(const char* field, const char* data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
helper->_db_pData->field = field; helper->_db_pData->field = field;
helper->_db_pData->data = data; helper->_db_pData->data = data;
helper->_db_pData->belong_to = parents; helper->_db_pData->belong_to = parents;
db->write_pData(helper->_db_pData); mDb->write_pData(helper->_db_pData);
} }
void helper_pDataExport(const char* field, float data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) { void helper_pDataExport(const char* field, float data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
char str[32]; char str[32];
sprintf(str, "%f", data); sprintf(str, "%f", data);
helper_pDataExport(field, str, db, helper, parents); helper_pDataExport(field, str, mDb, helper, parents);
} }
void helper_pDataExport(const char* field, long data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) { void helper_pDataExport(const char* field, long data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
char str[32]; char str[32];
ltoa(data, str, 10); ltoa(data, str, 10);
helper_pDataExport(field, str, db, helper, parents); helper_pDataExport(field, str, mDb, helper, parents);
} }
@ -325,7 +325,7 @@ void helper_pDataExport(const char* field, long data, scriptDatabase* db, dbScri
#pragma region normal func #pragma region normal func
void IterateScript(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper* helper) { void IterateScript(CKContext* ctx, DocumentDatabase* mDb, dbDocDataStructHelper* helper) {
CKBeObject* beobj = NULL; CKBeObject* beobj = NULL;
CKBehavior* beh = NULL; CKBehavior* beh = NULL;
XObjectPointerArray objArray = ctx->GetObjectListByType(CKCID_BEOBJECT, TRUE); XObjectPointerArray objArray = ctx->GetObjectListByType(CKCID_BEOBJECT, TRUE);
@ -342,15 +342,15 @@ void IterateScript(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper*
helper->_db_script->host_name = beobj->GetName(); helper->_db_script->host_name = beobj->GetName();
helper->_db_script->index = j; helper->_db_script->index = j;
helper->_db_script->behavior = beh->GetID(); helper->_db_script->behavior = beh->GetID();
db->write_script(helper->_db_script); mDb->write_script(helper->_db_script);
//iterate script //iterate script
IterateBehavior(ctx, beh, db, helper, -1); IterateBehavior(ctx, beh, mDb, helper, -1);
} }
} }
} }
void IterateBehavior(CKContext* ctx, CKBehavior* bhv, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) { void IterateBehavior(CKContext* ctx, CKBehavior* bhv, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
//write self data //write self data
helper->_db_behavior->thisobj = bhv->GetID(); helper->_db_behavior->thisobj = bhv->GetID();
helper->_db_behavior->name = bhv->GetName(); helper->_db_behavior->name = bhv->GetName();
@ -368,42 +368,42 @@ void IterateBehavior(CKContext* ctx, CKBehavior* bhv, scriptDatabase* db, dbScri
bhv->GetInputCount(), bhv->GetInputCount(),
bhv->GetOutputCount()); bhv->GetOutputCount());
helper->_db_behavior->pin_count = helper->_stringCache; helper->_db_behavior->pin_count = helper->_stringCache;
db->write_behavior(helper->_db_behavior); mDb->write_script_behavior(helper->_db_behavior);
//write target //write target
if (bhv->IsUsingTarget()) if (bhv->IsUsingTarget())
proc_pTarget(ctx, bhv->GetTargetParameter(), db, helper, bhv->GetID(), parents); proc_pTarget(ctx, bhv->GetTargetParameter(), mDb, helper, bhv->GetID(), parents);
int count = 0, i = 0; int count = 0, i = 0;
//pIn //pIn
for (i = 0, count = bhv->GetInputParameterCount(); i < count; i++) for (i = 0, count = bhv->GetInputParameterCount(); i < count; i++)
proc_pIn(ctx, bhv->GetInputParameter(i), db, helper, bhv->GetID(), parents, i, TRUE); proc_pIn(ctx, bhv->GetInputParameter(i), mDb, helper, bhv->GetID(), parents, i, TRUE);
//pOut //pOut
for (i = 0, count = bhv->GetOutputParameterCount(); i < count; i++) for (i = 0, count = bhv->GetOutputParameterCount(); i < count; i++)
proc_pOut(ctx, bhv->GetOutputParameter(i), db, helper, bhv->GetID(), parents, i, TRUE); proc_pOut(ctx, bhv->GetOutputParameter(i), mDb, helper, bhv->GetID(), parents, i, TRUE);
//bIn //bIn
for (i = 0, count = bhv->GetInputCount(); i < count; i++) for (i = 0, count = bhv->GetInputCount(); i < count; i++)
proc_bIn(bhv->GetInput(i), db, helper, bhv->GetID(), i); proc_bIn(bhv->GetInput(i), mDb, helper, bhv->GetID(), i);
//bOut //bOut
for (i = 0, count = bhv->GetOutputCount(); i < count; i++) for (i = 0, count = bhv->GetOutputCount(); i < count; i++)
proc_bOut(bhv->GetOutput(i), db, helper, bhv->GetID(), i); proc_bOut(bhv->GetOutput(i), mDb, helper, bhv->GetID(), i);
//bLink //bLink
for (i = 0, count = bhv->GetSubBehaviorLinkCount(); i < count; i++) for (i = 0, count = bhv->GetSubBehaviorLinkCount(); i < count; i++)
proc_bLink(bhv->GetSubBehaviorLink(i), db, helper, bhv->GetID()); proc_bLink(bhv->GetSubBehaviorLink(i), mDb, helper, bhv->GetID());
//pLocal //pLocal
for (i = 0, count = bhv->GetLocalParameterCount(); i < count; i++) for (i = 0, count = bhv->GetLocalParameterCount(); i < count; i++)
proc_pLocal(bhv->GetLocalParameter(i), db, helper, bhv->GetID(), proc_pLocal(bhv->GetLocalParameter(i), mDb, helper, bhv->GetID(),
bhv->IsLocalParameterSetting(i)); bhv->IsLocalParameterSetting(i));
//pOper //pOper
for (i = 0, count = bhv->GetParameterOperationCount(); i < count; i++) for (i = 0, count = bhv->GetParameterOperationCount(); i < count; i++)
proc_pOper(ctx, bhv->GetParameterOperation(i), db, helper, bhv->GetID()); proc_pOper(ctx, bhv->GetParameterOperation(i), mDb, helper, bhv->GetID());
//iterate sub bb //iterate sub bb
for (i = 0, count = bhv->GetSubBehaviorCount(); i < count; i++) for (i = 0, count = bhv->GetSubBehaviorCount(); i < count; i++)
IterateBehavior(ctx, bhv->GetSubBehavior(i), db, helper, bhv->GetID()); IterateBehavior(ctx, bhv->GetSubBehavior(i), mDb, helper, bhv->GetID());
} }
void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) { void DigParameterData(CKParameterLocal* p, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
CKGUID t = p->GetGUID(); CKGUID t = p->GetGUID();
BOOL unknowType = FALSE; BOOL unknowType = FALSE;
@ -412,12 +412,12 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
//nothing //nothing
if (t == CKPGUID_NONE) return; if (t == CKPGUID_NONE) return;
if (p->GetParameterClassID() && p->GetValueObject(false)) { if (p->GetParameterClassID() && p->GetValueObject(false)) {
helper_pDataExport("id", (long)p->GetValueObject(false)->GetID(), db, helper, parents); helper_pDataExport("id", (long)p->GetValueObject(false)->GetID(), mDb, helper, parents);
helper_pDataExport("name", p->GetValueObject(false)->GetName(), db, helper, parents); helper_pDataExport("name", p->GetValueObject(false)->GetName(), mDb, helper, parents);
CK_CLASSID none_classid = p->GetValueObject(false)->GetClassID(); CK_CLASSID none_classid = p->GetValueObject(false)->GetClassID();
CKParameterType none_type = helper->_parameterManager->ClassIDToType(none_classid); CKParameterType none_type = helper->_parameterManager->ClassIDToType(none_classid);
helper_pDataExport("type",helper->_parameterManager->ParameterTypeToName(none_type), db, helper, parents); helper_pDataExport("type",helper->_parameterManager->ParameterTypeToName(none_type), mDb, helper, parents);
return; return;
} }
//float //float
@ -426,7 +426,7 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
|| t == CKPGUID_FLOATSLIDER || t == CKPGUID_FLOATSLIDER
#endif #endif
) { ) {
helper_pDataExport("float-data", *(float*)(p->GetReadDataPtr(false)), db, helper, parents); helper_pDataExport("float-data", *(float*)(p->GetReadDataPtr(false)), mDb, helper, parents);
return; return;
} }
//int //int
@ -437,22 +437,22 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
|| t == CKPGUID_LIGHTTYPE || t == CKPGUID_SPRITEALIGN || t == CKPGUID_DIRECTION || t == CKPGUID_LAYERTYPE || t == CKPGUID_LIGHTTYPE || t == CKPGUID_SPRITEALIGN || t == CKPGUID_DIRECTION || t == CKPGUID_LAYERTYPE
|| t == CKPGUID_COMPOPERATOR || t == CKPGUID_BINARYOPERATOR || t == CKPGUID_SETOPERATOR || t == CKPGUID_COMPOPERATOR || t == CKPGUID_BINARYOPERATOR || t == CKPGUID_SETOPERATOR
|| t == CKPGUID_OBSTACLEPRECISION || t == CKPGUID_OBSTACLEPRECISIONBEH) { || t == CKPGUID_OBSTACLEPRECISION || t == CKPGUID_OBSTACLEPRECISIONBEH) {
helper_pDataExport("int-data", (long)(*(int*)(p->GetReadDataPtr(false))), db, helper, parents); helper_pDataExport("int-data", (long)(*(int*)(p->GetReadDataPtr(false))), mDb, helper, parents);
return; return;
} }
if (t == CKPGUID_VECTOR) { if (t == CKPGUID_VECTOR) {
VxVector vec; VxVector vec;
memcpy(&vec, p->GetReadDataPtr(false), sizeof(vec)); memcpy(&vec, p->GetReadDataPtr(false), sizeof(vec));
helper_pDataExport("vector.x", vec.x, db, helper, parents); helper_pDataExport("vector.x", vec.x, mDb, helper, parents);
helper_pDataExport("vector.y", vec.y, db, helper, parents); helper_pDataExport("vector.y", vec.y, mDb, helper, parents);
helper_pDataExport("vector.z", vec.z, db, helper, parents); helper_pDataExport("vector.z", vec.z, mDb, helper, parents);
return; return;
} }
if (t == CKPGUID_2DVECTOR) { if (t == CKPGUID_2DVECTOR) {
Vx2DVector vec; Vx2DVector vec;
memcpy(&vec, p->GetReadDataPtr(false), sizeof(vec)); memcpy(&vec, p->GetReadDataPtr(false), sizeof(vec));
helper_pDataExport("2dvector.x", vec.x, db, helper, parents); helper_pDataExport("2dvector.x", vec.x, mDb, helper, parents);
helper_pDataExport("2dvector.y", vec.y, db, helper, parents); helper_pDataExport("2dvector.y", vec.y, mDb, helper, parents);
return; return;
} }
if (t == CKPGUID_MATRIX) { if (t == CKPGUID_MATRIX) {
@ -463,7 +463,7 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) { for (int j = 0; j < 4; ++j) {
sprintf(position, "matrix[%d][%d]", i, j); sprintf(position, "matrix[%d][%d]", i, j);
helper_pDataExport(position, mat[i][j], db, helper, parents); helper_pDataExport(position, mat[i][j], mDb, helper, parents);
} }
} }
return; return;
@ -471,10 +471,10 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
if (t == CKPGUID_COLOR) { if (t == CKPGUID_COLOR) {
VxColor col; VxColor col;
memcpy(&col, p->GetReadDataPtr(false), sizeof(col)); memcpy(&col, p->GetReadDataPtr(false), sizeof(col));
helper_pDataExport("color.r", col.r, db, helper, parents); helper_pDataExport("color.r", col.r, mDb, helper, parents);
helper_pDataExport("color.g", col.g, db, helper, parents); helper_pDataExport("color.g", col.g, mDb, helper, parents);
helper_pDataExport("color.b", col.b, db, helper, parents); helper_pDataExport("color.b", col.b, mDb, helper, parents);
helper_pDataExport("color.a", col.a, db, helper, parents); helper_pDataExport("color.a", col.a, mDb, helper, parents);
return; return;
} }
if (t == CKPGUID_2DCURVE) { if (t == CKPGUID_2DCURVE) {
@ -488,27 +488,27 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
endIndex = strlen(prefix); endIndex = strlen(prefix);
changeSuffix(".pos.x"); changeSuffix(".pos.x");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetPosition().x, db, helper, parents); helper_pDataExport(prefix, c->GetControlPoint(i)->GetPosition().x, mDb, helper, parents);
changeSuffix(".pos.y"); changeSuffix(".pos.y");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetPosition().y, db, helper, parents); helper_pDataExport(prefix, c->GetControlPoint(i)->GetPosition().y, mDb, helper, parents);
changeSuffix(".islinear"); changeSuffix(".islinear");
helper_pDataExport(prefix, (long)c->GetControlPoint(i)->IsLinear(), db, helper, parents); helper_pDataExport(prefix, (long)c->GetControlPoint(i)->IsLinear(), mDb, helper, parents);
if (c->GetControlPoint(i)->IsTCB()) { if (c->GetControlPoint(i)->IsTCB()) {
changeSuffix(".bias"); changeSuffix(".bias");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetBias(), db, helper, parents); helper_pDataExport(prefix, c->GetControlPoint(i)->GetBias(), mDb, helper, parents);
changeSuffix(".continuity"); changeSuffix(".continuity");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetContinuity(), db, helper, parents); helper_pDataExport(prefix, c->GetControlPoint(i)->GetContinuity(), mDb, helper, parents);
changeSuffix(".tension"); changeSuffix(".tension");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetTension(), db, helper, parents); helper_pDataExport(prefix, c->GetControlPoint(i)->GetTension(), mDb, helper, parents);
} else { } else {
changeSuffix(".intangent.x"); changeSuffix(".intangent.x");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetInTangent().x, db, helper, parents); helper_pDataExport(prefix, c->GetControlPoint(i)->GetInTangent().x, mDb, helper, parents);
changeSuffix(".intangent.y"); changeSuffix(".intangent.y");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetInTangent().y, db, helper, parents); helper_pDataExport(prefix, c->GetControlPoint(i)->GetInTangent().y, mDb, helper, parents);
changeSuffix(".outtangent.x"); changeSuffix(".outtangent.x");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetOutTangent().x, db, helper, parents); helper_pDataExport(prefix, c->GetControlPoint(i)->GetOutTangent().x, mDb, helper, parents);
changeSuffix(".outtangent.y"); changeSuffix(".outtangent.y");
helper_pDataExport(prefix, c->GetControlPoint(i)->GetOutTangent().y, db, helper, parents); helper_pDataExport(prefix, c->GetControlPoint(i)->GetOutTangent().y, mDb, helper, parents);
} }
} }
return; return;
@ -521,7 +521,7 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
helper->_db_pData->data.insert(0, cptr, 0, cc); helper->_db_pData->data.insert(0, cptr, 0, cc);
helper->_db_pData->field = "str"; helper->_db_pData->field = "str";
helper->_db_pData->belong_to = p->GetID(); helper->_db_pData->belong_to = p->GetID();
db->write_pData(helper->_db_pData); mDb->write_pData(helper->_db_pData);
return; return;
} }
@ -554,10 +554,10 @@ void DigParameterData(CKParameterLocal* p, scriptDatabase* db, dbScriptDataStruc
else else
helper->_db_pData->field = "dump.partial_data"; helper->_db_pData->field = "dump.partial_data";
helper->_db_pData->belong_to = p->GetID(); helper->_db_pData->belong_to = p->GetID();
db->write_pData(helper->_db_pData); mDb->write_pData(helper->_db_pData);
//dump data length //dump data length
helper_pDataExport("dump.length", (long)cc, db, helper, parents); helper_pDataExport("dump.length", (long)cc, mDb, helper, parents);
return; return;
} }
} }

View File

@ -4,23 +4,23 @@
#include "stdafx.h" #include "stdafx.h"
#include "database.h" #include "database.h"
void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB, BOOL isTarget); void generate_pLink_in_pIn(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB, BOOL isTarget);
void proc_pTarget(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents); void proc_pTarget(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents);
void proc_pIn(CKContext* ctx, CKParameterIn* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB); void proc_pIn(CKContext* ctx, CKParameterIn* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB);
void proc_pOut(CKContext* ctx, CKParameterOut* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB); void proc_pOut(CKContext* ctx, CKParameterOut* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, EXPAND_CK_ID grandparents, int index, BOOL executedFromBB);
void proc_bIn(CKBehaviorIO* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, int index); void proc_bIn(CKBehaviorIO* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, int index);
void proc_bOut(CKBehaviorIO* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, int index); void proc_bOut(CKBehaviorIO* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, int index);
void proc_bLink(CKBehaviorLink* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents); void proc_bLink(CKBehaviorLink* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void proc_pLocal(CKParameterLocal* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents, BOOL is_setting); void proc_pLocal(CKParameterLocal* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents, BOOL is_setting);
void proc_pOper(CKContext* ctx, CKParameterOperation* cache, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents); void proc_pOper(CKContext* ctx, CKParameterOperation* cache, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void proc_pAttr(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper* helper, CKParameter* cache); void proc_pAttr(CKContext* ctx, DocumentDatabase* mDb, dbDocDataStructHelper* helper, CKParameter* cache);
void helper_pDataExport(const char* field, long data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents); void helper_pDataExport(const char* field, long data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void helper_pDataExport(const char* field, float data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents); void helper_pDataExport(const char* field, float data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void helper_pDataExport(const char* field, const char* data, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents); void helper_pDataExport(const char* field, const char* data, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void IterateBehavior(CKContext* ctx, CKBehavior* bhv, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents); void IterateBehavior(CKContext* ctx, CKBehavior* bhv, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void IterateScript(CKContext* ctx, scriptDatabase* db, dbScriptDataStructHelper* helper); void IterateScript(CKContext* ctx, DocumentDatabase* mDb, dbDocDataStructHelper* helper);
void DigParameterData(CKParameterLocal* pl, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents); void DigParameterData(CKParameterLocal* pl, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
#endif #endif

View File

@ -8,7 +8,7 @@ combined_database::combined_database() :
; ;
} }
db_shared_dictData* combined_database::get_struct() { dbdoc_data* combined_database::get_struct() {
if (helper_script != NULL) return helper_script->_db_pData; if (helper_script != NULL) return helper_script->_db_pData;
if (helper_data != NULL) return helper_data->_db_objParam; if (helper_data != NULL) return helper_data->_db_objParam;
return NULL; return NULL;
@ -20,22 +20,22 @@ char* combined_database::get_string_cache() {
return NULL; return NULL;
} }
void combined_database::write_dict(db_shared_dictData* data) { void combined_database::write_dict(dbdoc_data* data) {
if (db_script != NULL) db_script->write_pData(data); if (db_script != NULL) db_script->write_pData(data);
if (db_data != NULL) db_data->write_objParam(data); if (db_data != NULL) db_data->write_objParam(data);
} }
void DigParameterData(CKParameter* p, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents) { void DigParameterData(CKParameter* p, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents) {
combined_database cdb; combined_database cdb;
cdb.db_script = db; cdb.db_script = mDb;
cdb.helper_script = helper; cdb.helper_script = helper;
DigParameterData(p, &cdb, parents); DigParameterData(p, &cdb, parents);
} }
void DigParameterData(CKParameter* p, dataDatabase* db, dbDataDataStructHelper* helper, EXPAND_CK_ID parents) { void DigParameterData(CKParameter* p, dataDatabase* mDb, dbDataDataStructHelper* helper, EXPAND_CK_ID parents) {
combined_database cdb; combined_database cdb;
cdb.db_data = db; cdb.db_data = mDb;
cdb.helper_data = helper; cdb.helper_data = helper;
DigParameterData(p, &cdb, parents); DigParameterData(p, &cdb, parents);

View File

@ -7,12 +7,12 @@
class combined_database { class combined_database {
public: public:
combined_database(); combined_database();
db_shared_dictData* get_struct(); dbdoc_data* get_struct();
char* get_string_cache(); char* get_string_cache();
void write_dict(db_shared_dictData* data); void write_dict(dbdoc_data* data);
scriptDatabase* db_script; DocumentDatabase* db_script;
dbScriptDataStructHelper* helper_script; dbDocDataStructHelper* helper_script;
dataDatabase* db_data; dataDatabase* db_data;
dbDataDataStructHelper* helper_data; dbDataDataStructHelper* helper_data;
}; };
@ -21,11 +21,11 @@ public:
#define safeStringCopy(storage,str) storage=(str)?(str):""; #define safeStringCopy(storage,str) storage=(str)?(str):"";
void DigParameterData(CKParameter* p, combined_database* helper, EXPAND_CK_ID parents); void DigParameterData(CKParameter* p, combined_database* helper, EXPAND_CK_ID parents);
void DigParameterData(CKParameter* p, scriptDatabase* db, dbScriptDataStructHelper* helper, EXPAND_CK_ID parents); void DigParameterData(CKParameter* p, DocumentDatabase* mDb, dbDocDataStructHelper* helper, EXPAND_CK_ID parents);
void DigParameterData(CKParameter* p, dataDatabase* db, dbDataDataStructHelper* helper, EXPAND_CK_ID parents); void DigParameterData(CKParameter* p, dataDatabase* mDb, dbDataDataStructHelper* helper, EXPAND_CK_ID parents);
void helper_FillStruct(const char* field, long data, db_shared_dictData* helper); void helper_FillStruct(const char* field, long data, dbdoc_data* helper);
void helper_FillStruct(const char* field, float data, db_shared_dictData* helper); void helper_FillStruct(const char* field, float data, dbdoc_data* helper);
void helper_FillStruct(const char* field, const char* data, db_shared_dictData* helper); void helper_FillStruct(const char* field, const char* data, dbdoc_data* helper);
#endif #endif

View File

@ -17,11 +17,11 @@
#ifndef _AFX_NO_DB_SUPPORT #ifndef _AFX_NO_DB_SUPPORT
#include <afxdb.h> // MFC ODBC database classes #include <afxdb.h> // MFC ODBC SSMaterializerDatabase classes
#endif // _AFX_NO_DB_SUPPORT #endif // _AFX_NO_DB_SUPPORT
#ifndef _AFX_NO_DAO_SUPPORT #ifndef _AFX_NO_DAO_SUPPORT
#include <afxdao.h> // MFC DAO database classes #include <afxdao.h> // MFC DAO SSMaterializerDatabase classes
#endif // _AFX_NO_DAO_SUPPORT #endif // _AFX_NO_DAO_SUPPORT
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls #include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls

View File

@ -0,0 +1 @@
#pragma once

View File

@ -80,25 +80,25 @@ void PluginMenuCallback(int commandID) {
switch (commandID) { switch (commandID) {
case 0: case 0:
{ {
//init file //Init file
std::string file; std::string file;
OpenFileDialog(&file); OpenFileDialog(&file);
if (file.empty()) if (file.empty())
break; break;
DeleteFile(file.c_str()); DeleteFile(file.c_str());
//init resources //Init resources
scriptDatabase* _db = new scriptDatabase(); DocumentDatabase* _db = new DocumentDatabase();
dbScriptDataStructHelper* _helper = new dbScriptDataStructHelper(); dbDocDataStructHelper* _helper = new dbDocDataStructHelper();
_db->open(file.c_str()); _db->Open(file.c_str());
_helper->init(ctx->GetParameterManager()); _helper->Init(ctx->GetParameterManager());
//iterate item //iterate item
IterateScript(ctx, _db, _helper); IterateScript(ctx, _db, _helper);
//close all resources //Close all resources
_helper->dispose(); _helper->dispose();
_db->close(); _db->Close();
delete _helper; delete _helper;
delete _db; delete _db;
@ -107,18 +107,18 @@ void PluginMenuCallback(int commandID) {
break; break;
case 1: case 1:
{ {
//init file //Init file
std::string file; std::string file;
OpenFileDialog(&file); OpenFileDialog(&file);
if (file.empty()) if (file.empty())
break; break;
DeleteFile(file.c_str()); DeleteFile(file.c_str());
//init //Init
envDatabase* _db = new envDatabase(); EnvironmentDatabase* _db = new EnvironmentDatabase();
dbEnvDataStructHelper* _helper = new dbEnvDataStructHelper(); dbEnvDataStructHelper* _helper = new dbEnvDataStructHelper();
_db->open(file.c_str()); _db->Open(file.c_str());
_helper->init(); _helper->Init();
//iterate parameter operation/param //iterate parameter operation/param
IterateParameterOperation(ctx->GetParameterManager(), _db, _helper); IterateParameterOperation(ctx->GetParameterManager(), _db, _helper);
@ -132,7 +132,7 @@ void PluginMenuCallback(int commandID) {
//release all //release all
_helper->dispose(); _helper->dispose();
_db->close(); _db->Close();
delete _helper; delete _helper;
delete _db; delete _db;

View File

@ -9,7 +9,7 @@ void PlayerMain(const char* virtools_composition, const char* script_db_path, co
printf("Homepage: https://github.com/yyc12345/SuperScriptMaterializer\n"); printf("Homepage: https://github.com/yyc12345/SuperScriptMaterializer\n");
printf("Report bug: https://github.com/yyc12345/SuperScriptMaterializer/issues\n"); printf("Report bug: https://github.com/yyc12345/SuperScriptMaterializer/issues\n");
// ====================== init ck2 engine // ====================== Init ck2 engine
#if defined(VIRTOOLS_21) #if defined(VIRTOOLS_21)
CommonAssert(LoadLibrary("CK2.dll") != NULL, "Error loading CK2.dll"); CommonAssert(LoadLibrary("CK2.dll") != NULL, "Error loading CK2.dll");
#endif #endif
@ -34,8 +34,8 @@ void PlayerMain(const char* virtools_composition, const char* script_db_path, co
#endif #endif
printf("Parsing %s...\n", virtools_composition); printf("Parsing %s...\n", virtools_composition);
// ====================== do database export // ====================== do SSMaterializerDatabase export
// define and init // define and Init
scriptDatabase* _script_db = new scriptDatabase(); scriptDatabase* _script_db = new scriptDatabase();
dbScriptDataStructHelper* _script_helper = new dbScriptDataStructHelper(); dbScriptDataStructHelper* _script_helper = new dbScriptDataStructHelper();
envDatabase* _env_db = new envDatabase(); envDatabase* _env_db = new envDatabase();
@ -88,13 +88,13 @@ void PlayerMain(const char* virtools_composition, const char* script_db_path, co
context->ClearAll(); context->ClearAll();
// todo: Virtools 4.0 standalone version throw exception in there, but i don't knwo why // todo: Virtools 4.0 standalone version throw exception in there, but i don't knwo why
// but it doesn't affect database export, perhaps // but it doesn't affect SSMaterializerDatabase export, perhaps
CKCloseContext(context); CKCloseContext(context);
CKShutdown(); CKShutdown();
// todo: Virtools 2.5 standalone version throw exception in there, but i don't knwo why // todo: Virtools 2.5 standalone version throw exception in there, but i don't knwo why
// but it doesn't affect database export, perhaps // but it doesn't affect SSMaterializerDatabase export, perhaps
} }
void CommonAssert(BOOL condition, const char* desc) { void CommonAssert(BOOL condition, const char* desc) {