示例#1
0
/* EXPORT->StoreVQTab: store VQTable in tabFN */
void StoreVQTab(VQTable vqTab, char *tabFN)
{
   FILE *f;
   char *fn;
   short nid,s,sum;
   VQTable v=vqTab;
   VQNode n;

   fn = (tabFN==NULL)?vqTab->tabFN:tabFN;
   if ((f = fopen(fn,"w")) == NULL)
      HError(6111,"StoreVQTab: cannot create file %s",fn);
   /* Stamp each node with a unique id */
   sum = 0;
   for (s=1; s<=v->swidth[0]; s++){
      nid = 1; n = v->tree[s];
      MarkTree(n,&nid);
      sum += (nid-1);
   }
   v->numNodes = sum;
   /* Write the Header */
   fprintf(f,"%d %d %d %d %d ",
           v->magic,v->type,v->ckind,v->numNodes,v->swidth[0]);
   for (s=1; s<=v->swidth[0]; s++) fprintf(f,"%d ",v->swidth[s]);
   fprintf(f,"\n");
   for (s=1; s<=v->swidth[0]; s++){
      n = v->tree[s];
      StoreTree(f,n,v->ckind,s);
   }
   fclose(f);
}
示例#2
0
/* StoreTree: store each node as an entry */
static void StoreTree(FILE *f, VQNode n, CovKind ck, short s)
{
   if (n != NULL){
      fprintf(f,"%d %d %d %d %d\n",s,n->vqidx,n->nid,n->lid,n->rid);
      WriteVector(f,n->mean,FALSE);
      switch(ck){
      case NULLC:
         break;
      case INVDIAGC:
         WriteVector(f,(Vector)n->cov.var,FALSE);
         break;
      case FULLC:
         WriteTriMat(f,(TriMat)n->cov.inv,FALSE);
         break;
      }
      fprintf(f,"\n");
      StoreTree(f,n->left,ck,s);
      StoreTree(f,n->right,ck,s);
   }
}
示例#3
0
void Pdb::SaveTree()
{
	Value v = tree.Get(0);
	if(!IsType<NamedVal>(v))
		return;
	const NamedVal& nv = ValueTo<NamedVal>(v);
	if(nv.val.type < 0)
		return;
	String w;
	Point p = tree.GetScroll();
	w << p.x << ' ' << p.y << ' ' << tree.GetCursor() << ' ' << StoreTree(0);
	treetype.GetAdd(GetType(nv.val.type).name) = w;
	LOG("SaveTree " << GetType(nv.val.type).name << ' ' << w);
}
示例#4
0
String Pdb::StoreTree(int parent)
{
	String result;
	int n = tree.GetChildCount(parent);
	for(int i = 0; i < n; i++) {
		int child = tree.GetChild(parent, i);
		if(tree.IsOpen(child)) {
			const NamedVal& nv = ValueTo<NamedVal>(tree.Get(child));
			if(!IsNull(result))
				result << ';';
			result << nv.name;
			String w = StoreTree(child);
			if(!IsNull(w))
				result << '{' << w << '}';
		}
	}
	return result;
}