예제 #1
0
파일: libc.cpp 프로젝트: abakobo/monkey2
void setenv_( const char *name,const char *value,int overwrite ){

#if _WIN32

	if( !overwrite && getenv( name ) ) return;

	bbString tmp=bbString( name )+BB_T( "=" )+bbString( value );
	putenv( tmp.c_str() );

#else
	setenv( name,value,overwrite );
#endif
}
예제 #2
0
bbString t_mx2_Translator::m_AllocGCTmp(t_mx2_Type* l_type){
  struct f0_t : public bbGCFrame{
    t_mx2_Translator_GCTmp* l_tmp{};
    void gcMark(){
      bbGCMarkPtr(l_tmp);
    }
  }f0{};
  {
    bbInt l_i=bbInt(0);
    for(;(l_i<this->m__0gcframe->m_tmps->m_Length());l_i+=1){
      struct f2_t : public bbGCFrame{
        t_mx2_Translator_GCTmp* l_tmp{};
        void gcMark(){
          bbGCMarkPtr(l_tmp);
        }
      }f2{};
      f2.l_tmp=this->m__0gcframe->m_tmps->m__idx(l_i);
      if((f2.l_tmp->m_used||!f2.l_tmp->m_type->m_Equals(l_type))){
        continue;
      }
      f2.l_tmp->m_used=true;
      return ((this->m__0gcframe->m_ident+BB_T("."))+f2.l_tmp->m_ident);
    }
  }
  f0.l_tmp=bbGCNew<t_mx2_Translator_GCTmp>();
  f0.l_tmp->m_used=true;
  f0.l_tmp->m_type=l_type;
  f0.l_tmp->m_ident=(BB_T("t")+bbString(this->m__0gcframe->m_tmps->m_Length()));
  this->m__0gcframe->m_tmps->m_Push(f0.l_tmp);
  return ((this->m__0gcframe->m_ident+BB_T("."))+f0.l_tmp->m_ident);
}
예제 #3
0
t_mx2_Translator_GCFrame::t_mx2_Translator_GCFrame(t_mx2_Translator_GCFrame* l_outer,bbInt l_inspos){
  init();
  this->m_outer=l_outer;
  this->m_inspos=l_inspos;
  if(bbBool(l_outer)){
    this->m_depth=(l_outer->m_depth+1);
  }
  this->m_ident=(BB_T("f")+bbString(this->m_depth));
}
예제 #4
0
void t_default_VSynth::m_OpenAudio(){
  struct f0_t : public bbGCFrame{
    SDL_AudioSpec l_spec{};
    void gcMark(){
      bbGCMark(l_spec);
    }
  }f0{};
  this->m_buffer=bbArray<bbFloat>::create((g_default_FragmentSize*2));
  f0.l_spec.freq=44100;
  f0.l_spec.format=bbShort(AUDIO_S16);
  f0.l_spec.channels=2;
  f0.l_spec.samples=bbShort(g_default_FragmentSize);
  f0.l_spec.callback=g_default_VSynth_audio_0callback;
  Mix_CloseAudio();
  bbInt l_error=SDL_OpenAudio(&f0.l_spec,this->m_audioSpec);
  if(bbBool(l_error)){
    puts((((BB_T("error=")+bbString(l_error))+BB_T(" "))+bbString::fromCString(((void*)(SDL_GetError())))).c_str());fflush( stdout );
  }
  SDL_PauseAudio(bbInt(0));
}
예제 #5
0
파일: mx2cc_type.cpp 프로젝트: abakobo/m2
t_mx2_Value* t_mx2_FuncType::m_Invoke(bbArray<bbGCVar<t_mx2_Value>>* l_args,t_mx2_Value* l_value){
  struct f0_t : public bbGCFrame{
    bbArray<bbGCVar<t_mx2_Value>>* l_args{};
    f0_t(bbArray<bbGCVar<t_mx2_Value>>* l_args):l_args(l_args){
    }
    void gcMark(){
      bbGCMarkPtr(l_args);
    }
  }f0{l_args};
  if((f0.l_args->length()!=this->m_argTypes->length())){
    throw bbGCNew<t_mx2_SemantEx>((((BB_T("Wrong number of arguments - expecting ")+bbString(this->m_argTypes->length()))+BB_T(" not "))+bbString(f0.l_args->length())));
  }
  f0.l_args=f0.l_args->slice(bbInt(0));
  {
    bbInt l_i=bbInt(0);
    for(;(l_i<f0.l_args->length());l_i+=1){
      f0.l_args->at(l_i)=f0.l_args->at(l_i)->m_UpCast(this->m_argTypes->at(l_i));
    }
  }
  return ((t_mx2_Value*)(bbGCNew<t_mx2_InvokeValue>(l_value,f0.l_args)));
}
예제 #6
0
bbString bbRequesters::RequestDir( bbString title,bbString dir ){

	CoInitialize( 0 );
	
	dir=dir.replace( "/","\\" );

	LPMALLOC shm;
	BROWSEINFOW bi={0};
	
	WCHAR buf[MAX_PATH],*p;
	GetFullPathNameW( dir.toWString(),MAX_PATH,buf,&p );
	
	bi.hwndOwner=GetActiveWindow();
	bi.lpszTitle=tmpWString( title );
	bi.ulFlags=BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE;
	bi.lpfn=BrowseForFolderCallbackW;
	bi.lParam=(LPARAM)buf;
	
	beginPanel();

	bbString str;
	
	if( ITEMIDLIST *idlist=SHBrowseForFolderW( &bi ) ){
		SHGetPathFromIDListW( idlist,buf );
		str=bbString( buf );
		//SHFree( idlist );	//?!?
	}
	
	endPanel();
	
	free( (void*)bi.lpszTitle );

	str=str.replace( "\\","/" );
	if( !str.endsWith( "/" ) ) str+="/";

	return str;
}
예제 #7
0
파일: mx2cc_type.cpp 프로젝트: abakobo/m2
bbString t_mx2_ArrayType::m_TypeId(){
  if((this->m_rank>1)){
    return ((BB_T("A")+bbString(this->m_rank))+this->m_elemType->m_TypeId());
  }
  return (BB_T("A")+this->m_elemType->m_TypeId());
}
예제 #8
0
bbString bbRequesters::RequestFile( bbString title,bbString exts,bbBool save,bbString path ){

	bbString file,dir;
	path=path.replace( "/","\\" );
		
	int i=path.findLast( "\\" );
	if( i!=-1 ){
		dir=path.slice( 0,i );
		file=path.slice( 1+1 );
	}else{
		file=path;
	}

	if( file.length()>MAX_PATH ) return "";

	if( exts.length() ){
		if( exts.find( ":" )==-1 ){
			exts=bbString( "Files\0*.",8 )+exts;
		}else{
			exts=exts.replace( ":",bbString( "\0*.",3 ) );
		}
		exts=exts.replace( ";",bbString( "\0",1 ) );
		exts=exts.replace( ",",";*." )+bbString( "\0",1 );
	}

	WCHAR buf[MAX_PATH+1];
	memcpy( buf,file.data(),file.length()*2 );
	buf[file.length()]=0;

	OPENFILENAMEW of={sizeof(of)};

	of.hwndOwner=GetActiveWindow();
	of.lpstrTitle=tmpWString( title );
	of.lpstrFilter=tmpWString( exts );
	of.lpstrFile=buf;
	of.lpstrInitialDir=dir.length() ? tmpWString( dir ) : 0;
	of.nMaxFile=MAX_PATH;
	of.Flags=OFN_HIDEREADONLY|OFN_NOCHANGEDIR;
	
	bbString str;
	
	beginPanel();
	
	if( save ){
		of.lpstrDefExt=L"";
		of.Flags|=OFN_OVERWRITEPROMPT;
		if( GetSaveFileNameW( &of ) ){
			str=bbString( buf );
		}
	}else{
		of.Flags|=OFN_FILEMUSTEXIST;
		if( GetOpenFileNameW( &of ) ){
			str=bbString( buf );
		}
	}
	
	endPanel();
	
	free( (void*)of.lpstrTitle );
	free( (void*)of.lpstrFilter );
	free( (void*)of.lpstrInitialDir );
	
	str=str.replace( "\\","/" );
	
	return str;
}