Lines Matching refs:np

53 static int read_tree(Namval_t* np, Sfio_t *iop, int n, Namfun_t *dp)  in read_tree()  argument
62 sfprintf(sh.strbuf,"%s=%c",nv_name(np),0); in read_tree()
70 static Namval_t *create_tree(Namval_t *np,const char *name,int flag,Namfun_t *dp) in create_tree() argument
78 if(np=(*fp->disc->createf)(np,name,flag,fp)) in create_tree()
80 return(np); in create_tree()
83 return((flag&NV_NOADD)?0:np); in create_tree()
86 static Namfun_t *clone_tree(Namval_t *np, Namval_t *mp, int flags, Namfun_t *fp){ in clone_tree() argument
88 if ((flags&NV_MOVE) && nv_type(np)) in clone_tree()
93 walk_tree(np,mp,flags); in clone_tree()
132 static Namfun_t *nextdisc(Namval_t *np) in nextdisc() argument
135 if(nv_isref(np)) in nextdisc()
137 for(fp=np->nvfun;fp;fp=fp->next) in nextdisc()
145 void *nv_diropen(Namval_t *np,const char *name) in nv_diropen() argument
172 np = nv_open(name, dp->root, NV_NOFAIL); in nv_diropen()
174 if(!np || !nv_istable(np)) in nv_diropen()
176 dp->root = nv_dict(np); in nv_diropen()
195 np = dp->hp; in nv_diropen()
213 if(!np) in nv_diropen()
217 np = (*nfp->disc->createf)(nq,last,0,nfp); in nv_diropen()
220 nv_endsubscript(np,nfp->last,NV_NOADD); in nv_diropen()
221 if(nq = nv_opensub(np)) in nv_diropen()
222 np = nq; in nv_diropen()
226 np = nv_search(last,dp->root,0); in nv_diropen()
230 if(np==dp->hp && !next) in nv_diropen()
232 if(np && ((nfp=nextdisc(np)) || nv_istable(np))) in nv_diropen()
238 if(nv_istable(np)) in nv_diropen()
239 dp->root = nv_dict(np); in nv_diropen()
241 dp->root = (Dt_t*)np; in nv_diropen()
245 dp->table = np; in nv_diropen()
248 dp->hp = (*dp->nextnode)(np,(Dt_t*)0,nfp); in nv_diropen()
258 nq = np; in nv_diropen()
259 np = 0; in nv_diropen()
277 register Namval_t *np, *last_table; in nv_dirnext() local
283 while(np=dp->hp) in nv_dirnext()
288 if(nv_isarray(np)) in nv_dirnext()
289 nv_putsub(np,(char*)0, ARRAY_UNDEF); in nv_dirnext()
291 if(nv_isnull(np) && !nv_isarray(np) && !nv_isattr(np,NV_INTEGER)) in nv_dirnext()
302 cp = nv_name(np); in nv_dirnext()
311 dp->hp = (*dp->nextnode)(np,(Dt_t*)0,dp->fun); in nv_dirnext()
316 …if((nfp=nextdisc(np)) && (nfp->disc->getval||nfp->disc->getnum) && nv_isvtree(np) && strcmp(cp,dp-… in nv_dirnext()
318 if(nfp || nv_istable(np)) in nv_dirnext()
322 if(nv_istable(np)) in nv_dirnext()
323 root = nv_dict(np); in nv_dirnext()
325 root = (Dt_t*)np; in nv_dirnext()
343 if(nfp && np->nvfun) in nv_dirnext()
346 Namarr_t *ap = nv_arrayptr(np); in nv_dirnext()
348 nv_putsub(np,(char*)0,ARRAY_SCAN); in nv_dirnext()
352 dp->table = np; in nv_dirnext()
354 dp->hp = (*dp->nextnode)(np,(Dt_t*)0,nfp); in nv_dirnext()
378 static void outtype(Namval_t *np, Namfun_t *fp, Sfio_t* out, const char *prefix) in outtype() argument
383 tp = (*fp->disc->typef)(np,fp); in outtype()
386 if(fp->type || (fp->disc && fp->disc->typef &&(*fp->disc->typef)(np,fp))) in outtype()
388 outtype(np,fp,out,prefix); in outtype()
410 void nv_attribute(register Namval_t *np,Sfio_t *out,char *prefix,int noname) in nv_attribute() argument
421 for(fp=np->nvfun;fp;fp=fp->next) in nv_attribute()
423 if((typep=fp->type) || (fp->disc && fp->disc->typef && (typep=(*fp->disc->typef)(np,fp)))) in nv_attribute()
426 if(np==typep) in nv_attribute()
432 if(!fp && !nv_isattr(np,~(NV_MINIMAL|NV_NOFREE))) in nv_attribute()
436 if(nv_isvtree(np)) in nv_attribute()
438 …else if((!np->nvalue.cp||np->nvalue.cp==Empty) && nv_isattr(np,~NV_NOFREE)==NV_MINIMAL && strcmp(n… in nv_attribute()
444 if ((attr=nv_isattr(np,~NV_NOFREE)) || fp) in nv_attribute()
454 if(nv_isattr(np,NV_REF|NV_TAGGED)==(NV_REF|NV_TAGGED)) in nv_attribute()
490 Namarr_t *ap = nv_arrayptr(np); in nv_attribute()
499 if((ap && (ap->nelem&ARRAY_TREE)) || (!ap && nv_isattr(np,NV_NOFREE))) in nv_attribute()
514 if((cp = (char*)nv_mapchar(np,0)) && strcmp(cp,tp->sh_name+2)) in nv_attribute()
533 sfprintf(out,"%d ",nv_size(np)); in nv_attribute()
537 if(val==NV_INTEGER && nv_isattr(np,NV_INTEGER)) in nv_attribute()
539 if(nv_size(np) != 10) in nv_attribute()
541 if(nv_isattr(np, NV_DOUBLE)== NV_DOUBLE) in nv_attribute()
547 sfprintf(out,"%d ",nv_size(np)); in nv_attribute()
554 outtype(np,fp,out,prefix); in nv_attribute()
559 sfprintf(out,"%s",nv_name(np)); in nv_attribute()
560 nv_arrfixed(np,out,0,(char*)0); in nv_attribute()
564 sfputr(out,nv_name(np),'\n'); in nv_attribute()
580 void nv_outnode(Namval_t *np, Sfio_t* out, int indent, int special) in nv_outnode() argument
584 Namarr_t *ap = nv_arrayptr(np); in nv_outnode()
591 nv_putsub(np,NIL(char*),ARRAY_SCAN); in nv_outnode()
600 if(array_elem(ap) < nv_aimax(np)+1) in nv_outnode()
604 mp = nv_opensub(np); in nv_outnode()
609 if(!nv_nextsub(np)) in nv_outnode()
611 mp = nv_opensub(np); in nv_outnode()
619 if(!(fmtq = nv_getsub(np))) in nv_outnode()
635 more = nv_nextsub(np); in nv_outnode()
644 ep = nv_getval(mp?mp:np); in nv_outnode()
648 if(!ap && nv_isattr(np,NV_INTEGER|NV_LJUST)==NV_LJUST) in nv_outnode()
650 xp = ep+nv_size(np); in nv_outnode()
654 if(xp < (ep+nv_size(np))) in nv_outnode()
675 more = nv_nextsub(np); in nv_outnode()
689 mp = nv_opensub(np); in nv_outnode()
698 register Namval_t *np, *nq, *last_table=wp->shp->last_table; in outval() local
703 if(!(np=nv_open(vname,wp->root,mode|NV_VARNAME|NV_NOADD|NV_NOASSIGN|NV_NOFAIL|wp->noscope))) in outval()
710 fp = nv_hasdisc(np,&treedisc); in outval()
713 if(nv_isattr(np,NV_BINARY)) in outval()
715 if(fp && np->nvalue.cp && np->nvalue.cp!=Empty) in outval()
722 if(nv_isarray(np)) in outval()
725 if(!special && fp && !nv_isarray(np)) in outval()
730 fp = nv_stack(np,fp); in outval()
731 if(fp = nv_stack(np,NIL(Namfun_t*))) in outval()
733 np->nvfun = 0; in outval()
744 if(nv_isnull(np) && !nv_isarray(np) && !nv_isattr(np,NV_INTEGER)) in outval()
746 if(special || (nv_isarray(np) && nv_arrayptr(np))) in outval()
749 if(array_elem(nv_arrayptr(np))==0) in outval()
752 nq = nv_putsub(np,NIL(char*),ARRAY_SCAN|(wp->out?ARRAY_NOCHILD:0)); in outval()
756 _nv_unset(np,NV_RDONLY); in outval()
757 if(sh.subshell || (wp->flags!=NV_RDONLY) || nv_isattr(np,NV_MINIMAL|NV_NOFREE)) in outval()
759 nv_delete(np,wp->root,nv_isattr(np,NV_MINIMAL)?NV_NOFREE:0); in outval()
769 if(isarray==0 && nv_isarray(np) && (nv_isnull(np)||np->nvalue.cp==Empty)) /* empty array */ in outval()
779 nv_attribute(np,wp->out,"typeset",'='); in outval()
780 if((ap=nv_arrayptr(np)) && ap->fixed) in outval()
783 nv_arrfixed(np,wp->out,0,(char*)0); in outval()
788 …if((np->nvalue.cp && np->nvalue.cp!=Empty) || nv_isattr(np,~(NV_MINIMAL|NV_NOFREE)) || nv_isvtree( in outval()
793 fp = np->nvfun; in outval()
795 np->nvfun = 0; in outval()
796 nv_outnode(np, wp->out, wp->indent, special); in outval()
798 np->nvfun = fp; in outval()
854 Namval_t *np,*tp; in genvalue() local
856 np=nv_open(arg,wp->root,NV_VARNAME|NV_NOADD|NV_NOASSIGN|NV_NOFAIL|wp->noscope); in genvalue()
857 if(!np || (nv_isarray(np) && (!(tp=nv_opensub(np)) || !nv_isvtree(tp)))) in genvalue()
864 if(*cp!='[' && (tp = nv_type(np))) in genvalue()
893 Namval_t *np = nv_open(arg,wp->root,NV_VARNAME|NV_NOADD|NV_NOASSIGN|wp->noscope); in genvalue() local
894 if(!np) in genvalue()
896 if((wp->array = nv_isarray(np)) && (ap=nv_arrayptr(np))) in genvalue()
901 nv_attribute(np,outfile,"typeset",1); in genvalue()
902 nv_close(np); in genvalue()
965 static char *walk_tree(register Namval_t *np, Namval_t *xp, int flags) in walk_tree() argument
979 Namarr_t *arp = nv_arrayptr(np); in walk_tree()
994 stakputs(nv_name(np)); in walk_tree()
995 if(arp && !(arp->nelem&ARRAY_SCAN) && (subscript = nv_getsub(np))) in walk_tree()
997 mp = nv_opensub(np); in walk_tree()
1004 mp = np; in walk_tree()
1083 Namfun_t *nv_isvtree(Namval_t *np) in nv_isvtree() argument
1085 if(np) in nv_isvtree()
1086 return(nv_hasdisc(np,&treedisc)); in nv_isvtree()
1093 char *nv_getvtree(register Namval_t *np, Namfun_t *fp) in nv_getvtree() argument
1099 return(nv_getv(np,fp)); in nv_getvtree()
1101 if(nv_isattr(np,NV_BINARY) && !nv_isattr(np,NV_RAW)) in nv_getvtree()
1102 return(nv_getv(np,fp)); in nv_getvtree()
1103 if(nv_isattr(np,NV_ARRAY) && !nv_type(np) && nv_arraychild(np,(Namval_t*)0,0)==np) in nv_getvtree()
1104 return(nv_getv(np,fp)); in nv_getvtree()
1105 if(flags = nv_isattr(np,NV_EXPORT)) in nv_getvtree()
1106 nv_offattr(np,NV_EXPORT); in nv_getvtree()
1107 if(flags |= nv_isattr(np,NV_TABLE)) in nv_getvtree()
1108 nv_offattr(np,NV_TABLE); in nv_getvtree()
1111 return(walk_tree(np,(Namval_t*)0,flags)); in nv_getvtree()
1117 static void put_tree(register Namval_t *np, const char *val, int flags,Namfun_t *fp) in put_tree() argument
1121 if(!val && !fp->next && nv_isattr(np,NV_NOFREE)) in put_tree()
1123 if(!nv_isattr(np,(NV_INTEGER|NV_BINARY))) in put_tree()
1136 walk_tree(np,(Namval_t*)0,(flags&NV_NOSCOPE)|1); in put_tree()
1137 nv_clone(mp,np,NV_COMVAR); in put_tree()
1140 walk_tree(np,(Namval_t*)0,(flags&NV_NOSCOPE)|1); in put_tree()
1142 nv_putv(np, val, flags,fp); in put_tree()
1143 if(val && nv_isattr(np,(NV_INTEGER|NV_BINARY))) in put_tree()
1145 if(ap= nv_arrayptr(np)) in put_tree()
1149 fp = nv_stack(np,fp); in put_tree()
1150 if(fp = nv_stack(np,NIL(Namfun_t*))) in put_tree()
1158 void nv_setvtree(register Namval_t *np) in nv_setvtree() argument
1162 sh_assignok(np,1); in nv_setvtree()
1163 if(nv_hasdisc(np, &treedisc)) in nv_setvtree()
1168 nv_stack(np, nfp); in nv_setvtree()