diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000..9d7a6b0
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,17 @@
+BasedOnStyle: Google
+IndentWidth: 4
+PointerAlignment: Left
+AccessModifierOffset: -4
+BreakBeforeBraces: Custom
+BraceWrapping:
+ AfterFunction: true
+ AfterClass: true
+Cpp11BracedListStyle: true
+ReflowComments: true
+SpacesBeforeTrailingComments: 3
+TabWidth: 4
+ConstructorInitializerAllOnOneLineOrOnePerLine: true
+ColumnLimit: 150
+AllowShortBlocksOnASingleLine: Never
+AllowShortFunctionsOnASingleLine: None
+AllowShortEnumsOnASingleLine: false
diff --git a/.clangd b/.clangd
new file mode 100644
index 0000000..21b2a03
--- /dev/null
+++ b/.clangd
@@ -0,0 +1,16 @@
+Hover:
+ ShowAKA: Yes
+CompileFlags:
+ Remove: [-fexec-charset=gbk]
+Diagnostics:
+ UnusedIncludes: None # 禁用未使用头文件提示
+ Suppress: [
+ anon_type_definition, # 禁用匿名的typedef提示
+ unused-variable, # 禁用未使用变量提示
+ unused-function, # 禁用未使用函数提示
+ unused-includes, # 禁用未使用的头文件提示
+ unused-parameter,
+ builtin_definition # clang 显示 mingw windows.h 中 definition of builtin function '__rdtsc
+ ]
+ ClangTidy:
+ Remove: misc-unused-alias-decls
diff --git a/.gitignore b/.gitignore
index e257658..797ff6c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,4 +31,12 @@
*.exe
*.out
*.app
-
+.vs
+out
+build
+.cache
+*.user
+.DS_Store
+.idea
+cmake-build-*
+compile_commands.json
\ No newline at end of file
diff --git a/.vscode/qt5.natvis b/.vscode/qt5.natvis
new file mode 100644
index 0000000..7d18567
--- /dev/null
+++ b/.vscode/qt5.natvis
@@ -0,0 +1,814 @@
+
+
+
+
+
+
+ {{{data1,Xb}-{data2,Xb}-{data3,Xb}-{(data4[0]),nvoXb}{(data4[1]),nvoXb}-{(data4[2]),nvoXb}{(data4[3]),nvoXb}{(data4[4]),nvoXb}{(data4[5]),nvoXb}{(data4[6]),nvoXb}{(data4[7]),nvoXb}}}
+
+
+
+
+ {{ x = {xp}, y = {yp} }}
+
+ - xp
+ - yp
+
+
+
+
+ {{ x = {x1}, y = {y1}, width = {x2 - x1 + 1}, height = {y2 - y1 + 1} }}
+
+ - x1
+ - y1
+ - x2 - x1 + 1
+ - y2 - y1 + 1
+
+
+
+
+ {{ x = {xp}, y = {yp}, width = {w}, height = {h} }}
+
+ - xp
+ - yp
+ - w
+ - h
+
+
+
+
+
+ {{ width = {wd}, height = {ht} }}
+
+ - wd
+ - ht
+
+
+
+
+
+ {{ start point = {pt1}, end point = {pt2} }}
+
+
+ {pt1}
+
+ pt1
+
+
+
+ {pt2}
+
+ pt2
+
+
+
+
+
+
+
+ {{ size = {d->size} }}
+
+ - d->ref.atomic._q_value
+
+ d->size
+ (QPoint*)((reinterpret_cast<char*>(d)) + d->offset)
+
+
+
+
+
+ {{ size = {d->size} }}
+
+ -
+ d->size > 0
+ && ((((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[0]).xp
+ == (((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[d->size - 1]).xp)
+ && ((((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[0]).yp
+ == (((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[d->size - 1]).yp)
+
+ - d->ref.atomic._q_value
+
+ d->size
+ (QPointF*)((reinterpret_cast<char*>(d)) + d->offset)
+
+
+
+
+
+ {{ x = {xp}, y = {yp} }}
+
+ - xp
+ - yp
+
+
+
+
+ {{ x = {xp}, y = {yp}, z = {zp} }}
+
+ - xp
+ - yp
+ - zp
+
+
+
+
+ {{ x = {xp}, y = {yp}, z = {zp}, w = {wp} }}
+
+ - xp
+ - yp
+ - zp
+ - wp
+
+
+
+
+
+ {{ m11 = {_m11}, m12 = {_m12}, m21 = {_m21}, m22 = {_m22}, ... }}
+
+
+ - _m11
+ - _m12
+ - _m21
+ - _m22
+ - _dx
+ - _dy
+
+
+
+
+
+ {{ m11 = {m[0][0]}, m12 = {m[1][0]}, m13 = {m[2][0]}, m14 = {m[3][0]}, ... }}
+
+
+ - m[0][0]
+ - m[1][0]
+ - m[2][0]
+ - m[3][0]
+ - m[0][1]
+ - m[1][1]
+ - m[2][1]
+ - m[3][1]
+ - m[0][2]
+ - m[1][2]
+ - m[2][2]
+ - m[3][2]
+ - m[0][3]
+ - m[1][3]
+ - m[2][3]
+ - m[3][3]
+
+
+
+
+
+ {{ horizontal = {static_cast<Policy>(bits.horPolicy)}, vertical = {static_cast<Policy>(bits.verPolicy)}, type = {ControlType(1 << bits.ctype)} }}
+
+
+
+ QSizePolicy::Policy::{static_cast<Policy>(bits.verPolicy)}
+
+
+ QSizePolicy::Policy::{static_cast<Policy>(bits.horPolicy)}
+
+
+ QSizePolicy::ControlType::{ControlType(1 << bits.ctype)}
+
+
+
+ Qt::Vertical (2)
+
+
+ Qt::Horizontal (1)
+
+
+ - static_cast<int>(bits.verStretch)
+ - static_cast<int>(bits.horStretch)
+ - bits.hfw == 1
+ - bits.wfh == 1
+
+
+
+
+ {ucs,c}
+ ucs,c
+
+ - ucs > 0xff ? '\0' : char(ucs),c
+ - ucs,c
+
+
+
+
+ {((reinterpret_cast<unsigned short*>(d)) + d->offset / 2),sub}
+ ((reinterpret_cast<unsigned short*>(d)) + d->offset / 2),sub
+
+ - d->size
+ - d->ref.atomic._q_value
+
+ d->size
+ ((reinterpret_cast<unsigned short*>(d)) + d->offset / 2),c
+
+
+
+
+
+
+ {m_string,[m_size]} u""
+ {offset() + m_position,[m_size]}
+
+ - m_position
+ - m_size
+
+ m_size
+ offset()+m_position
+
+
+
+
+
+ {m_data,[m_size]}
+ m_data,[m_size]
+
+ - m_size
+
+ m_size
+ m_data
+
+
+
+
+
+ {((reinterpret_cast<char*>(d)) + d->offset),sb}
+ ((reinterpret_cast<char*>(d)) + d->offset),sb
+
+ - d->size
+ - d->ref.atomic._q_value
+
+ d->size
+ ((reinterpret_cast<char*>(d)) + d->offset),c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {scheme()}://{host()}{path()}
+ {path()}
+
+ - scheme()
+ - username()
+ - password()
+ - host()
+ - path()
+ - query()
+ - fragment()
+
+
+
+
+ {{ size = {(d.d->size << 3) - *((reinterpret_cast<char*>(d.d)) + d.d->offset)} }}
+
+ - d.d->ref.atomic._q_value
+
+ (d.d->size << 3) - *((reinterpret_cast<char*>(d.d)) + d.d->offset)
+
+ (*(reinterpret_cast<const unsigned char*>((reinterpret_cast<char*>(d.d)) + d.d->offset) + 1
+ + ($i >> 3)) & (1 << ($i & 7))) != 0
+
+
+
+
+
+
+
+ {{ size = {s} }}
+
+ - a
+
+ s
+ ptr
+
+
+
+
+
+ {{ julian day = {jd} }}
+
+
+
+
+ {{ millisecond = {mds} }}
+ {{ milliseconds = {mds} }}
+
+ - mds / 3600000, d
+ - mds / 3600000, d
+ - (mds % 3600000) / 60000, d
+ - (mds % 3600000) / 60000, d
+ - (mds / 1000) % 60, d
+ - (mds / 1000) % 60, d
+ - mds % 1000, d
+ - mds % 1000, d
+
+
+
+
+ {d.pattern}
+
+
+
+
+ - ref._q_value
+
+
+
+
+ strong reference to shared pointer of type {"$T1"}
+
+ - value == 0
+ - d->weakref._q_value
+ - d->strongref._q_value
+
+
+
+
+ pointer to implicit shared object of type {"$T1"}
+
+ d
+
+
+
+
+ pointer to explicit shared object of type {"$T1"}
+
+ d
+
+
+
+
+ guarded pointer to subclass of QObject of type {"$T1"}
+
+ - wp.d == 0 || wp.d->strongref._q_value == 0 || wp.value == 0
+
+
+
+
+ weak reference to shared pointer of type {"$T1"}
+
+ - d == 0 || d->strongref._q_value == 0 || value == 0
+ - d->weakref._q_value
+ - d->strongref._q_value
+
+
+
+
+ scoped pointer to a dynamically allocated object of type {"$T1"}
+
+ - !d
+
+
+
+
+ scoped pointer to dynamically allocated array of objects of type {"$T1"}
+
+ - !d
+
+
+
+
+ ({first}, {second})
+
+ - first
+ - second
+
+
+
+
+
+ {{ size = {d->size} }}
+
+ - d->ref.atomic._q_value
+
+ d->size
+ ($T1*)((reinterpret_cast<char*>(d)) + d->offset)
+
+
+
+
+
+
+ {{ size = {d->end - d->begin} }}
+
+ - d->ref.atomic._q_value
+
+ d->end - d->begin
+ *reinterpret_cast<$T1*>((sizeof($T1) > sizeof(void*))
+ ? reinterpret_cast<Node*>(d->array + d->begin + $i)->v
+ : reinterpret_cast<$T1*>(d->array + d->begin + $i))
+
+
+
+
+
+
+ {{ size = {d->end - d->begin} }}
+
+ - d->ref.atomic._q_value
+
+ d->end - d->begin
+
+ *reinterpret_cast<QString*>((sizeof(QString) > sizeof(void*))
+ ? reinterpret_cast<Node*>(d->array + d->begin + $i)->v
+ : reinterpret_cast<QString*>(d->array + d->begin + $i))
+
+
+
+
+
+
+ {{ size = {d->end - d->begin} }}
+
+ - d->ref.atomic._q_value
+
+ d->end - d->begin
+
+ *reinterpret_cast<QVariant*>((sizeof(QVariant) > sizeof(void*))
+ ? reinterpret_cast<Node*>(d->array + d->begin + $i)->v
+ : reinterpret_cast<QVariant*>(d->array + d->begin + $i))
+
+
+
+
+
+
+ {{ size = {d->size} }}
+
+ - d->ref.atomic._q_value
+
+ d->size
+ d->n
+ n
+ (*(QLinkedListNode<$T1>*)this).t
+
+
+
+
+
+ ({key}, {value})
+
+ - key
+ - value
+
+
+
+
+
+ {{ size = {d->size} }}
+
+ - d->ref.atomic._q_value
+
+ d->size
+ d->header.left
+ left
+ right
+ *((QMapNode<$T1,$T2>*)this)
+
+
+
+
+
+ (empty)
+ ({key}, {value})
+
+ - key
+ - value
+ - next
+
+
+
+
+
+ {{ size = {d->size} }}
+
+
+ d->numBuckets
+ reinterpret_cast<Node **>(d->buckets)
+
+
+
+
+
+
+ d->size
+
+
+ node = *(bucket++)
+ --n
+
+
+ keyValuePair = reinterpret_cast<Node *>(node)
+ - keyValuePair->value
+ node = node->next
+
+
+
+
+
+
+
+ (empty)
+ ({key})
+
+ - key
+
+
+
+
+ {{ size = {q_hash.d->size} }}
+
+ q_hash
+
+
+
+
+ ({*keyPtr}, {*t})
+
+ - *keyPtr
+ - *t
+
+
+
+
+ {{ size = {hash.d->size} }}
+
+ - mx
+ - total
+ - hash.d->ref.atomic._q_value
+
+ hash.d->size
+ f
+ n
+ *((Node*)this)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row count = {(*d_ptr.d).rows()}, column count = {(*d_ptr.d).columns()} }}
+
+ - d_ptr.d,!
+ - (*d_ptr.d).rows()
+ - (*d_ptr.d).columns()
+
+
+
+
+
+
+ Invalid
+ {d.data.b}
+ {d.data.i}
+ {d.data.u}
+ {d.data.ll}
+ {d.data.ull}
+ {d.data.d}
+ {d.data.c}
+
+ {*((QMap<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QList<QVariant>*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QString*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QStringList*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QByteArray*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QBitArray*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QDate*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QTime*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+ DateTime
+ Url
+ Locale
+
+ {*((QRect*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QRectF*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QSize*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QSizeF*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QLine*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QLineF*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QPoint*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+
+ {*((QPointF*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+ RegExp
+ RegularExpression
+
+ {*((QHash<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))}
+
+ EasingCurve
+ Uuid
+ ModelIndex
+ LastCoreType
+ Font
+ Pixmap
+ Brush
+ Color
+ Palette
+ Image
+ Polygon
+ Region
+ Bitmap
+ Cursor
+ KeySequence
+ Pen
+ TextLength
+ TextFormat
+ Matrix
+ Transform
+ Matrix4x4
+ Vector2D
+ Vector3D
+ Vector4D
+ Quaternion
+ PolygonF
+ Icon
+ LastGuiType
+ SizePolicy
+ UserType
+ LastType
+
+
+
+
+
+ d.data.c
+
+
+ *((QString*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+
+ *((QByteArray*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+
+
+
+
+
+
+ *((QMap<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QList<QVariant>*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QString*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QStringList*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QByteArray*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QBitArray*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QDate*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QTime*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QRect*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QRectF*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QSize*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QSizeF*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QLine*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QLineF*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QPoint*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QPointF*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+ *((QHash<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr
+ : reinterpret_cast<const void *>(&d.data.ptr)))
+
+
+
+
+
+
+
diff --git a/.vscode/qt6.natvis b/.vscode/qt6.natvis
new file mode 100644
index 0000000..94c2260
--- /dev/null
+++ b/.vscode/qt6.natvis
@@ -0,0 +1,735 @@
+
+
+
+
+
+
+ {val}
+
+ - val
+
+
+
+
+
+
+
+ {{ x = {x,g}, y = {y,g}, z = {_extraData().z,g}, width = {width,g}, height = {height,g} }}
+ {{ x = {x,g}, y = {y,g}, width = {width,g}, height = {height,g} }}
+
+ - x
+ - y
+ - _extraData().z
+ - _extraData().scale
+ - _extraData().rotation
+ - _extraData().opacity
+ - width
+ - height
+ - implicitWidth
+ - implicitHeight
+ - effectiveVisible
+ - explicitEnable
+ - _objectName(),na
+ - parentItem
+ - childItems, nr
+
+
+
+
+ {d_ptr.d,na}
+
+ d_ptr.d
+
+
+
+
+ {{{data1,Xb}-{data2,Xb}-{data3,Xb}-{(data4[0]),nvoXb}{(data4[1]),nvoXb}-{(data4[2]),nvoXb}{(data4[3]),nvoXb}{(data4[4]),nvoXb}{(data4[5]),nvoXb}{(data4[6]),nvoXb}{(data4[7]),nvoXb}}}
+
+
+
+ {val}
+
+ - val
+
+
+
+
+ {_q_value}
+
+ - _q_value
+
+
+
+
+
+
+ empty
+ {_q_value}
+
+ - *value()
+
+
+
+
+
+ {{ x = {xp}, y = {yp} }}
+
+ - xp
+ - yp
+
+
+
+
+ {{ x = {x1}, y = {y1}, width = {x2 - x1 + 1}, height = {y2 - y1 + 1} }}
+
+ - x1
+ - y1
+ - x2 - x1 + 1
+ - y2 - y1 + 1
+
+
+
+
+ {{ x = {xp}, y = {yp}, width = {w}, height = {h} }}
+
+ - xp
+ - yp
+ - w
+ - h
+
+
+
+
+
+ {{ width = {wd}, height = {ht} }}
+
+ - wd
+ - ht
+
+
+
+
+
+ {{ start point = {pt1}, end point = {pt2} }}
+
+
+ {pt1}
+
+ pt1
+
+
+
+ {pt2}
+
+ pt2
+
+
+
+
+
+
+
+ {{ size={d->size} }}
+
+ - d->ref.atomic._q_value
+
+ d->size
+ (QPoint*)((reinterpret_cast<char*>(d)) + d->offset)
+
+
+
+
+
+ {{ size={d->size} }}
+
+ -
+ d->size > 0
+ && ((((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[0]).xp
+ == (((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[d->size - 1]).xp)
+ && ((((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[0]).yp
+ == (((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[d->size - 1]).yp)
+
+ - d->ref.atomic._q_value
+
+ d->size
+ (QPointF*)((reinterpret_cast<char*>(d)) + d->offset)
+
+
+
+
+
+ {{ x = {xp}, y = {yp} }}
+
+ - xp
+ - yp
+
+
+
+
+ {{ x = {xp}, y = {yp}, z = {zp} }}
+
+ - xp
+ - yp
+ - zp
+
+
+
+
+ {{ x = {xp}, y = {yp}, z = {zp}, w = {wp} }}
+
+ - xp
+ - yp
+ - zp
+ - wp
+
+
+
+
+
+ {{ m11 = {_m11}, m12 = {_m12}, m21 = {_m21}, m22 = {_m22}, ... }}
+
+
+ - _m11
+ - _m12
+ - _m21
+ - _m22
+ - _dx
+ - _dy
+
+
+
+
+
+ {{ m11 = {m[0][0]}, m12 = {m[1][0]}, m13 = {m[2][0]}, m14 = {m[3][0]}, ... }}
+
+
+ - m[0][0]
+ - m[1][0]
+ - m[2][0]
+ - m[3][0]
+ - m[0][1]
+ - m[1][1]
+ - m[2][1]
+ - m[3][1]
+ - m[0][2]
+ - m[1][2]
+ - m[2][2]
+ - m[3][2]
+ - m[0][3]
+ - m[1][3]
+ - m[2][3]
+ - m[3][3]
+
+
+
+
+
+ {{ horizontal = {static_cast<Policy>(bits.horPolicy)}, vertical = {static_cast<Policy>(bits.verPolicy)}, type = {ControlType(1 << bits.ctype)} }}
+
+
+
+ QSizePolicy::Policy::{static_cast<Policy>(bits.verPolicy)}
+
+
+ QSizePolicy::Policy::{static_cast<Policy>(bits.horPolicy)}
+
+
+ QSizePolicy::ControlType::{ControlType(1 << bits.ctype)}
+
+
+
+ Qt::Vertical (2)
+
+
+ Qt::Horizontal (1)
+
+
+ - static_cast<int>(bits.verStretch)
+ - static_cast<int>(bits.horStretch)
+ - bits.hfw == 1
+ - bits.wfh == 1
+
+
+
+
+ {ucs,c}
+ ucs,c
+
+ - ucs > 0xff ? '\0' : char(ucs),c
+ - ucs,c
+
+
+
+
+ "{(reinterpret_cast<unsigned short*>(d.ptr)),sub}"
+ (reinterpret_cast<unsigned short*>(d.ptr)),sub
+
+ - d.size
+
+ d.size
+ d.ptr
+
+
+
+
+
+ {m_string,[m_size]} u""
+ {m_string->d.ptr+m_position,[m_size]}
+ ""
+ m_string,[m_position+m_size]
+
+ - m_position
+ - m_size
+
+ m_size
+ m_string->d.ptr+m_position
+
+
+
+
+
+ {m_data,[m_size]}
+ m_data,[m_size]
+
+ - m_size
+
+ m_size
+ m_data
+
+
+
+
+
+ "{((reinterpret_cast<char*>(d.ptr))),sb}"
+ ((reinterpret_cast<char*>(d.ptr))),sb
+
+ - d.size
+
+ d.size
+ d.ptr
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {scheme()}://{host()}{path()}
+ {path()}
+
+ - scheme()
+ - username()
+ - password()
+ - host()
+ - path()
+ - query()
+ - fragment()
+
+
+
+
+ {{ julian day = {jd} }}
+
+
+
+
+
+
+
+ {{ millisecond = {mds} }}
+ {{ milliseconds = {mds} }}
+
+ - hour(), d
+ - hour(), d
+ - minute(), d
+ - minute(), d
+ - second(), d
+ - second(), d
+ - millisecond(), d
+ - millisecond(), d
+
+
+
+
+ ({first}, {second})
+
+ - first
+ - second
+
+
+
+
+
+ {{ size={d.size} }}
+
+
+ d.size
+ reinterpret_cast<$T1*>(d.ptr)
+
+
+
+
+
+ {{ size={s} }}
+
+ - a
+
+ s
+ ptr
+
+
+
+
+
+
+ {{ size={d.d->m._Mypair._Myval2._Myval2._Mysize} }}
+
+
+ d.d->m._Mypair._Myval2._Myval2._Mysize
+ d.d->m._Mypair._Myval2._Myval2._Myhead->_Parent
+ _Left
+ _Right
+ _Myval,view(MapHelper)
+
+
+
+
+
+ {second}
+
+
+
+ {value}
+
+ - key
+ - value
+
+
+
+
+ {value->value}
+ ({value->value}, {value->next->value})
+ ({value->value}, {value->next->value}, ...)
+
+
+ value
+ next
+ value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ size={d->size} }}
+
+
+
+
+ d->size
+
+
+ - getNode(iSpan, 0)
+ - getNode(iSpan, 1)
+ - getNode(iSpan, 2)
+ - getNode(iSpan, 3)
+ - getNode(iSpan, 4)
+ - getNode(iSpan, 5)
+ - getNode(iSpan, 6)
+ - getNode(iSpan, 7)
+ - getNode(iSpan, 8)
+ - getNode(iSpan, 9)
+ - getNode(iSpan, 10)
+ - getNode(iSpan, 11)
+ - getNode(iSpan, 12)
+ - getNode(iSpan, 13)
+ - getNode(iSpan, 14)
+ - getNode(iSpan, 15)
+ - getNode(iSpan, 16)
+ - getNode(iSpan, 17)
+ - getNode(iSpan, 18)
+ - getNode(iSpan, 19)
+ - getNode(iSpan, 20)
+ - getNode(iSpan, 21)
+ - getNode(iSpan, 22)
+ - getNode(iSpan, 23)
+ - getNode(iSpan, 24)
+ - getNode(iSpan, 25)
+ - getNode(iSpan, 26)
+ - getNode(iSpan, 27)
+ - getNode(iSpan, 28)
+ - getNode(iSpan, 29)
+ - getNode(iSpan, 30)
+ - getNode(iSpan, 31)
+ - getNode(iSpan, 32)
+ - getNode(iSpan, 33)
+ - getNode(iSpan, 34)
+ - getNode(iSpan, 35)
+ - getNode(iSpan, 36)
+ - getNode(iSpan, 37)
+ - getNode(iSpan, 38)
+ - getNode(iSpan, 39)
+ - getNode(iSpan, 40)
+ - getNode(iSpan, 41)
+ - getNode(iSpan, 42)
+ - getNode(iSpan, 43)
+ - getNode(iSpan, 44)
+ - getNode(iSpan, 45)
+ - getNode(iSpan, 46)
+ - getNode(iSpan, 47)
+ - getNode(iSpan, 48)
+ - getNode(iSpan, 49)
+ - getNode(iSpan, 50)
+ - getNode(iSpan, 51)
+ - getNode(iSpan, 52)
+ - getNode(iSpan, 53)
+ - getNode(iSpan, 54)
+ - getNode(iSpan, 55)
+ - getNode(iSpan, 56)
+ - getNode(iSpan, 57)
+ - getNode(iSpan, 58)
+ - getNode(iSpan, 59)
+ - getNode(iSpan, 60)
+ - getNode(iSpan, 61)
+ - getNode(iSpan, 62)
+ - getNode(iSpan, 63)
+ - getNode(iSpan, 64)
+ - getNode(iSpan, 65)
+ - getNode(iSpan, 66)
+ - getNode(iSpan, 67)
+ - getNode(iSpan, 68)
+ - getNode(iSpan, 69)
+ - getNode(iSpan, 70)
+ - getNode(iSpan, 71)
+ - getNode(iSpan, 72)
+ - getNode(iSpan, 73)
+ - getNode(iSpan, 74)
+ - getNode(iSpan, 75)
+ - getNode(iSpan, 76)
+ - getNode(iSpan, 77)
+ - getNode(iSpan, 78)
+ - getNode(iSpan, 79)
+ - getNode(iSpan, 80)
+ - getNode(iSpan, 81)
+ - getNode(iSpan, 82)
+ - getNode(iSpan, 83)
+ - getNode(iSpan, 84)
+ - getNode(iSpan, 85)
+ - getNode(iSpan, 86)
+ - getNode(iSpan, 87)
+ - getNode(iSpan, 88)
+ - getNode(iSpan, 89)
+ - getNode(iSpan, 90)
+ - getNode(iSpan, 91)
+ - getNode(iSpan, 92)
+ - getNode(iSpan, 93)
+ - getNode(iSpan, 94)
+ - getNode(iSpan, 95)
+ - getNode(iSpan, 96)
+ - getNode(iSpan, 97)
+ - getNode(iSpan, 98)
+ - getNode(iSpan, 99)
+ - getNode(iSpan, 100)
+ - getNode(iSpan, 101)
+ - getNode(iSpan, 102)
+ - getNode(iSpan, 103)
+ - getNode(iSpan, 104)
+ - getNode(iSpan, 105)
+ - getNode(iSpan, 106)
+ - getNode(iSpan, 107)
+ - getNode(iSpan, 108)
+ - getNode(iSpan, 109)
+ - getNode(iSpan, 110)
+ - getNode(iSpan, 111)
+ - getNode(iSpan, 112)
+ - getNode(iSpan, 113)
+ - getNode(iSpan, 114)
+ - getNode(iSpan, 115)
+ - getNode(iSpan, 116)
+ - getNode(iSpan, 117)
+ - getNode(iSpan, 118)
+ - getNode(iSpan, 119)
+ - getNode(iSpan, 120)
+ - getNode(iSpan, 121)
+ - getNode(iSpan, 122)
+ - getNode(iSpan, 123)
+ - getNode(iSpan, 124)
+ - getNode(iSpan, 125)
+ - getNode(iSpan, 126)
+ - getNode(iSpan, 127)
+ iSpan++
+
+
+
+
+
+
+
+ {{ size={q_hash.d->size} }}
+
+ q_hash
+
+
+
+
+
+
+
+
+
+
+
+ (null)
+
+
+ QObject*
+
+
+ {*(QMap<QString,QVariant>*) sharedDataStar()}
+ {*(QList<QVariant>*) sharedDataStar()}
+ {*(QHash<QString,QVariant>*) sharedDataStar()}
+ QVariantPair
+ {*(QList<QByteArray>*) sharedDataStar()}
+ {*(QList<QString>*) sharedDataStar()}
+
+
+ {*(bool*) dataStar()}
+ {*(int*) dataStar()}
+ {*(unsigned int*) dataStar()}
+ {*(long long*) dataStar()}
+ {*(unsigned long long*) dataStar()}
+ {*(double*) dataStar()}
+ {*(void**) dataStar()}
+ {*(long*) dataStar()}
+ {*(short*) dataStar()}
+ {*(char*) dataStar()}
+ {*(char16_t*) dataStar()}
+ {*(char32_t*) dataStar()}
+ {*(unsigned long*) dataStar()}
+ {*(unsigned short*) dataStar()}
+ {*(unsigned char*) dataStar()}
+ {*(float*) dataStar()}
+ {*(signed char*) dataStar()}
+
+
+ {*(QChar*) sharedDataStar()}
+ {*(QString*) sharedDataStar()}
+ {*(QByteArray*) sharedDataStar()}
+ {*(QDate*) sharedDataStar()}
+ {*(QTime*) sharedDataStar()}
+ QDateTime
+ QUrl
+ QLocale
+ {*(QRect*) sharedDataStar()}
+ {*(QRectF*) sharedDataStar()}
+ {*(QSize*) sharedDataStar()}
+ {*(QSizeF*) sharedDataStar()}
+ {*(QLine*) sharedDataStar()}
+ {*(QLineF*) sharedDataStar()}
+ {*(QPoint*) sharedDataStar()}
+ {*(QPointF*) sharedDataStar()}
+ EasingCurve
+ Uuid
+ RegularExpression
+ QJsonValue
+ QJsonObject
+ QJsonArray
+ QJsonDocument
+ QCborValue
+ QCborArray
+ QCborMap
+ ModelIndex
+ QPersistentModelIndex
+
+
+ QFont
+ QPixmap
+ QBrush
+ QColor
+ QPalette
+ QIcon
+ QImage
+ QPolygon
+ QRegion
+ QBitmap
+ QCursor
+ QKeySequence
+ QPen
+ QTextLength
+ QTextFormat
+ QTransform
+ QMatrix4x4
+ QVector2D
+ QVector3D
+ QVector4D
+ QQuaternion
+ QPolygonF
+ QColorSpace
+
+
+ QSizePolicy
+
+
+ QMetaType::Type ({typeId()})
+
+
+ *(QString*) sharedDataStar()
+ *(QByteArray*) sharedDataStar()
+ *(QDate*) sharedDataStar()
+ *(QTime*) sharedDataStar()
+ *(QRect*) sharedDataStar()
+ *(QRectF*) sharedDataStar()
+ *(QSize*) sharedDataStar()
+ *(QSizeF*) sharedDataStar()
+ *(QLine*) sharedDataStar()
+ *(QLineF*) sharedDataStar()
+ *(QPoint*) sharedDataStar()
+ *(QPointF*) sharedDataStar()
+
+ *(QMap<QString,QVariant>*) sharedDataStar()
+ *(QList<QVariant>*) sharedDataStar()
+ *(QHash<QString,QVariant>*) sharedDataStar()
+ *(QList<QByteArray>*) sharedDataStar()
+ *(QList<QString>*) sharedDataStar()
+
+
+
+
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..4ee8847
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,141 @@
+{
+ "files.autoSave": "onFocusChange",
+ "editor.fontSize": 13,
+ "editor.fontFamily": "'BlexMono Nerd Font Mono', 'BlexMono Nerd Font Mono', 'BlexMono Nerd Font Mono'",
+ "editor.fontLigatures": true,
+ "cmake.configureOnOpen": true,
+ "cmake.debugConfig": {
+ "console": "integratedTerminal",
+ "setupCommands": [
+ {
+ "description": "-gdb-set charset utf-8",
+ "text": "-gdb-set charset UTF-8"
+ },
+ {
+ "description": "Enable gdb pretty-printing",
+ "text": "-enable-pretty-printing",
+ "ignoreFailures": true
+ }
+ ],
+ "visualizerFile": "${workspaceRoot}/.vscode/qt5.natvis",
+ "args": [
+ "-n", "DEV1", "-show"
+ ]
+ },
+ "cmake.environment": {
+ "PATH": "${env:PATH};C:/Qt/Qt5.14.2/5.14.2/msvc2017_64/bin;D:/env/ctf-win-bin/ctf/bin/Debug;R:/ctf/bin/Debug;",
+ "LD_LIBRARY_PATH": "$LD_LIBRARY_PATH:/home/taynpg/ctf-bin/ctf/bin/Debug:/home/lebo/ctf-bin/ctf/bin/Debug"
+ },
+ "cmake.options.statusBarVisibility": "visible",
+ "cmake.generator": "Ninja",
+ "C_Cpp.default.compileCommands": "${workspaceRoot}/build/compile_commands.json",
+ "C_Cpp.default.cppStandard": "c++17",
+ "editor.inlayHints.enabled": "off",
+ "editor.unicodeHighlight.allowedLocales": {
+ "ja": true,
+ "zh-hant": true,
+ "zh-hans": true
+ },
+ "files.associations": {
+ "xstring": "cpp",
+ "vector": "cpp",
+ "string": "cpp",
+ "algorithm": "cpp",
+ "any": "cpp",
+ "array": "cpp",
+ "atomic": "cpp",
+ "bitset": "cpp",
+ "cctype": "cpp",
+ "chrono": "cpp",
+ "cinttypes": "cpp",
+ "clocale": "cpp",
+ "cmath": "cpp",
+ "codecvt": "cpp",
+ "complex": "cpp",
+ "condition_variable": "cpp",
+ "csignal": "cpp",
+ "cstdarg": "cpp",
+ "cstddef": "cpp",
+ "cstdint": "cpp",
+ "cstdio": "cpp",
+ "cstdlib": "cpp",
+ "cstring": "cpp",
+ "ctime": "cpp",
+ "cwchar": "cpp",
+ "cwctype": "cpp",
+ "deque": "cpp",
+ "exception": "cpp",
+ "filesystem": "cpp",
+ "forward_list": "cpp",
+ "fstream": "cpp",
+ "functional": "cpp",
+ "future": "cpp",
+ "initializer_list": "cpp",
+ "iomanip": "cpp",
+ "ios": "cpp",
+ "iosfwd": "cpp",
+ "iostream": "cpp",
+ "istream": "cpp",
+ "iterator": "cpp",
+ "limits": "cpp",
+ "list": "cpp",
+ "locale": "cpp",
+ "map": "cpp",
+ "memory": "cpp",
+ "mutex": "cpp",
+ "new": "cpp",
+ "numeric": "cpp",
+ "optional": "cpp",
+ "ostream": "cpp",
+ "queue": "cpp",
+ "random": "cpp",
+ "ratio": "cpp",
+ "set": "cpp",
+ "shared_mutex": "cpp",
+ "sstream": "cpp",
+ "stdexcept": "cpp",
+ "streambuf": "cpp",
+ "string_view": "cpp",
+ "strstream": "cpp",
+ "system_error": "cpp",
+ "thread": "cpp",
+ "tuple": "cpp",
+ "type_traits": "cpp",
+ "typeindex": "cpp",
+ "typeinfo": "cpp",
+ "unordered_map": "cpp",
+ "utility": "cpp",
+ "valarray": "cpp",
+ "variant": "cpp",
+ "xfacet": "cpp",
+ "xhash": "cpp",
+ "xiosbase": "cpp",
+ "xlocale": "cpp",
+ "xlocbuf": "cpp",
+ "xlocinfo": "cpp",
+ "xlocmes": "cpp",
+ "xlocmon": "cpp",
+ "xlocnum": "cpp",
+ "xloctime": "cpp",
+ "xmemory": "cpp",
+ "xmemory0": "cpp",
+ "xstddef": "cpp",
+ "xtr1common": "cpp",
+ "xtree": "cpp",
+ "xutility": "cpp",
+ "qbytearray": "cpp",
+ "*.ipp": "cpp",
+ "xthread": "cpp",
+ "*.tcc": "cpp",
+ "regex": "cpp",
+ "bit": "cpp",
+ "memory_resource": "cpp",
+ "source_location": "cpp",
+ "charconv": "cpp",
+ "compare": "cpp",
+ "concepts": "cpp",
+ "coroutine": "cpp",
+ "format": "cpp",
+ "stop_token": "cpp"
+ }
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 2962628..ddc0581 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,6 @@
# SockGrab
-Socket通信,TCP、UDP包抓取与分析小工具,主要用于学习与练习网络通讯用。
\ No newline at end of file
+Socket通信,TCP、UDP包抓取与分析小工具,主要用于学习与练习网络通讯用。
+
+# 疑问记录
+