MCPcopy Create free account
hub / github.com/GarageGames/Torque3D / writeFields

Method writeFields

Engine/source/console/simObject.cpp:269–333  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

267//-----------------------------------------------------------------------------
268
269void SimObject::writeFields(Stream &stream, U32 tabStop)
270{
271 // Write static fields.
272
273 const AbstractClassRep::FieldList &list = getFieldList();
274
275 for(U32 i = 0; i < list.size(); i++)
276 {
277 const AbstractClassRep::Field* f = &list[i];
278
279 // Skip the special field types.
280 if ( f->type >= AbstractClassRep::ARCFirstCustomField )
281 continue;
282
283 for(U32 j = 0; S32(j) < f->elementCount; j++)
284 {
285 char array[8];
286 dSprintf( array, 8, "%d", j );
287 const char *val = getDataField(StringTable->insert( f->pFieldname ), array );
288
289 // Make a copy for the field check.
290 if (!val)
291 continue;
292
293 U32 nBufferSize = dStrlen( val ) + 1;
294 FrameTemp<char> valCopy( nBufferSize );
295 dStrcpy( (char *)valCopy, val );
296
297 if (!writeField(f->pFieldname, valCopy))
298 continue;
299
300 val = valCopy;
301
302 U32 expandedBufferSize = ( nBufferSize * 2 ) + dStrlen(f->pFieldname) + 32;
303 FrameTemp<char> expandedBuffer( expandedBufferSize );
304 if(f->elementCount == 1)
305 dSprintf(expandedBuffer, expandedBufferSize, "%s = \"", f->pFieldname);
306 else
307 dSprintf(expandedBuffer, expandedBufferSize, "%s[%d] = \"", f->pFieldname, j);
308
309 // detect and collapse relative path information
310 char fnBuf[1024];
311 if (f->type == TypeFilename ||
312 f->type == TypeStringFilename ||
313 f->type == TypeImageFilename ||
314 f->type == TypePrefabFilename ||
315 f->type == TypeShapeFilename)
316 {
317 Con::collapseScriptFilename(fnBuf, 1024, val);
318 val = fnBuf;
319 }
320
321 expandEscape((char*)expandedBuffer + dStrlen(expandedBuffer), val);
322 dStrcat(expandedBuffer, "\";\r\n");
323
324 stream.writeTabs(tabStop);
325 stream.write(dStrlen(expandedBuffer),expandedBuffer);
326 }

Callers

nothing calls this directly

Calls 10

dSprintfFunction · 0.85
dStrcpyFunction · 0.85
collapseScriptFilenameFunction · 0.85
expandEscapeFunction · 0.85
dStrcatFunction · 0.85
writeTabsMethod · 0.80
dStrlenFunction · 0.50
sizeMethod · 0.45
insertMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected