static void ocdumpmemdata1(OCmemdata* md, OCbytes* buf, int depth) { OCmemdata** mdp; unsigned int i; char tmp[1024]; switch ((OCtype)md->octype) { case OC_Sequence: case OC_Grid: case OC_Structure: case OC_Dataset: sprintf(tmp,"%s%s/%s (%lu) {\n",dent(depth), octypetostring((OCtype)md->octype), ocmodestr(md->mode), (unsigned long)md->count); ocbytescat(buf,tmp); mdp = (OCmemdata**)md->data.data; switch ((OCmode)md->mode) { case Fieldmode: for(i=0;i<md->count;i++) { sprintf(tmp,"%s[%u]",dent(depth+1),i); ocbytescat(buf,tmp); ocdumpmemdata1(mdp[i],buf,depth+1); } break; case Dimmode: for(i=0;i<md->count;i++) { sprintf(tmp,"%s(%u)",dent(depth+1),i); ocbytescat(buf,tmp); ocdumpmemdata1(mdp[i],buf,depth+1); } break; case Recordmode: for(i=0;i<md->count;i++) { sprintf(tmp,"%s{%u}",dent(depth+1),i); ocbytescat(buf,tmp); ocdumpmemdata1(mdp[i],buf,depth+1); } break; default: break; } sprintf(tmp,"%s}\n",dent(depth)); break; case OC_Primitive: { OCtype etype = (OCtype)md->etype; char* data = md->data.data; sprintf(tmp,"%s%s/%s (%lu) {",dent(depth), octypetostring(etype),ocmodestr(md->mode),(unsigned long)md->count); ocbytescat(buf,tmp); for(i=0;i<md->count;i++) { char* p = data + (octypesize(etype)*i); ocbytescat(buf," "); octypeprint(etype,tmp,sizeof(tmp),(void*)p); ocbytescat(buf,tmp); } ocbytescat(buf," }\n"); } break; default: break; } }
OCerror oc_typeprint(OCtype etype, char* buf, size_t bufsize, void* value) { return octypeprint(etype,buf,bufsize,value); }