143 ostream <<
"<pruned>\n";
147 for (
int i = 0; i < level; i++) {
148 if (parents[i] ==
object) {
150 ostream <<
"<recursion>\n";
158 ostream <<
"{...}\n";
163 parents[level] = object;
164 for (
int fieldIndex = 0; fieldIndex < descriptor->getFieldCount(); fieldIndex++) {
165 bool isArray = descriptor->getFieldIsArray(fieldIndex);
166 bool isPointer = descriptor->getFieldIsPointer(fieldIndex);
167 bool isCompound = descriptor->getFieldIsCompound(fieldIndex);
168 bool isCObject = descriptor->getFieldIsCObject(fieldIndex);
169 const char *fieldType = descriptor->getFieldTypeString(fieldIndex);
170 const char *fieldName = descriptor->getFieldName(fieldIndex);
172 int size = isArray ? descriptor->getFieldArraySize(
object, fieldIndex) : 1;
173 for (
int elementIndex = 0; elementIndex < size; elementIndex++) {
174 any_ptr fieldValue = isCompound ? descriptor->getFieldStructValuePointer(
object, fieldIndex, elementIndex) : any_ptr(
nullptr);
178 result =
recursionPredicate(
object, descriptor, fieldIndex, fieldValue, parents, level);
179 if (result ==
SKIP || (descriptor->extendsCObject() && !
matchesObjectField(fromAnyPtr<cObject>(
object), fieldIndex)))
183 ostream << fieldType <<
" ";
187 ostream << fieldName;
190 ostream <<
"[" << elementIndex <<
"]";
194 if (fieldValue !=
nullptr) {
195 cClassDescriptor *fieldDescriptor = isCObject ? cClassDescriptor::getDescriptorFor(fromAnyPtr<cObject>(fieldValue)) :
196 cClassDescriptor::getDescriptorFor(descriptor->getFieldStructName(fieldIndex));
199 ostream << fromAnyPtr<cObject>(fieldValue)->getFullName() <<
"\n";
200 else if (isCObject && result ==
FULL_PATH)
201 ostream << fromAnyPtr<cObject>(fieldValue)->getFullPath() <<
"\n";
202 else if (fieldDescriptor) {
204 ostream <<
"class " << fromAnyPtr<cObject>(fieldValue)->getClassName() <<
" ";
206 ostream <<
"struct " << descriptor->getFieldStructName(fieldIndex) <<
" ";
214 std::string value = descriptor->getFieldValueAsString(
object, fieldIndex, elementIndex);
215 ostream <<
QUOTE(value.c_str()) <<
"\n";
219 ostream <<
"nullptr\n";
222 std::string value = descriptor->getFieldValueAsString(
object, fieldIndex, elementIndex);
223 ostream <<
QUOTE(value.c_str()) <<
"\n";