refactor database.cpp (1/2)
This commit is contained in:
		@ -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文档内的脚本及其它重要数据。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
表列表:
 | 
					表列表:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
 | 
				
			|||||||
@ -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>
 | 
				
			||||||
@ -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">
 | 
				
			||||||
 | 
				
			|||||||
@ -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
											
										
									
								
							@ -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
 | 
				
			||||||
@ -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
 | 
				
			||||||
@ -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
 | 
				
			||||||
@ -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;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
@ -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);
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
@ -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
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										0
									
								
								SuperScriptMaterializer/string_helper.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								SuperScriptMaterializer/string_helper.cpp
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								SuperScriptMaterializer/string_helper.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								SuperScriptMaterializer/string_helper.hpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					#pragma once
 | 
				
			||||||
@ -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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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) {
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user