BBString *bbReadStdin(){ #define BUF_SIZE 256 int sz=0; char *str=0; BBString *t; for(;;){ int t_sz; char buf[BUF_SIZE],*p; fgets( buf,BUF_SIZE,stdin ); buf[BUF_SIZE-1]=0; if( p=strchr( buf,'\n' ) ){ t_sz=p-buf; if( t_sz && isspace(buf[t_sz-1]) ) --t_sz; }else{ t_sz=strlen( buf ); } str=(char*)bbMemExtend( str,sz,sz+t_sz ); bbMemCopy( str+sz,buf,t_sz ); sz+=t_sz; if( t_sz<BUF_SIZE-1 ) break; } if( sz ) t=bbStringFromBytes( str,sz ); else t=&bbEmptyString; bbMemFree( str ); return t; }
void bbObjectRegisterType( BBClass *clas ){ if( reg_put==reg_end ){ int len=reg_put-reg_base,new_len=len+REG_GROW; reg_base=(BBClass**)bbMemExtend( reg_base,len*sizeof(BBClass*),new_len*sizeof(BBClass*) ); reg_end=reg_base+new_len; reg_put=reg_base+len; } *reg_put++=clas; }
void bbObjectRegisterInterface( BBInterface * ifc ){ if( ireg_put==ireg_end ){ int len=ireg_put-ireg_base,new_len=len+REG_GROW; ireg_base=(BBInterface**)bbMemExtend( ireg_base,len*sizeof(BBInterface*),new_len*sizeof(BBInterface*) ); ireg_end=ireg_base+new_len; ireg_put=ireg_base+len; } *ireg_put++=ifc; }