@tencent-ai/codebuddy-code 2.100.1 → 2.101.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/dist/codebuddy-headless.js +153 -150
- package/dist/codebuddy.js +149 -146
- package/dist/web-ui/assets/index-9X2LkU-w.css +32 -0
- package/dist/web-ui/assets/{index-DlV6l3G1.js → index-Co5qIufv.js} +116 -116
- package/dist/web-ui/index.html +2 -2
- package/dist/web-ui/sw.js +1 -1
- package/package.json +1 -1
- package/product.cloudhosted.json +2 -2
- package/product.internal.json +2 -2
- package/product.ioa.json +2 -2
- package/product.json +4 -4
- package/product.selfhosted.json +2 -2
- package/vendor/sandbox/SandboxExt.xcframework/Info.plist +30 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Headers/SandboxExt-Swift.h +900 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Headers/SandboxExt.h +34 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Headers/fileprovider_bridge.h +125 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Headers/projfs_types.h +34 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Headers/xlog_bridge.h +106 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Modules/SandboxExt.swiftmodule/arm64-apple-macos.abi.json +43957 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Modules/SandboxExt.swiftmodule/arm64-apple-macos.package.swiftinterface +1085 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Modules/SandboxExt.swiftmodule/arm64-apple-macos.private.swiftinterface +1084 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Modules/SandboxExt.swiftmodule/arm64-apple-macos.swiftdoc +0 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Modules/SandboxExt.swiftmodule/arm64-apple-macos.swiftinterface +1084 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Modules/SandboxExt.swiftmodule/x86_64-apple-macos.abi.json +43957 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Modules/SandboxExt.swiftmodule/x86_64-apple-macos.package.swiftinterface +1085 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Modules/SandboxExt.swiftmodule/x86_64-apple-macos.private.swiftinterface +1084 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Modules/SandboxExt.swiftmodule/x86_64-apple-macos.swiftdoc +0 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Modules/SandboxExt.swiftmodule/x86_64-apple-macos.swiftinterface +1084 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Modules/module.modulemap +10 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/Resources/Info.plist +46 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/SandboxExt +3 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/SandboxExt.framework/Versions/A/_CodeSignature/CodeResources +240 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/dSYMs/SandboxExt.framework.dSYM/Contents/Info.plist +20 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/dSYMs/SandboxExt.framework.dSYM/Contents/Resources/DWARF/SandboxExt +3 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/dSYMs/SandboxExt.framework.dSYM/Contents/Resources/Relocations/aarch64/SandboxExt.yml +3413 -0
- package/vendor/sandbox/SandboxExt.xcframework/macos-arm64_x86_64/dSYMs/SandboxExt.framework.dSYM/Contents/Resources/Relocations/x86_64/SandboxExt.yml +3390 -0
- package/vendor/sandbox/WorkBuddySandboxHelper +3 -0
- package/vendor/sandbox/WorkbuddyFileProvider.appex/Contents/Info.plist +59 -0
- package/vendor/sandbox/WorkbuddyFileProvider.appex/Contents/MacOS/WorkbuddyFileProvider +3 -0
- package/vendor/sandbox/WorkbuddyFileProvider.appex/Contents/_CodeSignature/CodeResources +123 -0
- package/vendor/sandbox/WorkbuddyFileProvider.appex/Contents/embedded.provisionprofile +0 -0
- package/vendor/sandbox/WorkbuddyNetworkExtension.appex/Contents/Info.plist +55 -0
- package/vendor/sandbox/WorkbuddyNetworkExtension.appex/Contents/MacOS/WorkbuddyNetworkExtension +3 -0
- package/vendor/sandbox/WorkbuddyNetworkExtension.appex/Contents/_CodeSignature/CodeResources +123 -0
- package/vendor/sandbox/WorkbuddyNetworkExtension.appex/Contents/embedded.provisionprofile +0 -0
- package/vendor/sandbox/libsandbox_ffi.dylib +3 -0
- package/vendor/sandbox/sandbox-cli +0 -0
- package/vendor/sandbox/sandbox-cli.exe +0 -0
- package/vendor/sandbox/sandbox_ffi.dll +0 -0
- package/vendor/sandbox/tsbx.dll +0 -0
- package/vendor/sandbox/tsbx_sdk.dll +0 -0
- package/dist/web-ui/assets/index-DOB9MrWi.css +0 -32
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// SandboxExt.h — SandboxExt.framework 的 umbrella header
|
|
2
|
+
//
|
|
3
|
+
// 业务方接入说明:
|
|
4
|
+
// Swift 业务代码只需 `import SandboxExt` 即可使用 SDK 的全部 Swift API;
|
|
5
|
+
// 暴露给 Swift 的 C 符号(xlog 日志引擎 / projfs 数据结构 / FileProvider API)
|
|
6
|
+
// 通过本 umbrella header 自动并入模块,无需 Bridging Header 或额外 import。
|
|
7
|
+
//
|
|
8
|
+
// C 调用方(Electron / C / C++ 代码)可通过 dlopen/dlsym 动态链接 SandboxExt.framework
|
|
9
|
+
// 并调用导出的 C 符号,例如:
|
|
10
|
+
//
|
|
11
|
+
// handle = dlopen("path/to/SandboxExt.framework/SandboxExt", RTLD_NOW);
|
|
12
|
+
// preregister = dlsym(handle, "fileprovider_preregister_domain");
|
|
13
|
+
// (*preregister)(0); // 30s default timeout
|
|
14
|
+
|
|
15
|
+
#ifndef SANDBOX_EXT_UMBRELLA_H
|
|
16
|
+
#define SANDBOX_EXT_UMBRELLA_H
|
|
17
|
+
|
|
18
|
+
#ifdef __OBJC__
|
|
19
|
+
#import <Foundation/Foundation.h>
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
// xlog 日志引擎 C API(供 SandboxExt 内部 XLog.swift 与外部业务方使用)
|
|
23
|
+
#import <SandboxExt/xlog_bridge.h>
|
|
24
|
+
|
|
25
|
+
// projfs FFI 数据结构(FileProvider Extension 实现使用,对外暴露便于业务方扩展)
|
|
26
|
+
#import <SandboxExt/projfs_types.h>
|
|
27
|
+
|
|
28
|
+
// FileProvider domain registration & management C API(供 Electron 主进程及其他 C 调用方使用)
|
|
29
|
+
#import <SandboxExt/fileprovider_bridge.h>
|
|
30
|
+
|
|
31
|
+
FOUNDATION_EXPORT double SandboxExtVersionNumber;
|
|
32
|
+
FOUNDATION_EXPORT const unsigned char SandboxExtVersionString[];
|
|
33
|
+
|
|
34
|
+
#endif /* SANDBOX_EXT_UMBRELLA_H */
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// fileprovider_bridge.h — SandboxExt FileProvider C API
|
|
2
|
+
//
|
|
3
|
+
// C-callable interface for FileProvider domain registration and management.
|
|
4
|
+
// Enables Electron and other C callers to register FileProvider domains
|
|
5
|
+
// without Swift language bindings, using dlopen/dlsym dynamic linking.
|
|
6
|
+
//
|
|
7
|
+
// All async operations are bridged to sync C contexts with configurable timeouts.
|
|
8
|
+
// Typical operations complete in <5 seconds; default timeout is 30 seconds.
|
|
9
|
+
//
|
|
10
|
+
// Error reporting:
|
|
11
|
+
// - Return value: true = success, false = failure
|
|
12
|
+
// - On failure: call fileprovider_last_error() to get detailed error message
|
|
13
|
+
// - Error strings are UTF-8, valid until next FFI call on same thread
|
|
14
|
+
//
|
|
15
|
+
// Thread safety:
|
|
16
|
+
// - Each thread has its own error string storage
|
|
17
|
+
// - Error strings from one thread don't affect other threads
|
|
18
|
+
// - FFI functions dispatch to main thread if needed for async operations
|
|
19
|
+
|
|
20
|
+
#ifndef FILEPROVIDER_BRIDGE_H
|
|
21
|
+
#define FILEPROVIDER_BRIDGE_H
|
|
22
|
+
|
|
23
|
+
#include <stdbool.h>
|
|
24
|
+
#include <stdint.h>
|
|
25
|
+
|
|
26
|
+
#ifdef __cplusplus
|
|
27
|
+
extern "C" {
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Error handling
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
|
|
34
|
+
/// Get the most recent error message from a FileProvider operation.
|
|
35
|
+
/// Returns a pointer to a null-terminated UTF-8 string, or NULL if no error.
|
|
36
|
+
/// Pointer remains valid until the next FFI call on this thread.
|
|
37
|
+
///
|
|
38
|
+
/// Example usage:
|
|
39
|
+
/// if (!fileprovider_preregister_domain(0)) {
|
|
40
|
+
/// fprintf(stderr, "Error: %s\n", fileprovider_last_error());
|
|
41
|
+
/// }
|
|
42
|
+
const char* fileprovider_last_error(void);
|
|
43
|
+
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// Domain registration
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
|
|
48
|
+
/// Pre-register FileProvider domain group 0 (if not already registered).
|
|
49
|
+
///
|
|
50
|
+
/// Makes the FileProvider extension visible in macOS system settings,
|
|
51
|
+
/// allowing the user to enable/disable it. Safe to call multiple times.
|
|
52
|
+
/// If domain is already registered, this returns success without re-registering.
|
|
53
|
+
///
|
|
54
|
+
/// Timeout handling:
|
|
55
|
+
/// - timeoutMs = 0: use default 30000ms (30 seconds)
|
|
56
|
+
/// - timeoutMs > 0: use specified timeout in milliseconds
|
|
57
|
+
///
|
|
58
|
+
/// Return value:
|
|
59
|
+
/// - true: domain pre-registered successfully or already exists
|
|
60
|
+
/// - false: pre-registration failed; call fileprovider_last_error() for details
|
|
61
|
+
///
|
|
62
|
+
/// Example usage:
|
|
63
|
+
/// bool ok = fileprovider_preregister_domain(0); // 30s timeout
|
|
64
|
+
/// if (!ok) {
|
|
65
|
+
/// fprintf(stderr, "Domain registration failed: %s\n",
|
|
66
|
+
/// fileprovider_last_error());
|
|
67
|
+
/// }
|
|
68
|
+
bool fileprovider_preregister_domain(uint32_t timeoutMs);
|
|
69
|
+
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
// Extension status
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
|
|
74
|
+
/// Check if FileProvider extension is enabled in system settings.
|
|
75
|
+
///
|
|
76
|
+
/// Timeout handling: same as fileprovider_preregister_domain()
|
|
77
|
+
///
|
|
78
|
+
/// Parameters:
|
|
79
|
+
/// - timeoutMs: operation timeout (0 = default 30000ms)
|
|
80
|
+
/// - outEnabled: pointer to bool where result is stored
|
|
81
|
+
/// can be NULL to ignore result (fire-and-forget check)
|
|
82
|
+
///
|
|
83
|
+
/// Return value:
|
|
84
|
+
/// - true: check succeeded; if outEnabled != NULL, it contains result
|
|
85
|
+
/// - false: check failed; call fileprovider_last_error() for details
|
|
86
|
+
///
|
|
87
|
+
/// Note: Returns true if unable to determine (e.g., no domains exist yet).
|
|
88
|
+
///
|
|
89
|
+
/// Example usage:
|
|
90
|
+
/// bool enabled = false;
|
|
91
|
+
/// if (fileprovider_is_extension_enabled(0, &enabled)) {
|
|
92
|
+
/// printf("Extension enabled: %s\n", enabled ? "yes" : "no");
|
|
93
|
+
/// } else {
|
|
94
|
+
/// fprintf(stderr, "Check failed: %s\n", fileprovider_last_error());
|
|
95
|
+
/// }
|
|
96
|
+
bool fileprovider_is_extension_enabled(uint32_t timeoutMs, bool* outEnabled);
|
|
97
|
+
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
// Maintenance
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
|
|
102
|
+
/// Clean up legacy FileProvider domains from previous versions.
|
|
103
|
+
///
|
|
104
|
+
/// Removes domains with old prefix strings (e.g., "sandbox-sb-*", "workbuddy-sdb-*")
|
|
105
|
+
/// that are no longer used by current application version. Safe to call even if
|
|
106
|
+
/// no legacy domains exist.
|
|
107
|
+
///
|
|
108
|
+
/// Timeout handling: same as fileprovider_preregister_domain()
|
|
109
|
+
///
|
|
110
|
+
/// Return value:
|
|
111
|
+
/// - true: cleanup succeeded (or no legacy domains found)
|
|
112
|
+
/// - false: cleanup failed; call fileprovider_last_error() for details
|
|
113
|
+
///
|
|
114
|
+
/// Example usage:
|
|
115
|
+
/// if (!fileprovider_cleanup_legacy_domains(0)) {
|
|
116
|
+
/// fprintf(stderr, "Legacy cleanup failed: %s\n",
|
|
117
|
+
/// fileprovider_last_error());
|
|
118
|
+
/// }
|
|
119
|
+
bool fileprovider_cleanup_legacy_domains(uint32_t timeoutMs);
|
|
120
|
+
|
|
121
|
+
#ifdef __cplusplus
|
|
122
|
+
}
|
|
123
|
+
#endif
|
|
124
|
+
|
|
125
|
+
#endif // FILEPROVIDER_BRIDGE_H
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// 对应 Rust projfs/ffi.rs 中的 #[repr(C)] 结构体定义
|
|
2
|
+
// 通过 bridging header 导入 Swift,使其可用于 @convention(c) 函数指针
|
|
3
|
+
|
|
4
|
+
#ifndef projfs_types_h
|
|
5
|
+
#define projfs_types_h
|
|
6
|
+
|
|
7
|
+
#include <stdint.h>
|
|
8
|
+
#include <stddef.h>
|
|
9
|
+
#include <stdbool.h>
|
|
10
|
+
|
|
11
|
+
typedef struct {
|
|
12
|
+
const char *name;
|
|
13
|
+
const char *relative_path;
|
|
14
|
+
bool is_directory;
|
|
15
|
+
int64_t size;
|
|
16
|
+
double mod_date;
|
|
17
|
+
} ProjfsItemMeta;
|
|
18
|
+
|
|
19
|
+
typedef struct {
|
|
20
|
+
ProjfsItemMeta *items;
|
|
21
|
+
long count;
|
|
22
|
+
} ProjfsItemList;
|
|
23
|
+
|
|
24
|
+
typedef struct {
|
|
25
|
+
const char *relative_path;
|
|
26
|
+
int32_t change_type;
|
|
27
|
+
} ProjfsChangeRecord;
|
|
28
|
+
|
|
29
|
+
typedef struct {
|
|
30
|
+
ProjfsChangeRecord *items;
|
|
31
|
+
long count;
|
|
32
|
+
} ProjfsChangeList;
|
|
33
|
+
|
|
34
|
+
#endif /* projfs_types_h */
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// xlog_bridge.h — WorkBuddy xlog C bridge
|
|
2
|
+
//
|
|
3
|
+
// 轻量级高性能日志引擎,灵感来自腾讯 mars/xlog,提供:
|
|
4
|
+
// - mmap 缓冲写入(进程异常退出不丢日志)
|
|
5
|
+
// - zlib 压缩(减少磁盘占用)
|
|
6
|
+
// - 异步写入(不阻塞业务线程)
|
|
7
|
+
// - 日志轮转(按大小 + 按天自动切分,自动清理过期文件)
|
|
8
|
+
//
|
|
9
|
+
// 本文件仅暴露纯 C 接口,供 Rust FFI 调用。
|
|
10
|
+
|
|
11
|
+
#ifndef WB_XLOG_BRIDGE_H
|
|
12
|
+
#define WB_XLOG_BRIDGE_H
|
|
13
|
+
|
|
14
|
+
#include <stdbool.h>
|
|
15
|
+
#include <stdint.h>
|
|
16
|
+
|
|
17
|
+
#ifdef __cplusplus
|
|
18
|
+
extern "C" {
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// 日志级别(与 Rust Level enum 对应)
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
|
|
25
|
+
enum WbXlogLevel {
|
|
26
|
+
WB_XLOG_LEVEL_ERROR = 0,
|
|
27
|
+
WB_XLOG_LEVEL_WARN = 1,
|
|
28
|
+
WB_XLOG_LEVEL_INFO = 2,
|
|
29
|
+
WB_XLOG_LEVEL_DEBUG = 3,
|
|
30
|
+
WB_XLOG_LEVEL_TRACE = 4,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// 写入模式
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
|
|
37
|
+
enum WbXlogMode {
|
|
38
|
+
WB_XLOG_MODE_ASYNC = 0, // 异步模式(默认):mmap 缓冲 + 后台线程刷盘
|
|
39
|
+
WB_XLOG_MODE_SYNC = 1, // 同步模式:每次 write 直接刷盘
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// 初始化配置
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
|
|
46
|
+
struct WbXlogConfig {
|
|
47
|
+
const char* log_dir; // 日志输出目录(必填)
|
|
48
|
+
const char* name_prefix; // 日志文件名前缀(必填),如 "sandbox_12345"(调用方可自行拼入 pid 实现多实例隔离)
|
|
49
|
+
int level; // 最大日志级别 (WbXlogLevel)
|
|
50
|
+
int mode; // 写入模式 (WbXlogMode)
|
|
51
|
+
uint64_t max_file_size; // 单文件最大字节数,0 = 默认 10MB
|
|
52
|
+
int max_alive_days; // 日志文件最大保留天数,0 = 默认 7 天
|
|
53
|
+
bool compress; // 是否启用 zlib 压缩
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
// 生命周期
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
|
|
60
|
+
/// 初始化 xlog 引擎。成功返回 true,失败返回 false。
|
|
61
|
+
/// 可重复调用,第二次及以后的调用将被忽略。
|
|
62
|
+
bool wb_xlog_init(const struct WbXlogConfig* config);
|
|
63
|
+
|
|
64
|
+
/// 关闭 xlog 引擎,刷盘并释放所有资源。
|
|
65
|
+
/// 关闭后再调用 write 会静默丢弃。
|
|
66
|
+
void wb_xlog_close(void);
|
|
67
|
+
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
// 日志写入
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
|
|
72
|
+
/// 写入一条日志。
|
|
73
|
+
/// @param level 日志级别
|
|
74
|
+
/// @param tag 模块标签(如 crate name)
|
|
75
|
+
/// @param file 源文件名(可为 NULL)
|
|
76
|
+
/// @param func 函数名(可为 NULL)
|
|
77
|
+
/// @param line 行号(0 表示未知)
|
|
78
|
+
/// @param msg 日志正文(UTF-8)
|
|
79
|
+
void wb_xlog_write(int level, const char* tag,
|
|
80
|
+
const char* file, const char* func, int line,
|
|
81
|
+
const char* msg);
|
|
82
|
+
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
// 控制
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
|
|
87
|
+
/// 刷盘(异步模式下通知后台线程,不阻塞)。
|
|
88
|
+
void wb_xlog_flush(void);
|
|
89
|
+
|
|
90
|
+
/// 同步刷盘(阻塞直到当前缓冲区全部落盘)。
|
|
91
|
+
void wb_xlog_flush_sync(void);
|
|
92
|
+
|
|
93
|
+
/// 动态修改日志级别。
|
|
94
|
+
void wb_xlog_set_level(int level);
|
|
95
|
+
|
|
96
|
+
/// 动态修改单文件最大字节数。
|
|
97
|
+
void wb_xlog_set_max_file_size(uint64_t max_bytes);
|
|
98
|
+
|
|
99
|
+
/// 动态修改日志保留天数。
|
|
100
|
+
void wb_xlog_set_max_alive_days(int days);
|
|
101
|
+
|
|
102
|
+
#ifdef __cplusplus
|
|
103
|
+
}
|
|
104
|
+
#endif
|
|
105
|
+
|
|
106
|
+
#endif // WB_XLOG_BRIDGE_H
|