<commit_before>package hxd.fmt.hmd;
import hxd.fmt.hmd.Data;

class Dump {

	var buf : StringBuf;
	var prefix : String;

	public function new() {
	}

	inline function add<T>( s : T ) {
		buf.add(prefix+s+"\n");
	}

	function positionStr( p : Position ) {
		inline function fmt(v) return hxd.Math.fmt(v);
		return 'T={${fmt(p.x)},${fmt(p.y)},${fmt(p.z)}} R={${fmt(p.qx)},${fmt(p.qy)},${fmt(p.qz)}} S={${fmt(p.sx)},${fmt(p.sy)},${fmt(p.sz)}}';
	}

	function addProps( props : Properties ) {
		if( props == null ) return;
		for( p in props ) {
			var params = Type.enumParameters(p);
			if( params.length == 0 )
				add(Type.enumConstructor(p));
			else
				add(Type.enumConstructor(p) + " : " + [for( p in params ) Std.string(p)].join(", "));
		}
	}

	public function dump( h : Data ) : String {
		buf = new StringBuf();
		prefix = "";
		add('HMD v${h.version}');
		prefix = "\t";
		add("Header : " + hxd.Math.fmt(h.dataPosition/1024) + " KB");
		add("Data : " + hxd.Math.fmt(h.data.length / 1024) + " KB");
		addProps(h.props);
		prefix = "";
		add("");
		for( k in 0...h.geometries.length ) {
			var g = h.geometries[k];
			add('@$k GEOMETRY');
			prefix += "\t";
			add('Vertex Count : ${g.vertexCount}');
			add('Vertex Stride : ${g.vertexStride}');
			add('Index Count : ${g.indexCount} ${g.indexCounts.length > 1 ? g.indexCounts.toString() : ''}');
			add('Bounds : center=${g.bounds.getCenter()} size=${g.bounds.getSize()}');
			add('Format :');
			addProps(g.props);
			for( f in g.vertexFormat )
				add('\t${f.name} ${f.format.toString().substr(1)}');
			prefix = "";
		}
		if( h.geometries.length > 0 ) add('');
		var flags = MaterialFlag.createAll();
		for( k in 0...h.materials.length ) {
			var m = h.materials[k];
			add('@$k MATERIAL');
			prefix += "\t";
			if( m.name != null ) add('Name : ${m.name}');
			add('Blend : ${m.blendMode}');
			add('Cull : ${m.culling}');
			if( m.diffuseTexture != null ) add('Texture : ${m.diffuseTexture}');
			if( m.killAlpha != null ) add('KillAlpha : ${m.killAlpha}');
			addProps(m.props);
			for( f in flags )
				if( m.flags.has(f) )
					add(f);
			prefix = "";
		}
		if( h.materials.length > 0 ) add('');
		for( k in 0...h.models.length ) {
			var m = h.models[k];
			add('@$k MODEL');
			prefix += "\t";
			if( m.name != null ) add('Name : ${m.name}');
			var p = h.models[m.parent];
			if( m.parent >= 0 ) add('Parent : @${m.parent} ${p == null ? "INVALID" : p.name == null ? "" : p.name }');
			if( m.follow != null ) add('Follow : ${m.follow}');
			add('Position : ${positionStr(m.position)}');
			if( m.geometry >= 0 )
				add('Geometry : @${m.geometry}');
			if( m.materials != null ) {
				for( i in 0...m.materials.length ) {
					var m = m.materials[i];
					var md = h.materials[m];
					add('Material $i : @$m ${md == null ? "INVALID" : md.name == null ? "" : md.name}');
				}
			}
			addProps(m.props);
			if( m.skin != null ) {
				var s = m.skin;<commit_msg>added dump info<commit_after>package hxd.fmt.hmd;
import hxd.fmt.hmd.Data;

class Dump {

	var buf : StringBuf;
	var prefix : String;

	public function new() {
	}

	inline function add<T>( s : T ) {
		buf.add(prefix+s+"\n");
	}

	function positionStr( p : Position ) {
		inline function fmt(v) return hxd.Math.fmt(v);
		return 'T={${fmt(p.x)},${fmt(p.y)},${fmt(p.z)}} R={${fmt(p.qx)},${fmt(p.qy)},${fmt(p.qz)}} S={${fmt(p.sx)},${fmt(p.sy)},${fmt(p.sz)}}';
	}

	function addProps( props : Properties ) {
		if( props == null ) return;
		for( p in props ) {
			var params = Type.enumParameters(p);
			if( params.length == 0 )
				add(Type.enumConstructor(p));
			else
				add(Type.enumConstructor(p) + " : " + [for( p in params ) Std.string(p)].join(", "));
		}
	}

	public function dump( h : Data ) : String {
		buf = new StringBuf();
		prefix = "";
		add('HMD v${h.version}');
		prefix = "\t";
		add("Header : " + hxd.Math.fmt(h.dataPosition/1024) + " KB");
		add("Data : " + hxd.Math.fmt(h.data.length / 1024) + " KB");
		addProps(h.props);
		prefix = "";
		add("");
		for( k in 0...h.geometries.length ) {
			var g = h.geometries[k];
			add('@$k GEOMETRY');
			prefix += "\t";
			add('Vertex Count : ${g.vertexCount}');
			add('Vertex Stride : ${g.vertexStride}');
			add('Index Count : ${g.indexCount} ${g.indexCounts.length > 1 ? g.indexCounts.toString() : ''}');
			add('Bounds : center=${g.bounds.getCenter()} size=${g.bounds.getSize()}');
			add('Format :');
			addProps(g.props);
			for( f in g.vertexFormat )
				add('\t${f.name} ${f.format.toString().substr(1)}');
			prefix = "";
		}
		if( h.geometries.length > 0 ) add('');
		var flags = MaterialFlag.createAll();
		for( k in 0...h.materials.length ) {
			var m = h.materials[k];
			add('@$k MATERIAL');
			prefix += "\t";
			if( m.name != null ) add('Name : ${m.name}');
			add('Blend : ${m.blendMode}');
			add('Cull : ${m.culling}');
			if( m.diffuseTexture != null ) add('Texture : ${m.diffuseTexture}');
			if( m.specularTexture != null ) add('Specular : ${m.specularTexture}');
			if( m.normalMap != null ) add('Normal : ${m.normalMap}');
			if( m.killAlpha != null ) add('KillAlpha : ${m.killAlpha}');
			addProps(m.props);
			for( f in flags )
				if( m.flags.has(f) )
					add(f);
			prefix = "";
		}
		if( h.materials.length > 0 ) add('');
		for( k in 0...h.models.length ) {
			var m = h.models[k];
			add('@$k MODEL');
			prefix += "\t";
			if( m.name != null ) add('Name : ${m.name}');
			var p = h.models[m.parent];
			if( m.parent >= 0 ) add('Parent : @${m.parent} ${p == null ? "INVALID" : p.name == null ? "" : p.name }');
			if( m.follow != null ) add('Follow : ${m.follow}');
			add('Position : ${positionStr(m.position)}');
			if( m.geometry >= 0 )
				add('Geometry : @${m.geometry}');
			if( m.materials != null ) {
				for( i in 0...m.materials.length ) {
					var m = m.materials[i];
					var md = h.materials[m];
					add('Material $i : @$m ${md == null ? "INVALID" : md.name == null ? "" : md.name}');
				}
			}
			addProps(m.props);
			if( m.skin != null ) {
				var s = m.skin;
{'fraction_non_alphanumeric': 0.23849232821881255, 'fraction_numerical': 0.0063375583722481655, 'mean_word_length': 3.0383838383838384, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3581446', 'n_tokens_mistral': 2682, 'n_tokens_neox': 2332, 'n_words': 491}