You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`string_ref` exposes `is_na()` and `view()`, and implicitly converts to `std::string_view`.
107
107
- That implicit conversion is lossy for `NA` and yields an empty view.
108
108
109
+
## Compatibility Limits
110
+
111
+
qdata-cpp uses R-compatible size limits for serialized structure sizes:
112
+
113
+
- vector and list lengths are limited to `R_XLEN_T_MAX` compatibility (`2^52`)
114
+
- attribute counts are limited to `R_LEN_T_MAX` / `INT_MAX`
115
+
- string payload lengths and attribute-name lengths are limited to `INT_MAX`
116
+
117
+
These limits apply on both read and write. Native qdata-cpp therefore stays within the same intended R-compatible format subset instead of emitting or materializing larger structures that the R layer would later reject.
118
+
119
+
## Nesting Limit
120
+
121
+
qdata-cpp recursive read and write traversal uses a `max_depth` budget with a default of `512`.
122
+
123
+
This applies to nested list structure and recursively nested attribute values. The library rejects deeper inputs or objects instead of relying on unbounded native call-stack recursion.
124
+
125
+
## Attribute Semantics
126
+
127
+
Native qdata-cpp preserves attributes structurally as `name + object` pairs on the native object model.
128
+
129
+
It does not try to emulate R's special attribute setter semantics for attributes such as `dim`, `dimnames`, `class`, `tsp`, `row.names`, or `names`. Those semantics are interpreted in the R layer, not in the native qdata-cpp object model.
130
+
109
131
## Write-side traits
110
132
111
-
`C++ -> qdata` is more permissive than the read interface. It serializes directly from the source object whenever possible, and recurses naturally through nested containers.
133
+
`C++ -> qdata` is more permissive than the read interface. It serializes directly from the source object whenever possible, and recurses naturally through nested containers, within the compatibility and nesting limits described above.
0 commit comments