…lines 1–120 unchanged (120 lines)
121 * On failure, the call triggers an assertion and no ownership is transferred.
122 *
123 * The caller is responsible for managing the lifetime of the returned handle.
124 */
125 AggStageParseNodeHandle clone() const;
126
127 BSONObj toBsonForLog() const;
128
129 static void assertVTableConstraints(const VTable_t& vtable) {
130 tassert(11217600, "AggStageParseNode 'get_name' is null", vtable.get_name != nullptr);
131 tassert(10977600,
132 "AggStageParseNode 'get_query_shape' is null",
133 vtable.get_query_shape != nullptr);
134 tassert(11113800,
135 "AggStageParseNode 'get_expanded_size' is null",
136 vtable.get_expanded_size != nullptr);
137 tassert(10977601, "AggStageParseNode 'expand' is null", vtable.expand != nullptr);
138 tassert(11565500, "AggStageParseNode 'clone' is null", vtable.clone != nullptr);
139 tassert(11906801,
140 "AggStageParseNode 'to_bson_for_log' is null",
141 vtable.to_bson_for_log != nullptr);
142 }
143
144private:
145 /**
146 * Returns the number of elements the parse node will produce when expanded. This value is used
147 * by the host to size the ExpandedArray.
…lines 148–155 unchanged (8 lines)