fix: finish basic export test on Virtools 5 environment
This commit is contained in:
1 parent
6943088df1
commit
7d9b7f14e8
9 files changed
+120
-78
No files matched your search
@@ -268,7 +268,7 @@ namespace VSW::Materializer::DataTypes {
|
|||||||
int64_t reader_setting_param_guid;
|
int64_t reader_setting_param_guid;
|
||||||
YYCC::yycc_u8string reader_file_ext;
|
YYCC::yycc_u8string reader_file_ext;
|
||||||
// Manager and Render Engine specific
|
// Manager and Render Engine specific
|
||||||
CKBOOL manager_active;
|
bool manager_active;
|
||||||
// Behavior specific
|
// Behavior specific
|
||||||
YYCC::yycc_u8string behavior_guids;
|
YYCC::yycc_u8string behavior_guids;
|
||||||
};
|
};
|
||||||
|
|||||||
+56
-56
@@ -39,6 +39,7 @@ failed: throw std::runtime_error("fail to bind value for prepared statement.");
|
|||||||
#define REVEAL_ENUM(enum_val) static_cast<std::underlying_type_t<decltype(enum_val)>>(enum_val)
|
#define REVEAL_ENUM(enum_val) static_cast<std::underlying_type_t<decltype(enum_val)>>(enum_val)
|
||||||
#define REVEAL_U8STR(u8_str) YYCC::EncodingHelper::ToOrdinary(u8_str.c_str()), -1, SQLITE_TRANSIENT
|
#define REVEAL_U8STR(u8_str) YYCC::EncodingHelper::ToOrdinary(u8_str.c_str()), -1, SQLITE_TRANSIENT
|
||||||
#define REVEAL_BLOB(blob_val) (blob_val).ptr, (blob_val).length, SQLITE_TRANSIENT
|
#define REVEAL_BLOB(blob_val) (blob_val).ptr, (blob_val).length, SQLITE_TRANSIENT
|
||||||
|
#define REVEAL_BOOL(bool_val) ((bool_val) ? 1 : 0)
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
@@ -123,19 +124,19 @@ failed: throw std::runtime_error("fail to bind value for prepared statement.");
|
|||||||
AbstractDatabase(file) {
|
AbstractDatabase(file) {
|
||||||
// initialize table
|
// initialize table
|
||||||
BEGIN_CTOR;
|
BEGIN_CTOR;
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [script] ([thisobj] INTEGER, [name] TEXT, [index] INTEGER, [behavior] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [script] ([beobj] INTEGER, [beobj_name] TEXT, [behavior_index] INTEGER, [behavior] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [behavior] ([thisobj] INTEGER, [name] TEXT, [type] INTEGER, [proto_name] TEXT, [proto_guid] TEXT, [flags] INTEGER, [priority] INTEGER, [version] INTEGER, [pin_count] TEXT, [parent] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [behavior] ([thisobj] INTEGER, [name] TEXT, [type] INTEGER, [proto_name] TEXT, [proto_guid] INTEGER, [flags] INTEGER, [priority] INTEGER, [version] INTEGER, [pin_count_ptarget] INTEGER, [pin_count_pin] INTEGER, [pin_count_pout] INTEGER, [pin_count_bin] INTEGER, [pin_count_bout] INTEGER, [parent] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [pTarget] ([thisobj] INTEGER, [name] TEXT, [type] TEXT, [type_guid] TEXT, [parent] INTEGER, [direct_source] INTEGER, [shard_source] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [pTarget] ([thisobj] INTEGER, [name] TEXT, [type] INTEGER, [parent] INTEGER, [direct_source] INTEGER, [shared_source] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [pIn] ([thisobj] INTEGER, [index] INTEGER, [name] TEXT, [type] TEXT, [type_guid] TEXT, [parent] INTEGER, [direct_source] INTEGER, [shared_source] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [pIn] ([thisobj] INTEGER, [index] INTEGER, [name] TEXT, [type] INTEGER, [parent] INTEGER, [direct_source] INTEGER, [shared_source] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [pOut] ([thisobj] INTEGER, [index] INTEGER, [name] TEXT, [type] TEXT, [type_guid] TEXT, [parent] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [pOut] ([thisobj] INTEGER, [index] INTEGER, [name] TEXT, [type] INTEGER, [parent] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [bIn] ([thisobj] INTEGER, [index] INTEGER, [name] TEXT, [parent] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [bIn] ([thisobj] INTEGER, [index] INTEGER, [name] TEXT, [parent] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [bOut] ([thisobj] INTEGER, [index] INTEGER, [name] TEXT, [parent] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [bOut] ([thisobj] INTEGER, [index] INTEGER, [name] TEXT, [parent] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [bLink] ([input] INTEGER, [output] INTEGER, [delay] INTEGER, [input_obj] INTEGER, [input_type] INTEGER, [input_index] INETEGR, [output_obj] INTEGER, [output_type] INTEGER, [output_index] INETEGR, [parent] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [bLink] ([input] INTEGER, [output] INTEGER, [delay] INTEGER, [parent] INTEGER, [input_obj] INTEGER, [input_type] INTEGER, [input_index] INTEGER, [output_obj] INTEGER, [output_type] INTEGER, [output_index] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [pLocal] ([thisobj] INTEGER, [name] TEXT, [type] TEXT, [type_guid] TEXT, [is_setting] INTEGER, [parent] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [pLocal] ([thisobj] INTEGER, [name] TEXT, [type] INTEGER, [is_setting] INTEGER, [parent] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [pLink] ([input] INTEGER, [output] INTEGER, [input_obj] INTEGER, [input_type] INTEGER, [input_is_bb] INTEGER, [input_index] INETEGR, [output_obj] INTEGER, [output_type] INTEGER, [output_is_bb] INTEGER, [output_index] INETEGR, [parent] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [pLink] ([parent] INTEGER, [input] INTEGER, [input_obj] INTEGER, [input_type] INTEGER, [input_is_bb] INTEGER, [input_index] INTEGER, [output] INTEGER, [output_obj] INTEGER, [output_type] INTEGER, [output_is_bb] INTEGER, [output_index] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [pOper] ([thisobj] INTEGER, [op] TEXT, [op_guid] TEXT, [parent] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [pOper] ([thisobj] INTEGER, [op] INTEGER, [parent] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [eLink] ([export_obj] INTEGER, [internal_obj] INTEGER, [is_in] INTEGER, [index] INTEGER, [parent] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [eLink] ([export_obj] INTEGER, [internal_obj] INTEGER, [is_in] INTEGER, [index] INTEGER, [parent] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [pAttr] ([thisobj] INTEGER, [name] TEXT, [type] TEXT, [type_guid] TEXT);");
|
CTOR_SQL_EXEC("CREATE TABLE [pAttr] ([thisobj] INTEGER, [name] TEXT, [type] INTEGER, [owner] INTEGER);");
|
||||||
CTOR_SQL_EXEC("CREATE TABLE [data] ([field] TEXT, [data] BLOB, [parent] INTEGER);");
|
CTOR_SQL_EXEC("CREATE TABLE [data] ([field] TEXT, [data] BLOB, [parent] INTEGER);");
|
||||||
END_CTOR;
|
END_CTOR;
|
||||||
}
|
}
|
||||||
@@ -163,134 +164,133 @@ failed: throw std::runtime_error("fail to bind value for prepared statement.");
|
|||||||
|
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_script& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_script& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script] VALUES (?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [script] VALUES (?, ?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.beobj));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.host_name.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.beobj_name)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.index));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.behavior_index));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.behavior));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.behavior));
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_behavior& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_behavior& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_behavior] VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [behavior] VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.name.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.name)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.type));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.type));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.proto_name.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.proto_name)));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.proto_guid.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_int64(WRITER_STMT, WRITER_INDEX, data.proto_guid));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.flags));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.flags));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.priority));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.priority));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.version));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.version));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.pin_count.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.pin_count_ptarget));
|
||||||
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.pin_count_pin));
|
||||||
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.pin_count_pout));
|
||||||
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.pin_count_bin));
|
||||||
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.pin_count_bout));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_bIn& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_bIn& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_bIn] VALUES (?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [bIn] VALUES (?, ?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.index));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.index));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.name.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.name)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_bOut& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_bOut& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_bOut] VALUES (?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [bOut] VALUES (?, ?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.index));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.index));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.name.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.name)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_pIn& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_pIn& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_pIn] VALUES (?, ?, ?, ?, ?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [pIn] VALUES (?, ?, ?, ?, ?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.index));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.index));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.name.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.name)));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.type.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_int64(WRITER_STMT, WRITER_INDEX, data.type));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.type_guid.c_str(), -1, SQLITE_TRANSIENT));
|
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.direct_source));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.direct_source));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.shared_source));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.shared_source));
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_pOut& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_pOut& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_pOut] VALUES (?, ?, ?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [pOut] VALUES (?, ?, ?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.index));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.index));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.name.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.name)));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.type.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_int64(WRITER_STMT, WRITER_INDEX, data.type));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.type_guid.c_str(), -1, SQLITE_TRANSIENT));
|
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_bLink& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_bLink& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_bLink] VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [bLink] VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.delay));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.delay));
|
||||||
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input_obj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input_obj));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_ENUM(data.input_type)));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_ENUM(data.input_type)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input_index));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input_index));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output_obj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output_obj));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_ENUM(data.output_type)));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_ENUM(data.output_type)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output_index));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output_index));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_pLocal& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_pLocal& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_pLocal] VALUES (?, ?, ?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [pLocal] VALUES (?, ?, ?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.name.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.name)));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.type.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_int64(WRITER_STMT, WRITER_INDEX, data.type));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.type_guid.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_BOOL(data.is_setting)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.is_setting));
|
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_pAttr& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_pAttr& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_pAttr] VALUES (?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [pAttr] VALUES (?, ?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.name.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.name)));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.type.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_int64(WRITER_STMT, WRITER_INDEX, data.type));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.type_guid.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.owner));
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_pLink& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_pLink& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_pLink] VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [pLink] VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
|
||||||
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output));
|
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input_obj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input_obj));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_ENUM(data.input_type)));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_ENUM(data.input_type)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input_is_bb));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_BOOL(data.input_is_bb)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input_index));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.input_index));
|
||||||
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output_obj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output_obj));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_ENUM(data.output_type)));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_ENUM(data.output_type)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output_is_bb));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_BOOL(data.output_is_bb)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output_index));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.output_index));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_pOper& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_pOper& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_pOper] VALUES (?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [pOper] VALUES (?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.op.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_int64(WRITER_STMT, WRITER_INDEX, data.op));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.op_guid.c_str(), -1, SQLITE_TRANSIENT));
|
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_eLink& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_eLink& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_eLink] VALUES (?, ?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [eLink] VALUES (?, ?, ?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.export_obj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.export_obj));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.internal_obj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.internal_obj));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.is_in));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_BOOL(data.is_in)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.index));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.index));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
void ScriptDatabase::Write(const DataTypes::Script::Table_pTarget& data) {
|
void ScriptDatabase::Write(const DataTypes::Script::Table_pTarget& data) {
|
||||||
BEGIN_WRITER("INSERT INTO [script_pTarget] VALUES (?, ?, ?, ?, ?, ?, ?);");
|
BEGIN_WRITER("INSERT INTO [pTarget] VALUES (?, ?, ?, ?, ?, ?);");
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.thisobj));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.name.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.name)));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.type.c_str(), -1, SQLITE_TRANSIENT));
|
WRITER_BIND(sqlite3_bind_int64(WRITER_STMT, WRITER_INDEX, data.type));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, data.type_guid.c_str(), -1, SQLITE_TRANSIENT));
|
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.direct_source));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.direct_source));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.shared_source));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.shared_source));
|
||||||
@@ -430,7 +430,7 @@ WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.parent));
|
|||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.reader_flags));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.reader_flags));
|
||||||
WRITER_BIND(sqlite3_bind_int64(WRITER_STMT, WRITER_INDEX, data.reader_setting_param_guid));
|
WRITER_BIND(sqlite3_bind_int64(WRITER_STMT, WRITER_INDEX, data.reader_setting_param_guid));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.reader_file_ext)));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.reader_file_ext)));
|
||||||
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.manager_active));
|
WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_BOOL(data.manager_active)));
|
||||||
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.behavior_guids)));
|
WRITER_BIND(sqlite3_bind_text(WRITER_STMT, WRITER_INDEX, REVEAL_U8STR(data.behavior_guids)));
|
||||||
END_WRITER;
|
END_WRITER;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,6 +69,11 @@ namespace VSW::Materializer::ExportDocument {
|
|||||||
// export document
|
// export document
|
||||||
IterateMessage(expctx, ctx->GetMessageManager());
|
IterateMessage(expctx, ctx->GetMessageManager());
|
||||||
IterateObject(expctx, ctx);
|
IterateObject(expctx, ctx);
|
||||||
|
|
||||||
|
// report success
|
||||||
|
expctx.reporter.EnableBeep();
|
||||||
|
expctx.reporter.Info(YYCC_U8("Exporting document database done."));
|
||||||
|
expctx.reporter.DisableBeep();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -8,11 +8,16 @@ namespace VSW::Materializer::ExportEnvironment {
|
|||||||
|
|
||||||
struct ExportContext {
|
struct ExportContext {
|
||||||
ExportContext(CKContext* ctx, const YYCC::yycc_u8string_view& db_path, UINT code_page) :
|
ExportContext(CKContext* ctx, const YYCC::yycc_u8string_view& db_path, UINT code_page) :
|
||||||
db(db_path), cache(), reporter(ctx), cp(code_page) {}
|
db(db_path), cache(), reporter(ctx), cp(code_page), ctx(ctx), plugin_mgr(CKGetPluginManager()) {}
|
||||||
Database::EnvironmentDatabase db;
|
Database::EnvironmentDatabase db;
|
||||||
DataTypes::Environment::DataCache cache;
|
DataTypes::Environment::DataCache cache;
|
||||||
Utilities::EnhancedReporter reporter;
|
Utilities::EnhancedReporter reporter;
|
||||||
UINT cp;
|
UINT cp;
|
||||||
|
|
||||||
|
/// @brief Virtools context.
|
||||||
|
CKContext* ctx;
|
||||||
|
/// @brief Virtools Plugin Manager
|
||||||
|
CKPluginManager* plugin_mgr;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void IterateParameterOperation(ExportContext& expctx, CKParameterManager* param_mgr) {
|
static void IterateParameterOperation(ExportContext& expctx, CKParameterManager* param_mgr) {
|
||||||
@@ -47,7 +52,7 @@ namespace VSW::Materializer::ExportEnvironment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void IterateParameter(ExportContext& expctx, CKParameterManager* param_mgr, CKPluginManager* plugin_mgr) {
|
static void IterateParameter(ExportContext& expctx, CKParameterManager* param_mgr) {
|
||||||
// prepare variables
|
// prepare variables
|
||||||
CKParameterTypeDesc* desc = nullptr;
|
CKParameterTypeDesc* desc = nullptr;
|
||||||
|
|
||||||
@@ -74,8 +79,8 @@ namespace VSW::Materializer::ExportEnvironment {
|
|||||||
// This is different with plugin.
|
// This is different with plugin.
|
||||||
// Because some parameters are provided by Virtools self.
|
// Because some parameters are provided by Virtools self.
|
||||||
CKPluginEntry* plugin_entry = desc->CreatorDll;
|
CKPluginEntry* plugin_entry = desc->CreatorDll;
|
||||||
CKPluginDll* plugin_dll = plugin_mgr->GetPluginDllInfo(plugin_entry->m_PluginDllIndex);
|
|
||||||
if (plugin_entry != nullptr) {
|
if (plugin_entry != nullptr) {
|
||||||
|
CKPluginDll* plugin_dll = expctx.plugin_mgr->GetPluginDllInfo(plugin_entry->m_PluginDllIndex);
|
||||||
CP_CKSTR(expctx.cache.param.dll_name, plugin_dll->m_DllFileName.CStr());
|
CP_CKSTR(expctx.cache.param.dll_name, plugin_dll->m_DllFileName.CStr());
|
||||||
expctx.cache.param.dll_index = plugin_entry->m_PluginDllIndex;
|
expctx.cache.param.dll_index = plugin_entry->m_PluginDllIndex;
|
||||||
expctx.cache.param.position_in_dll = plugin_entry->m_PositionInDll;
|
expctx.cache.param.position_in_dll = plugin_entry->m_PositionInDll;
|
||||||
@@ -156,7 +161,7 @@ namespace VSW::Materializer::ExportEnvironment {
|
|||||||
expctx.cache.plugin.reader_setting_param_guid = INT64_C(0);
|
expctx.cache.plugin.reader_setting_param_guid = INT64_C(0);
|
||||||
expctx.cache.plugin.reader_file_ext.clear();
|
expctx.cache.plugin.reader_file_ext.clear();
|
||||||
expctx.cache.plugin.behavior_guids.clear();
|
expctx.cache.plugin.behavior_guids.clear();
|
||||||
expctx.cache.plugin.manager_active = FALSE;
|
expctx.cache.plugin.manager_active = false;
|
||||||
// then try to fetch these specific fields
|
// then try to fetch these specific fields
|
||||||
switch (plugin_type) {
|
switch (plugin_type) {
|
||||||
case CKPLUGIN_BITMAP_READER:
|
case CKPLUGIN_BITMAP_READER:
|
||||||
@@ -263,12 +268,17 @@ namespace VSW::Materializer::ExportEnvironment {
|
|||||||
|
|
||||||
// export environment one by one
|
// export environment one by one
|
||||||
IterateParameterOperation(expctx, ctx->GetParameterManager());
|
IterateParameterOperation(expctx, ctx->GetParameterManager());
|
||||||
IterateParameter(expctx, ctx->GetParameterManager(), CKGetPluginManager());
|
IterateParameter(expctx, ctx->GetParameterManager());
|
||||||
IterateAttribute(expctx, ctx->GetAttributeManager());
|
IterateAttribute(expctx, ctx->GetAttributeManager());
|
||||||
IteratePlugin(expctx, CKGetPluginManager());
|
IteratePlugin(expctx, CKGetPluginManager());
|
||||||
#if !defined(VIRTOOLS_21)
|
#if !defined(VIRTOOLS_21)
|
||||||
IterateVariable(expctx, ctx->GetVariableManager());
|
IterateVariable(expctx, ctx->GetVariableManager());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// report success
|
||||||
|
expctx.reporter.EnableBeep();
|
||||||
|
expctx.reporter.Info(YYCC_U8("Exporting environment database done."));
|
||||||
|
expctx.reporter.DisableBeep();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -23,7 +23,9 @@ namespace VSW::Materializer::ExportScript {
|
|||||||
|
|
||||||
/// @brief Variable for removing duplicated exported attributes.
|
/// @brief Variable for removing duplicated exported attributes.
|
||||||
std::set<CK_ID> attr_set;
|
std::set<CK_ID> attr_set;
|
||||||
|
/// @brief Virtools context.
|
||||||
CKContext* ctx;
|
CKContext* ctx;
|
||||||
|
/// @brief Virtools Parameter Manager
|
||||||
CKParameterManager* param_mgr;
|
CKParameterManager* param_mgr;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -34,6 +36,8 @@ namespace VSW::Materializer::ExportScript {
|
|||||||
using db_size_t = decltype(expctx.cache.data.data.length);
|
using db_size_t = decltype(expctx.cache.data.data.length);
|
||||||
if (data_length > static_cast<size_t>(std::numeric_limits<db_size_t>::max()))
|
if (data_length > static_cast<size_t>(std::numeric_limits<db_size_t>::max()))
|
||||||
throw std::runtime_error("Too long data length when exporting to data dictionary.");
|
throw std::runtime_error("Too long data length when exporting to data dictionary.");
|
||||||
|
// if length is zero, reset ptr to nullptr
|
||||||
|
if (data_length == 0u) data = nullptr;
|
||||||
// write data
|
// write data
|
||||||
expctx.cache.data.field = field;
|
expctx.cache.data.field = field;
|
||||||
expctx.cache.data.data.ptr = data;
|
expctx.cache.data.data.ptr = data;
|
||||||
@@ -634,6 +638,11 @@ namespace VSW::Materializer::ExportScript {
|
|||||||
|
|
||||||
// export script
|
// export script
|
||||||
IterateScript(expctx);
|
IterateScript(expctx);
|
||||||
|
|
||||||
|
// report success
|
||||||
|
expctx.reporter.EnableBeep();
|
||||||
|
expctx.reporter.Info(YYCC_U8("Exporting script database done."));
|
||||||
|
expctx.reporter.DisableBeep();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+15
-11
@@ -5,13 +5,17 @@ namespace VSW::Materializer::Utilities {
|
|||||||
#pragma region Enhanced Reporter
|
#pragma region Enhanced Reporter
|
||||||
|
|
||||||
EnhancedReporter::EnhancedReporter(CKContext* ctx) :
|
EnhancedReporter::EnhancedReporter(CKContext* ctx) :
|
||||||
m_Ctx(ctx) {}
|
m_Ctx(ctx), m_OrderBeep(false) {}
|
||||||
|
|
||||||
EnhancedReporter::~EnhancedReporter() {}
|
EnhancedReporter::~EnhancedReporter() {}
|
||||||
|
|
||||||
|
void EnhancedReporter::EnableBeep() { m_OrderBeep = true; }
|
||||||
|
|
||||||
|
void EnhancedReporter::DisableBeep() { m_OrderBeep = false; }
|
||||||
|
|
||||||
void EnhancedReporter::PrePrint(const YYCC::yycc_char8_t* strl) const {
|
void EnhancedReporter::PrePrint(const YYCC::yycc_char8_t* strl) const {
|
||||||
if (m_Ctx != nullptr)
|
if (m_Ctx != nullptr)
|
||||||
m_Ctx->OutputToConsole(const_cast<CKSTRING>(YYCC::EncodingHelper::UTF8ToChar(strl, CP_ACP).c_str()), FALSE);
|
m_Ctx->OutputToConsole(const_cast<CKSTRING>(YYCC::EncodingHelper::UTF8ToChar(strl, CP_ACP).c_str()), m_OrderBeep);
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
@@ -33,8 +37,8 @@ namespace VSW::Materializer::Utilities {
|
|||||||
// get curve control point count
|
// get curve control point count
|
||||||
int cp_count = c->GetControlPointCount();
|
int cp_count = c->GetControlPointCount();
|
||||||
// reserve enough space
|
// reserve enough space
|
||||||
// count * (x + y + is_linear + is_tcb + tcb_tuple)
|
// count * (x + y + is_linear + is_tcb + (io_tangent_tuple / tcb_tuple))
|
||||||
m_Cache.reserve(static_cast<size_t>(cp_count) * (sizeof(float) * 2u + sizeof(float) * 3u + sizeof(uint32_t) + sizeof(uint32_t)));
|
m_Cache.reserve(static_cast<size_t>(cp_count) * (sizeof(float) * 2u + sizeof(float) * 4u + sizeof(uint32_t) + sizeof(uint32_t)));
|
||||||
|
|
||||||
// iterate control point
|
// iterate control point
|
||||||
for (int i = 0; i < cp_count; ++i) {
|
for (int i = 0; i < cp_count; ++i) {
|
||||||
@@ -71,16 +75,16 @@ namespace VSW::Materializer::Utilities {
|
|||||||
APPEND_DATA(float_cache);
|
APPEND_DATA(float_cache);
|
||||||
float_cache = cp->GetBias();
|
float_cache = cp->GetBias();
|
||||||
APPEND_DATA(float_cache);
|
APPEND_DATA(float_cache);
|
||||||
} else {
|
// To keep balance with non-TCB control point,
|
||||||
// non-TCB control point
|
|
||||||
float_cache = cp->GetInTangent();
|
|
||||||
APPEND_DATA(float_cache);
|
|
||||||
float_cache = cp->GetOutTangent();
|
|
||||||
APPEND_DATA(float_cache);
|
|
||||||
// To keep balance with TCB control point,
|
|
||||||
// We add a blank 0.0f in there
|
// We add a blank 0.0f in there
|
||||||
float_cache = 0.0f;
|
float_cache = 0.0f;
|
||||||
APPEND_DATA(float_cache);
|
APPEND_DATA(float_cache);
|
||||||
|
} else {
|
||||||
|
// non-TCB control point
|
||||||
|
vector_cache = cp->GetInTangent();
|
||||||
|
APPEND_DATA(vector_cache);
|
||||||
|
vector_cache = cp->GetOutTangent();
|
||||||
|
APPEND_DATA(vector_cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef APPEND_DATA
|
#undef APPEND_DATA
|
||||||
|
|||||||
@@ -14,11 +14,16 @@ namespace VSW::Materializer::Utilities {
|
|||||||
EnhancedReporter(CKContext* ctx);
|
EnhancedReporter(CKContext* ctx);
|
||||||
~EnhancedReporter();
|
~EnhancedReporter();
|
||||||
|
|
||||||
|
public:
|
||||||
|
void EnableBeep();
|
||||||
|
void DisableBeep();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void PrePrint(const YYCC::yycc_char8_t* strl) const override;
|
virtual void PrePrint(const YYCC::yycc_char8_t* strl) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CKContext* m_Ctx;
|
CKContext* m_Ctx;
|
||||||
|
bool m_OrderBeep;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Curve2DBuilder {
|
class Curve2DBuilder {
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ class FieldDecl():
|
|||||||
self.m_DeclType = decl_type
|
self.m_DeclType = decl_type
|
||||||
self.m_DeclName = decl_name
|
self.m_DeclName = decl_name
|
||||||
|
|
||||||
|
def is_bool(self):
|
||||||
|
return self.m_DeclType == 'bool'
|
||||||
|
|
||||||
def is_string(self):
|
def is_string(self):
|
||||||
return self.m_DeclType == 'YYCC::yycc_u8string'
|
return self.m_DeclType == 'YYCC::yycc_u8string'
|
||||||
|
|
||||||
@@ -102,6 +105,8 @@ def output_result(decls: tuple[StructDecl, ...]) -> None:
|
|||||||
return f'WRITER_BIND(sqlite3_bind_blob(WRITER_STMT, WRITER_INDEX, REVEAL_BLOB(data.{decl_pair.m_DeclName})));'
|
return f'WRITER_BIND(sqlite3_bind_blob(WRITER_STMT, WRITER_INDEX, REVEAL_BLOB(data.{decl_pair.m_DeclName})));'
|
||||||
elif decl_pair.is_enum():
|
elif decl_pair.is_enum():
|
||||||
return f'WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_ENUM(data.{decl_pair.m_DeclName})));'
|
return f'WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_ENUM(data.{decl_pair.m_DeclName})));'
|
||||||
|
elif decl_pair.is_bool():
|
||||||
|
return f'WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, REVEAL_BOOL(data.{decl_pair.m_DeclName})));'
|
||||||
else:
|
else:
|
||||||
return f'WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.{decl_pair.m_DeclName}));'
|
return f'WRITER_BIND(sqlite3_bind_int(WRITER_STMT, WRITER_INDEX, data.{decl_pair.m_DeclName}));'
|
||||||
|
|
||||||
|
|||||||
@@ -8,12 +8,16 @@ namespace VSW {
|
|||||||
|
|
||||||
void Reporter::PrePrint(const YYCC::yycc_char8_t* strl) const {}
|
void Reporter::PrePrint(const YYCC::yycc_char8_t* strl) const {}
|
||||||
|
|
||||||
#define GENERIC_REPORTER_WRITE(ty, data) YYCC::ConsoleHelper::Write(YYCC_U8("[" #ty "] ")); \
|
#define GENERIC_REPORTER_WRITE(ty, data) YYCC::yycc_u8string cache(YYCC_U8("[" #ty "] ")); \
|
||||||
YYCC::ConsoleHelper::WriteLine(data);
|
cache += data; \
|
||||||
#define GENERIC_REPORTER_FORMAT(ty, data) YYCC::ConsoleHelper::Write(YYCC_U8("[" #ty "] ")); \
|
this->PrePrint(cache.c_str()); \
|
||||||
va_list argptr; \
|
YYCC::ConsoleHelper::WriteLine(cache.c_str());
|
||||||
|
#define GENERIC_REPORTER_FORMAT(ty, data) va_list argptr; \
|
||||||
va_start(argptr, data); \
|
va_start(argptr, data); \
|
||||||
YYCC::ConsoleHelper::WriteLine(YYCC::StringHelper::VPrintf(data, argptr).c_str()); \
|
YYCC::yycc_u8string cache(YYCC::StringHelper::VPrintf(data, argptr)); \
|
||||||
|
cache.insert(0u, YYCC_U8("[" #ty "] ")); \
|
||||||
|
this->PrePrint(cache.c_str()); \
|
||||||
|
YYCC::ConsoleHelper::WriteLine(cache.c_str()); \
|
||||||
va_end(argptr);
|
va_end(argptr);
|
||||||
|
|
||||||
void Reporter::Err(const YYCC::yycc_char8_t* strl) const {
|
void Reporter::Err(const YYCC::yycc_char8_t* strl) const {
|
||||||
|
|||||||
Reference in new issue
Block a user