Uh, Updates?
This commit is contained in:
@@ -57,7 +57,7 @@ IDR_MAINFRAME MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&New\tCtrl+N", ID_NEW
|
||||
MENUITEM "&New\tCtrl+N", Inew
|
||||
MENUITEM "&Open...\tCtrl+O", ID_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Close\tCtrl+F4", ID_CLOSE
|
||||
@@ -118,7 +118,7 @@ IDR_MAINFRAME ACCELERATORS DISCARDABLE
|
||||
BEGIN
|
||||
"F", ID_FIND, VIRTKEY, CONTROL, NOINVERT
|
||||
"H", ID_HOME, VIRTKEY, CONTROL, NOINVERT
|
||||
"N", ID_NEW, VIRTKEY, CONTROL, NOINVERT
|
||||
"N", Inew, VIRTKEY, CONTROL, NOINVERT
|
||||
"O", ID_OPEN, VIRTKEY, CONTROL, NOINVERT
|
||||
"P", ID_PRINT, VIRTKEY, CONTROL, NOINVERT
|
||||
"R", ID_REPLACE, VIRTKEY, CONTROL, NOINVERT
|
||||
@@ -228,7 +228,7 @@ BEGIN
|
||||
ID_STEP "Strp program\nStep"
|
||||
ID_TRACE "Trace program\nTrace"
|
||||
ID_END "End program\nEnd"
|
||||
ID_NEW "Start a new program\nNew"
|
||||
Inew "Start a new program\nNew"
|
||||
ID_FINDNEXT "Find next\nFind next"
|
||||
ID_RUN "Continue Program\nContinue"
|
||||
ID_STOP "Pause program\nPause"
|
||||
|
||||
@@ -20,7 +20,7 @@ BEGIN_MESSAGE_MAP( MainFrame,CFrameWnd )
|
||||
ON_WM_SIZE()
|
||||
ON_WM_ACTIVATE()
|
||||
|
||||
ON_COMMAND( ID_NEW,fileNew )
|
||||
ON_COMMAND( Inew,fileNew )
|
||||
ON_COMMAND( ID_OPEN,fileOpen )
|
||||
ON_COMMAND( ID_SAVE,fileSave )
|
||||
ON_COMMAND( ID_SAVEAS,fileSaveAs )
|
||||
@@ -54,7 +54,7 @@ BEGIN_MESSAGE_MAP( MainFrame,CFrameWnd )
|
||||
ON_COMMAND( ID_FORWARD,helpForward )
|
||||
ON_COMMAND( ID_ABOUT,helpAbout )
|
||||
|
||||
ON_UPDATE_COMMAND_UI( ID_NEW,updateCmdUI )
|
||||
ON_UPDATE_COMMAND_UI( Inew,updateCmdUI )
|
||||
ON_UPDATE_COMMAND_UI( ID_OPEN,updateCmdUI )
|
||||
ON_UPDATE_COMMAND_UI( ID_SAVE,updateCmdUI )
|
||||
ON_UPDATE_COMMAND_UI( ID_SAVEAS,updateCmdUI )
|
||||
@@ -112,7 +112,7 @@ int MainFrame::OnCreate( LPCREATESTRUCT lpCreateStruct ){
|
||||
static HBITMAP toolbmp;
|
||||
static SIZE imgsz,butsz;
|
||||
static UINT toolbuts[]={
|
||||
ID_NEW,ID_OPEN,ID_SAVE,ID_CLOSE,ID_SEPARATOR,
|
||||
Inew,ID_OPEN,ID_SAVE,ID_CLOSE,ID_SEPARATOR,
|
||||
ID_CUT,ID_COPY,ID_PASTE,ID_SEPARATOR,
|
||||
ID_FIND,ID_SEPARATOR,
|
||||
ID_EXECUTE,ID_SEPARATOR,
|
||||
@@ -835,7 +835,7 @@ void MainFrame::updateCmdUI( CCmdUI *ui ){
|
||||
Editor *e=getEditor();
|
||||
|
||||
switch( ui->m_nID ){
|
||||
case ID_NEW:case ID_OPEN:case ID_HOME:
|
||||
case Inew:case ID_OPEN:case ID_HOME:
|
||||
ui->Enable( true );
|
||||
break;
|
||||
case ID_DEBUG:
|
||||
|
||||
+11
-11
@@ -107,7 +107,7 @@ static void openRsrcDir( Section *s,int off,Rsrc *p ){
|
||||
Rdir *dir=(Rdir*)(data+off);
|
||||
Rent *ent=(Rent*)(dir+1);
|
||||
for( int k=0;k<dir->num_ids;++ent,++k ){
|
||||
Rsrc *r=d_new Rsrc( ent->id,p );
|
||||
Rsrc *r=new Rsrc( ent->id,p );
|
||||
if( ent->data<0 ){ //a node - offset is another dir
|
||||
openRsrcDir( s,ent->data&0x7fffffff,r );
|
||||
}else{ //a leaf
|
||||
@@ -115,7 +115,7 @@ static void openRsrcDir( Section *s,int off,Rsrc *p ){
|
||||
// cout<<"dat addr:"<<dat->addr<<" size:"<<dat->size<<endl;
|
||||
int sz=dat->size;
|
||||
void *src=dat->addr-s->sect.virt_addr+data;
|
||||
void *dest=d_new char[sz];
|
||||
void *dest=new char[sz];
|
||||
memcpy( dest,src,sz );
|
||||
r->data=dest;
|
||||
r->data_sz=sz;
|
||||
@@ -124,7 +124,7 @@ static void openRsrcDir( Section *s,int off,Rsrc *p ){
|
||||
}
|
||||
|
||||
static void openRsrcTree( Section *s ){
|
||||
rsrc_root=d_new Rsrc( 0,0 );
|
||||
rsrc_root=new Rsrc( 0,0 );
|
||||
openRsrcDir( s,0,rsrc_root );
|
||||
}
|
||||
|
||||
@@ -217,7 +217,7 @@ static void closeRsrcTree( Section *s ){
|
||||
s->sect.data_size=data_sz;
|
||||
|
||||
delete[] s->data;
|
||||
s->data=d_new char[data_sz];
|
||||
s->data=new char[data_sz];
|
||||
closeRsrcDir( s,0,rsrc_root );
|
||||
|
||||
delete rsrc_root;
|
||||
@@ -244,27 +244,27 @@ static void loadImage( istream &in ){
|
||||
//read stub
|
||||
in.seekg( 0x3c );
|
||||
in.read( (char*)&stub_sz,4 );
|
||||
stub_sz+=4;stub=d_new char[stub_sz];
|
||||
stub_sz+=4;stub=new char[stub_sz];
|
||||
in.seekg( 0 );in.read( stub,stub_sz );
|
||||
|
||||
//read head
|
||||
head=d_new Head;
|
||||
head=new Head;
|
||||
head_sz=sizeof(Head);
|
||||
in.read( (char*)head,head_sz );
|
||||
|
||||
//read opts
|
||||
opts=d_new Opts;
|
||||
opts=new Opts;
|
||||
opts_sz=sizeof(Opts);
|
||||
in.read( (char*)opts,opts_sz );
|
||||
|
||||
//read data dirs
|
||||
ddir_sz=opts->dir_entries * sizeof(DDir);
|
||||
ddir=(DDir*)d_new char[ddir_sz];
|
||||
ddir=(DDir*)new char[ddir_sz];
|
||||
in.read( (char*)ddir,ddir_sz );
|
||||
|
||||
//read sects...
|
||||
for( k=0;k<head->num_sects;++k ){
|
||||
Section *s=d_new Section;
|
||||
Section *s=new Section;
|
||||
in.read( (char*)&s->sect,sizeof(Sect) );
|
||||
sections.push_back( s );
|
||||
}
|
||||
@@ -273,7 +273,7 @@ static void loadImage( istream &in ){
|
||||
Section *s=sections[k];
|
||||
if( !s->sect.data_addr ) continue;
|
||||
int data_sz=s->sect.data_size;
|
||||
s->data=d_new char[data_sz];//char[s->sect.virt_size];
|
||||
s->data=new char[data_sz];//char[s->sect.virt_size];
|
||||
//memset( s->data,0,s->sect.virt_size );
|
||||
in.seekg( s->sect.data_addr );
|
||||
in.read( s->data,data_sz );
|
||||
@@ -336,7 +336,7 @@ bool replaceRsrc( int type,int id,int lang,void *data,int data_sz ){
|
||||
if( Rsrc *r=findRsrc( type,id,lang ) ){
|
||||
delete[] r->data;
|
||||
r->data_sz=data_sz;
|
||||
r->data=d_new char[data_sz];
|
||||
r->data=new char[data_sz];
|
||||
memcpy( r->data,data,data_sz );
|
||||
closeRsrcTree( s );
|
||||
return true;
|
||||
|
||||
@@ -44,7 +44,7 @@ private:
|
||||
data_sz=data_sz/2+data_sz;
|
||||
if( data_sz<pc+n ) data_sz=pc+n;
|
||||
char *old_data=data;
|
||||
data=d_new char[data_sz];
|
||||
data=new char[data_sz];
|
||||
memcpy( data,old_data,pc );
|
||||
delete old_data;
|
||||
}
|
||||
@@ -138,7 +138,7 @@ bool Linker::canCreateExe(){
|
||||
}
|
||||
|
||||
Module *Linker::createModule(){
|
||||
return d_new BBModule();
|
||||
return new BBModule();
|
||||
}
|
||||
|
||||
void Linker::deleteModule( Module *mod ){
|
||||
|
||||
+12
-12
@@ -40,7 +40,7 @@ static BBType _bbCStrType(BBTYPE_CSTR);
|
||||
static void *bbMalloc(int size) {
|
||||
return malloc(size);
|
||||
/*
|
||||
char *c=d_new char[ size ];
|
||||
char *c=new char[ size ];
|
||||
memBlks.push_back( c );
|
||||
return c;
|
||||
*/
|
||||
@@ -121,7 +121,7 @@ BBStr::~BBStr() {
|
||||
}
|
||||
|
||||
BBStr *_bbStrLoad(BBStr **var) {
|
||||
return *var ? d_new BBStr(**var) : d_new BBStr();
|
||||
return *var ? new BBStr(**var) : new BBStr();
|
||||
}
|
||||
|
||||
void _bbStrRelease(BBStr *str) {
|
||||
@@ -147,7 +147,7 @@ int _bbStrToInt(BBStr *s) {
|
||||
}
|
||||
|
||||
BBStr *_bbStrFromInt(int n) {
|
||||
return d_new BBStr(itoa(n));
|
||||
return new BBStr(itoa(n));
|
||||
}
|
||||
|
||||
float _bbStrToFloat(BBStr *s) {
|
||||
@@ -156,11 +156,11 @@ float _bbStrToFloat(BBStr *s) {
|
||||
}
|
||||
|
||||
BBStr *_bbStrFromFloat(float n) {
|
||||
return d_new BBStr(ftoa(n));
|
||||
return new BBStr(ftoa(n));
|
||||
}
|
||||
|
||||
BBStr *_bbStrConst(const char *s) {
|
||||
return d_new BBStr(s);
|
||||
return new BBStr(s);
|
||||
}
|
||||
|
||||
void * _bbVecAlloc(BBVecType *type) {
|
||||
@@ -378,13 +378,13 @@ int _bbObjEachNext2(BBObj **var) {
|
||||
}
|
||||
|
||||
BBStr *_bbObjToStr(BBObj *obj) {
|
||||
if (!obj || !obj->fields) return d_new BBStr("[NULL]");
|
||||
if (!obj || !obj->fields) return new BBStr("[NULL]");
|
||||
|
||||
static BBObj *root;
|
||||
static int recurs_cnt;
|
||||
|
||||
if (obj == root) return d_new BBStr("[ROOT]");
|
||||
if (recurs_cnt == 8) return d_new BBStr("....");
|
||||
if (obj == root) return new BBStr("[ROOT]");
|
||||
if (recurs_cnt == 8) return new BBStr("....");
|
||||
|
||||
++recurs_cnt;
|
||||
BBObj *oldRoot = root;
|
||||
@@ -392,7 +392,7 @@ BBStr *_bbObjToStr(BBObj *obj) {
|
||||
|
||||
BBObjType *type = obj->type;
|
||||
BBField *fields = obj->fields;
|
||||
BBStr *s = d_new BBStr("["), *t;
|
||||
BBStr *s = new BBStr("["), *t;
|
||||
for (int k = 0; k < type->fieldCnt; ++k) {
|
||||
if (k) *s += ',';
|
||||
switch (type->fieldTypes[k]->type) {
|
||||
@@ -467,9 +467,9 @@ float _bbReadFloat() {
|
||||
BBStr *_bbReadStr() {
|
||||
switch (dataPtr->fieldType) {
|
||||
case BBTYPE_END:ThrowRuntimeException("Out of data"); return 0;
|
||||
case BBTYPE_INT:return d_new BBStr(itoa(dataPtr++->field.INT));
|
||||
case BBTYPE_FLT:return d_new BBStr(ftoa(dataPtr++->field.FLT));
|
||||
case BBTYPE_CSTR:return d_new BBStr(dataPtr++->field.CSTR);
|
||||
case BBTYPE_INT:return new BBStr(itoa(dataPtr++->field.INT));
|
||||
case BBTYPE_FLT:return new BBStr(ftoa(dataPtr++->field.FLT));
|
||||
case BBTYPE_CSTR:return new BBStr(dataPtr++->field.CSTR);
|
||||
default:ThrowRuntimeException("Bad data type"); return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ struct bbBank{
|
||||
|
||||
bbBank( int sz ):size(sz){
|
||||
capacity=(size+15)&~15;
|
||||
data=d_new char[capacity];
|
||||
data=new char[capacity];
|
||||
memset( data,0,size );
|
||||
}
|
||||
virtual ~bbBank(){
|
||||
@@ -21,7 +21,7 @@ struct bbBank{
|
||||
capacity=capacity*3/2;
|
||||
if( n>capacity ) capacity=n;
|
||||
capacity=(capacity+15)&~15;
|
||||
char *p=d_new char[capacity];
|
||||
char *p=new char[capacity];
|
||||
memcpy( p,data,size );
|
||||
delete[] data;
|
||||
data=p;
|
||||
@@ -47,7 +47,7 @@ static inline void debugBank( bbBank *b,int offset ){
|
||||
}
|
||||
|
||||
bbBank *bbCreateBank( int size ){
|
||||
bbBank *b=d_new bbBank( size );
|
||||
bbBank *b=new bbBank( size );
|
||||
bank_set.insert( b );
|
||||
return b;
|
||||
}
|
||||
|
||||
+28
-28
@@ -312,7 +312,7 @@ void bbRenderWorld( float tween ){
|
||||
if( bbKeyHit( 0x58 ) ){
|
||||
static int n;
|
||||
string t="screenshot"+itoa(++n)+".bmp";
|
||||
bbSaveBuffer( bbBackBuffer(),d_new BBStr(t) );
|
||||
bbSaveBuffer( bbBackBuffer(),new BBStr(t) );
|
||||
}
|
||||
|
||||
if( !stats_mode ) return;
|
||||
@@ -334,7 +334,7 @@ void bbRenderWorld( float tween ){
|
||||
|
||||
string t="FPS:"+t_fps+" UPS:"+t_ups+" RPS:"+t_rps+" TRIS:"+t_tris;
|
||||
|
||||
bbText( 0,bbGraphicsHeight()-bbFontHeight(),d_new BBStr(t),0,0 );
|
||||
bbText( 0,bbGraphicsHeight()-bbFontHeight(),new BBStr(t),0,0 );
|
||||
}
|
||||
|
||||
int bbTrisRendered(){
|
||||
@@ -353,7 +353,7 @@ float bbStats3D( int n ){
|
||||
//
|
||||
Texture * bbLoadTexture( BBStr *file,int flags ){
|
||||
debug3d();
|
||||
Texture *t=d_new Texture( *file,flags );delete file;
|
||||
Texture *t=new Texture( *file,flags );delete file;
|
||||
if( !t->getCanvas(0) ){ delete t;return 0; }
|
||||
texture_set.insert( t );
|
||||
return t;
|
||||
@@ -361,7 +361,7 @@ Texture * bbLoadTexture( BBStr *file,int flags ){
|
||||
|
||||
Texture * bbLoadAnimTexture( BBStr *file,int flags,int w,int h,int first,int cnt ){
|
||||
debug3d();
|
||||
Texture *t=d_new Texture( *file,flags,w,h,first,cnt );
|
||||
Texture *t=new Texture( *file,flags,w,h,first,cnt );
|
||||
delete file;
|
||||
if( !t->getCanvas(0) ){
|
||||
delete t;
|
||||
@@ -378,7 +378,7 @@ Texture * bbCreateTexture( int w,int h,int flags,int frames ){
|
||||
ThrowRuntimeException( "Illegal number of texture frames" );
|
||||
}
|
||||
}
|
||||
Texture *t=d_new Texture( w,h,flags,frames );
|
||||
Texture *t=new Texture( w,h,flags,frames );
|
||||
texture_set.insert( t );
|
||||
return t;
|
||||
}
|
||||
@@ -427,7 +427,7 @@ int bbTextureHeight( Texture *t ){
|
||||
BBStr *bbTextureName( Texture *t ){
|
||||
debugTexture(t);
|
||||
CachedTexture *c=t->getCachedTexture();
|
||||
return c ? d_new BBStr( c->getName().c_str() ) : d_new BBStr("");
|
||||
return c ? new BBStr( c->getName().c_str() ) : new BBStr("");
|
||||
}
|
||||
|
||||
void bbSetCubeFace( Texture *t,int face ){
|
||||
@@ -476,7 +476,7 @@ void bbTextureFilter( BBStr *t,int flags ){
|
||||
////////////////////
|
||||
Brush * bbCreateBrush( float r,float g,float b ){
|
||||
debug3d();
|
||||
Brush *br=d_new Brush();
|
||||
Brush *br=new Brush();
|
||||
br->setColor( Vector( r*ctof,g*ctof,b*ctof ) );
|
||||
brush_set.insert( br );
|
||||
return br;
|
||||
@@ -522,7 +522,7 @@ void bbBrushTexture( Brush *b,Texture *t,int frame,int index ){
|
||||
|
||||
Texture *bbGetBrushTexture( Brush *b,int index ){
|
||||
debugBrush(b);
|
||||
Texture *tex=d_new Texture(b->getTexture(index));
|
||||
Texture *tex=new Texture(b->getTexture(index));
|
||||
texture_set.insert( tex );
|
||||
return tex;
|
||||
}
|
||||
@@ -542,7 +542,7 @@ void bbBrushFX( Brush *b,int fx ){
|
||||
///////////////////
|
||||
Entity * bbCreateMesh( Entity *p ){
|
||||
debugParent(p);
|
||||
MeshModel *m=d_new MeshModel();
|
||||
MeshModel *m=new MeshModel();
|
||||
return insertEntity( m,p );
|
||||
}
|
||||
|
||||
@@ -552,7 +552,7 @@ Entity * bbLoadMesh( BBStr *f,Entity *p ){
|
||||
delete f;
|
||||
|
||||
if( !e ) return 0;
|
||||
MeshModel *m=d_new MeshModel();
|
||||
MeshModel *m=new MeshModel();
|
||||
collapseMesh( m,e );
|
||||
return insertEntity( m,p );
|
||||
}
|
||||
@@ -597,7 +597,7 @@ Entity * bbCopyMesh( MeshModel *m,Entity *p ){
|
||||
debugMesh(m);
|
||||
debugParent(p);
|
||||
|
||||
MeshModel *t=d_new MeshModel();
|
||||
MeshModel *t=new MeshModel();
|
||||
t->add( *m );
|
||||
return insertEntity( t,p );
|
||||
}
|
||||
@@ -729,14 +729,14 @@ Surface * bbCreateSurface( MeshModel *m,Brush *b ){
|
||||
}
|
||||
|
||||
Brush *bbGetSurfaceBrush( Surface *s ){
|
||||
Brush *br=d_new Brush( s->getBrush() );
|
||||
Brush *br=new Brush( s->getBrush() );
|
||||
brush_set.insert( br );
|
||||
return br;
|
||||
}
|
||||
|
||||
Brush *bbGetEntityBrush( Model *m ){
|
||||
debugModel(m);
|
||||
Brush *br=d_new Brush( m->getBrush() );
|
||||
Brush *br=new Brush( m->getBrush() );
|
||||
brush_set.insert( br );
|
||||
return br;
|
||||
}
|
||||
@@ -858,7 +858,7 @@ Entity * bbCreateCamera( Entity *p ){
|
||||
debugParent(p);
|
||||
int x,y,w,h;
|
||||
gx_canvas->getViewport( &x,&y,&w,&h );
|
||||
Camera *c=d_new Camera();
|
||||
Camera *c=new Camera();
|
||||
c->setViewport( x,y,w,h );
|
||||
return insertEntity( c,p );
|
||||
}
|
||||
@@ -1066,7 +1066,7 @@ int bbPickedTriangle(){
|
||||
////////////////////
|
||||
Entity * bbCreateLight( int type,Entity *p ){
|
||||
debugParent(p);
|
||||
Light *t=d_new Light( type );
|
||||
Light *t=new Light( type );
|
||||
return insertEntity( t,p );
|
||||
}
|
||||
|
||||
@@ -1096,7 +1096,7 @@ void bbLightConeAngles( Light *light,float inner,float outer ){
|
||||
////////////////////
|
||||
Entity * bbCreatePivot( Entity *p ){
|
||||
debugParent(p);
|
||||
Pivot *t=d_new Pivot();
|
||||
Pivot *t=new Pivot();
|
||||
return insertEntity( t,p );
|
||||
}
|
||||
|
||||
@@ -1105,7 +1105,7 @@ Entity * bbCreatePivot( Entity *p ){
|
||||
/////////////////////
|
||||
Entity * bbCreateSprite( Entity *p ){
|
||||
debugParent(p);
|
||||
Sprite *s=d_new Sprite();
|
||||
Sprite *s=new Sprite();
|
||||
s->setFX( gxScene::FX_FULLBRIGHT );
|
||||
return insertEntity( s,p );
|
||||
}
|
||||
@@ -1114,7 +1114,7 @@ Entity * bbLoadSprite( BBStr *file,int flags,Entity *p ){
|
||||
debugParent(p);
|
||||
Texture t( *file,flags );
|
||||
delete file;if( !t.getCanvas(0) ) return 0;
|
||||
Sprite *s=d_new Sprite();
|
||||
Sprite *s=new Sprite();
|
||||
s->setTexture( 0,t,0 );
|
||||
s->setFX( gxScene::FX_FULLBRIGHT );
|
||||
|
||||
@@ -1150,7 +1150,7 @@ void bbSpriteViewMode( Sprite *s,int mode ){
|
||||
/////////////////////
|
||||
Entity * bbCreateMirror( Entity *p ){
|
||||
debugParent(p);
|
||||
Mirror *t=d_new Mirror();
|
||||
Mirror *t=new Mirror();
|
||||
return insertEntity( t,p );
|
||||
}
|
||||
|
||||
@@ -1162,7 +1162,7 @@ Entity * bbCreatePlane( int segs,Entity *p ){
|
||||
debugParent(p);
|
||||
if( segs<1 || segs>20 ) ThrowRuntimeException( "Illegal number of segments" );
|
||||
}
|
||||
PlaneModel *t=d_new PlaneModel( segs );
|
||||
PlaneModel *t=new PlaneModel( segs );
|
||||
return insertEntity( t,p );
|
||||
}
|
||||
|
||||
@@ -1171,7 +1171,7 @@ Entity * bbCreatePlane( int segs,Entity *p ){
|
||||
//////////////////
|
||||
Entity * bbLoadMD2( BBStr *file,Entity *p ){
|
||||
debugParent(p);
|
||||
MD2Model *t=d_new MD2Model( *file );delete file;
|
||||
MD2Model *t=new MD2Model( *file );delete file;
|
||||
if( !t->getValid() ){ delete t;return 0; }
|
||||
return insertEntity( t,p );
|
||||
}
|
||||
@@ -1202,7 +1202,7 @@ int bbMD2Animating( MD2Model *m ){
|
||||
Entity * bbLoadBSP( BBStr *file,float gam,Entity *p ){
|
||||
debugParent(p);
|
||||
CachedTexture::setPath( filenamepath( *file ) );
|
||||
Q3BSPModel *t=d_new Q3BSPModel( *file,gam );delete file;
|
||||
Q3BSPModel *t=new Q3BSPModel( *file,gam );delete file;
|
||||
CachedTexture::setPath( "" );
|
||||
|
||||
if( !t->isValid() ){ delete t;return 0; }
|
||||
@@ -1246,7 +1246,7 @@ Entity * bbCreateTerrain( int n,Entity *p ){
|
||||
int shift=0;
|
||||
while( (1<<shift)<n ) ++shift;
|
||||
if( (1<<shift)!=n ) ThrowRuntimeException( "Illegal terrain size" );
|
||||
Terrain *t=d_new Terrain( shift );
|
||||
Terrain *t=new Terrain( shift );
|
||||
return insertEntity( t,p );
|
||||
}
|
||||
|
||||
@@ -1259,7 +1259,7 @@ Entity * bbLoadTerrain( BBStr *file,Entity *p ){
|
||||
int shift=0;
|
||||
while( (1<<shift)<w ) ++shift;
|
||||
if( (1<<shift)!=w ) ThrowRuntimeException( "Illegal terrain size" );
|
||||
Terrain *t=d_new Terrain( shift );
|
||||
Terrain *t=new Terrain( shift );
|
||||
c->lock();
|
||||
for( int y=0;y<h;++y ){
|
||||
for( int x=0;x<w;++x ){
|
||||
@@ -1322,7 +1322,7 @@ Entity * bbCreateListener( Entity *p,float roll,float dopp,float dist ){
|
||||
debugParent(p);
|
||||
if( listener ) ThrowRuntimeException( "Listener already created" );
|
||||
}
|
||||
listener=d_new Listener( roll,dopp,dist );
|
||||
listener=new Listener( roll,dopp,dist );
|
||||
return insertEntity( listener,p );
|
||||
}
|
||||
|
||||
@@ -1478,7 +1478,7 @@ int bbAddAnimSeq( Object *o,int length ){
|
||||
if( anim ){
|
||||
anim->addSeq( length );
|
||||
}else{
|
||||
anim=d_new Animator( o,length );
|
||||
anim=new Animator( o,length );
|
||||
o->setAnimator( anim );
|
||||
}
|
||||
return anim->numSeqs()-1;
|
||||
@@ -1886,7 +1886,7 @@ void bbNameEntity( Entity *e,BBStr *t ){
|
||||
|
||||
BBStr * bbEntityName( Entity *e ){
|
||||
debugEntity(e);
|
||||
return d_new BBStr( e->getName() );
|
||||
return new BBStr( e->getName() );
|
||||
}
|
||||
|
||||
BBStr *bbEntityClass( Entity *e ){
|
||||
@@ -1928,7 +1928,7 @@ int bbActiveTextures(){
|
||||
void blitz3d_open(){
|
||||
gx_scene=gx_graphics->createScene( 0 );
|
||||
if( !gx_scene ) ThrowRuntimeException( "Unable to create 3D Scene" );
|
||||
world=d_new World();
|
||||
world=new World();
|
||||
projected=Vector();
|
||||
picked.collision=Collision();
|
||||
picked.with=0;picked.coords=Vector();
|
||||
|
||||
@@ -43,9 +43,9 @@ static inline void debugDir( gxDir *d ){
|
||||
|
||||
static bbFile *open( BBStr *f,int n ){
|
||||
string t=*f;
|
||||
filebuf *buf=d_new filebuf();
|
||||
filebuf *buf=new filebuf();
|
||||
if( buf->open( t.c_str(),n|ios_base::binary ) ){
|
||||
bbFile *f=d_new bbFile( buf );
|
||||
bbFile *f=new bbFile( buf );
|
||||
file_set.insert( f );
|
||||
return f;
|
||||
}
|
||||
@@ -90,11 +90,11 @@ void bbCloseDir( gxDir *d ){
|
||||
|
||||
BBStr *bbNextFile( gxDir *d ){
|
||||
debugDir( d );
|
||||
return d_new BBStr( d->getNextFile() );
|
||||
return new BBStr( d->getNextFile() );
|
||||
}
|
||||
|
||||
BBStr *bbCurrentDir(){
|
||||
return d_new BBStr( gx_filesys->getCurrentDir() );
|
||||
return new BBStr( gx_filesys->getCurrentDir() );
|
||||
}
|
||||
|
||||
void bbChangeDir( BBStr *d ){
|
||||
|
||||
+11
-11
@@ -199,7 +199,7 @@ static bool saveCanvas(gxCanvas *c, const string &f) {
|
||||
out.write((char*)&bf, sizeof(bf));
|
||||
out.write((char*)&bi, sizeof(bi));
|
||||
|
||||
unsigned char *temp = d_new unsigned char[tempsize];
|
||||
unsigned char *temp = new unsigned char[tempsize];
|
||||
memset(temp, 0, tempsize);
|
||||
|
||||
c->lock();
|
||||
@@ -228,7 +228,7 @@ BBStr * bbGfxDriverName(int n) {
|
||||
debugDriver(n);
|
||||
string t; int caps;
|
||||
gx_runtime->graphicsDriverInfo(n - 1, &t, &caps);
|
||||
return d_new BBStr(t);
|
||||
return new BBStr(t);
|
||||
}
|
||||
|
||||
void bbSetGfxDriver(int n) {
|
||||
@@ -696,7 +696,7 @@ bbImage *bbLoadImage(BBStr *s) {
|
||||
if (auto_midhandle) c->setHandle(c->getWidth() / 2, c->getHeight() / 2);
|
||||
vector<gxCanvas*> frames;
|
||||
frames.push_back(c);
|
||||
bbImage *i = d_new bbImage(frames);
|
||||
bbImage *i = new bbImage(frames);
|
||||
image_set.insert(i);
|
||||
return i;
|
||||
}
|
||||
@@ -736,7 +736,7 @@ bbImage *bbLoadAnimImage(BBStr *s, int w, int h, int first, int cnt) {
|
||||
src_x += w; if (src_x + w > pic->getWidth()) { src_x = 0; src_y += h; }
|
||||
}
|
||||
gx_graphics->freeCanvas(pic);
|
||||
bbImage *i = d_new bbImage(frames);
|
||||
bbImage *i = new bbImage(frames);
|
||||
image_set.insert(i);
|
||||
return i;
|
||||
}
|
||||
@@ -762,7 +762,7 @@ bbImage *bbCopyImage(bbImage *i) {
|
||||
c->setMask(t->getMask());
|
||||
frames.push_back(c);
|
||||
}
|
||||
bbImage *t = d_new bbImage(frames);
|
||||
bbImage *t = new bbImage(frames);
|
||||
image_set.insert(t);
|
||||
return t;
|
||||
}
|
||||
@@ -779,7 +779,7 @@ bbImage *bbCreateImage(int w, int h, int n) {
|
||||
if (auto_midhandle) c->setHandle(c->getWidth() / 2, c->getHeight() / 2);
|
||||
frames.push_back(c);
|
||||
}
|
||||
bbImage *i = d_new bbImage(frames);
|
||||
bbImage *i = new bbImage(frames);
|
||||
image_set.insert(i);
|
||||
return i;
|
||||
}
|
||||
@@ -1067,7 +1067,7 @@ BBStr *bbInput(BBStr *prompt) {
|
||||
p_canvas = gx_graphics->createCanvas(c->getWidth(), curr_font->getHeight() * 2, 0);
|
||||
if (!p_canvas) {
|
||||
endPrinting(c);
|
||||
return d_new BBStr();
|
||||
return new BBStr();
|
||||
}
|
||||
}
|
||||
//draw prompt
|
||||
@@ -1177,7 +1177,7 @@ BBStr *bbInput(BBStr *prompt) {
|
||||
curs_x = 0;
|
||||
curs_y += curr_font->getHeight();
|
||||
endPrinting(c);
|
||||
return d_new BBStr(str);
|
||||
return new BBStr(str);
|
||||
}
|
||||
|
||||
void bbLocate(int x, int y) {
|
||||
@@ -1360,9 +1360,9 @@ void graphics_link(void(*rtSym)(const char *sym, void *pc)) {
|
||||
|
||||
rtSym("ShowPointer", bbShowPointer);
|
||||
rtSym("HidePointer", bbHidePointer);
|
||||
}
|
||||
|
||||
// NVidia Optimus
|
||||
}
|
||||
|
||||
// NVidia Optimus
|
||||
extern "C" {
|
||||
_declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
|
||||
}
|
||||
@@ -40,17 +40,17 @@ int bbMilliSecs() {
|
||||
}
|
||||
|
||||
BBStr * bbCommandLine() {
|
||||
return d_new BBStr(gx_runtime->commandLine());
|
||||
return new BBStr(gx_runtime->commandLine());
|
||||
}
|
||||
|
||||
BBStr * bbSystemProperty(BBStr *p) {
|
||||
string t = gx_runtime->systemProperty(*p);
|
||||
delete p; return d_new BBStr(t);
|
||||
delete p; return new BBStr(t);
|
||||
}
|
||||
|
||||
BBStr * bbGetEnv(BBStr *env_var) {
|
||||
char *p = getenv(env_var->c_str());
|
||||
BBStr *val = d_new BBStr(p ? p : "");
|
||||
BBStr *val = new BBStr(p ? p : "");
|
||||
delete env_var;
|
||||
return val;
|
||||
}
|
||||
|
||||
@@ -262,7 +262,7 @@ TCPStream *TCPServer::accept() {
|
||||
if (n != 1) { e = -1; return 0; }
|
||||
SOCKET t = ::accept(sock, 0, 0);
|
||||
if (t == INVALID_SOCKET) { e = -1; return 0; }
|
||||
TCPStream *s = d_new TCPStream(t, this);
|
||||
TCPStream *s = new TCPStream(t, this);
|
||||
accepted_set.insert(s);
|
||||
return s;
|
||||
}
|
||||
@@ -315,7 +315,7 @@ UDPStream *bbCreateUDPStream(int port) {
|
||||
if (s != INVALID_SOCKET) {
|
||||
sockaddr_in addr = { AF_INET,htons(port) };
|
||||
if (!::bind(s, (sockaddr*)&addr, sizeof(addr))) {
|
||||
UDPStream *p = d_new UDPStream(s);
|
||||
UDPStream *p = new UDPStream(s);
|
||||
udp_set.insert(p);
|
||||
return p;
|
||||
}
|
||||
@@ -365,7 +365,7 @@ void bbUDPTimeouts(int rt) {
|
||||
}
|
||||
|
||||
BBStr *bbDottedIP(int ip) {
|
||||
return d_new BBStr(
|
||||
return new BBStr(
|
||||
itoa((ip >> 24) & 255) + "." + itoa((ip >> 16) & 255) + "." +
|
||||
itoa((ip >> 8) & 255) + "." + itoa(ip & 255));
|
||||
}
|
||||
@@ -401,7 +401,7 @@ TCPStream *bbOpenTCPStream(BBStr *server, int port, int local_port) {
|
||||
sockaddr_in addr = { AF_INET,htons(port) };
|
||||
addr.sin_addr.S_un.S_addr = ip;
|
||||
if (!::connect(s, (sockaddr*)&addr, sizeof(addr))) {
|
||||
TCPStream *p = d_new TCPStream(s, 0);
|
||||
TCPStream *p = new TCPStream(s, 0);
|
||||
tcp_set.insert(p);
|
||||
return p;
|
||||
}
|
||||
@@ -422,7 +422,7 @@ TCPServer * bbCreateTCPServer(int port) {
|
||||
sockaddr_in addr = { AF_INET,htons(port) };
|
||||
if (!::bind(s, (sockaddr*)&addr, sizeof(addr))) {
|
||||
if (!::listen(s, SOMAXCONN)) {
|
||||
TCPServer *p = d_new TCPServer(s);
|
||||
TCPServer *p = new TCPServer(s);
|
||||
server_set.insert(p);
|
||||
return p;
|
||||
}
|
||||
|
||||
@@ -58,9 +58,9 @@ float bbReadFloat( bbStream *s ){
|
||||
BBStr *bbReadString( bbStream *s ){
|
||||
if( debug ) debugStream( s );
|
||||
int len;
|
||||
BBStr *str=d_new BBStr();
|
||||
BBStr *str=new BBStr();
|
||||
if( s->read( (char*)&len,4 ) ){
|
||||
char *buff=d_new char[len];
|
||||
char *buff=new char[len];
|
||||
if( s->read( buff,len ) ){
|
||||
*str=string( buff,len );
|
||||
}
|
||||
@@ -72,7 +72,7 @@ BBStr *bbReadString( bbStream *s ){
|
||||
BBStr *bbReadLine( bbStream *s ){
|
||||
if( debug ) debugStream( s );
|
||||
unsigned char c;
|
||||
BBStr *str=d_new BBStr();
|
||||
BBStr *str=new BBStr();
|
||||
for(;;){
|
||||
if( s->read( (char*)&c,1 )!=1 ) break;
|
||||
if( c=='\n' ) break;
|
||||
@@ -121,7 +121,7 @@ void bbCopyStream( bbStream *s,bbStream *d,int buff_size ){
|
||||
debugStream( s );debugStream( d );
|
||||
if( buff_size<1 || buff_size>1024*1024 ) ThrowRuntimeException( "Illegal buffer size" );
|
||||
}
|
||||
char *buff=d_new char[buff_size];
|
||||
char *buff=new char[buff_size];
|
||||
while( s->eof()==0 && d->eof()==0 ){
|
||||
int n=s->read( buff,buff_size );
|
||||
d->write( buff,n );
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#define CHKOFF(x) if( (x)<=0 ) ThrowRuntimeException( "parameter must be greater than 0" );
|
||||
|
||||
BBStr *bbString( BBStr *s,int n ){
|
||||
BBStr *t=d_new BBStr();
|
||||
BBStr *t=new BBStr();
|
||||
while( n-->0 ) *t+=*s;
|
||||
delete s;return t;
|
||||
}
|
||||
@@ -83,7 +83,7 @@ BBStr *bbRSet( BBStr *s,int n ){
|
||||
}
|
||||
|
||||
BBStr *bbChr( int n ){
|
||||
BBStr *t=d_new BBStr();
|
||||
BBStr *t=new BBStr();
|
||||
*t+=(char)n;return t;
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ BBStr *bbHex( int n ){
|
||||
buff[k]=t>'9' ? t+='A'-'9'-1 : t;
|
||||
}
|
||||
buff[8]=0;
|
||||
return d_new BBStr( buff );
|
||||
return new BBStr( buff );
|
||||
}
|
||||
|
||||
BBStr *bbBin( int n ){
|
||||
@@ -103,7 +103,7 @@ BBStr *bbBin( int n ){
|
||||
buff[k]=n&1 ? '1' : '0';
|
||||
}
|
||||
buff[32]=0;
|
||||
return d_new BBStr( buff );
|
||||
return new BBStr( buff );
|
||||
}
|
||||
|
||||
int bbAsc( BBStr *s ){
|
||||
@@ -121,7 +121,7 @@ BBStr *bbCurrentDate(){
|
||||
time( &t );
|
||||
char buff[256];
|
||||
strftime( buff,256,"%d %b %Y",localtime( &t ) );
|
||||
return d_new BBStr( buff );
|
||||
return new BBStr( buff );
|
||||
}
|
||||
|
||||
BBStr *bbCurrentTime(){
|
||||
@@ -129,7 +129,7 @@ BBStr *bbCurrentTime(){
|
||||
time( &t );
|
||||
char buff[256];
|
||||
strftime( buff,256,"%H:%M:%S",localtime( &t ) );
|
||||
return d_new BBStr( buff );
|
||||
return new BBStr( buff );
|
||||
}
|
||||
|
||||
bool string_create(){
|
||||
|
||||
+10
-10
@@ -76,7 +76,7 @@
|
||||
//
|
||||
//static BOOL FAR PASCAL enumPlayer( DPID id,DWORD type,LPCDPNAME name,DWORD flags,LPVOID context ){
|
||||
// Player *p=findPlayer( id );if( p ) return TRUE;
|
||||
// p=d_new Player( id,string( name->lpszShortNameA ),true );
|
||||
// p=new Player( id,string( name->lpszShortNameA ),true );
|
||||
// return TRUE;
|
||||
//}
|
||||
//
|
||||
@@ -103,8 +103,8 @@
|
||||
//bool multiplay_create(){
|
||||
//
|
||||
// recv_buff_sz=send_buff_sz=1024;
|
||||
// recv_buff=d_new char[recv_buff_sz];
|
||||
// send_buff=d_new char[send_buff_sz];
|
||||
// recv_buff=new char[recv_buff_sz];
|
||||
// send_buff=new char[send_buff_sz];
|
||||
//
|
||||
// multiplay_setup_create();
|
||||
//
|
||||
@@ -176,7 +176,7 @@
|
||||
//
|
||||
// if( dirPlay->CreatePlayer( &id,&name,0,0,0,0 )<0 ) return 0;
|
||||
//
|
||||
// Player *p=d_new Player( id,t,false );
|
||||
// Player *p=new Player( id,t,false );
|
||||
//
|
||||
// if( players.size()==1 ){
|
||||
// if( dirPlay->EnumPlayers( 0,enumPlayer,0,0 )<0 ){
|
||||
@@ -198,9 +198,9 @@
|
||||
//}
|
||||
//
|
||||
//BBStr *bbNetPlayerName( DPID player ){
|
||||
// if( !player ) return d_new BBStr( "<all>" );
|
||||
// if( !player ) return new BBStr( "<all>" );
|
||||
// Player *p=findPlayer( player );
|
||||
// return d_new BBStr( p ? p->name : "<unknown>" );
|
||||
// return new BBStr( p ? p->name : "<unknown>" );
|
||||
//}
|
||||
//
|
||||
//int bbNetPlayerLocal( DPID player ){
|
||||
@@ -230,7 +230,7 @@
|
||||
//
|
||||
// if( n==DPERR_BUFFERTOOSMALL ){
|
||||
// sz=recv_buff_sz=sz/2+sz;
|
||||
// delete[] recv_buff;recv_buff=d_new char[recv_buff_sz];
|
||||
// delete[] recv_buff;recv_buff=new char[recv_buff_sz];
|
||||
// n=dirPlay->Receive( &from,&to,0,recv_buff,&sz );
|
||||
// }
|
||||
//
|
||||
@@ -241,7 +241,7 @@
|
||||
// case DPSYS_CREATEPLAYERORGROUP:
|
||||
// if( DPMSG_CREATEPLAYERORGROUP *msg=(DPMSG_CREATEPLAYERORGROUP*)recv_buff ){
|
||||
// if( findPlayer( from=msg->dpId ) ) continue;
|
||||
// d_new Player( from,string( msg->dpnName.lpszShortNameA ),true );
|
||||
// new Player( from,string( msg->dpnName.lpszShortNameA ),true );
|
||||
// continue;
|
||||
// }
|
||||
// break;
|
||||
@@ -277,7 +277,7 @@
|
||||
//}
|
||||
//
|
||||
//BBStr *bbNetMsgData(){
|
||||
// return d_new BBStr( msg_data );
|
||||
// return new BBStr( msg_data );
|
||||
//}
|
||||
//
|
||||
//DPID bbNetMsgFrom(){
|
||||
@@ -294,7 +294,7 @@
|
||||
// int sz=msg->size()+sizeof(bbMsg);
|
||||
// if( sz>send_buff_sz ){
|
||||
// send_buff_sz=sz/2+sz;
|
||||
// delete send_buff;send_buff=d_new char[send_buff_sz];
|
||||
// delete send_buff;send_buff=new char[send_buff_sz];
|
||||
// }
|
||||
// bbMsg *m=(bbMsg*)send_buff;
|
||||
// m->type=type;m->from=from;m->to=to;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
// void *data;
|
||||
//
|
||||
// Connection( const GUID &g,const string &n,void *d,int sz ):guid(g),name(n){
|
||||
// data=d_new char[sz];memcpy( data,d,sz );
|
||||
// data=new char[sz];memcpy( data,d,sz );
|
||||
// }
|
||||
//
|
||||
// ~Connection(){
|
||||
@@ -67,7 +67,7 @@
|
||||
// int n=dp->InitializeConnection( conn,0 );
|
||||
// dp->Release();if( n<0 ) return TRUE;
|
||||
//
|
||||
// Connection *c=d_new Connection( *guid,string( strdup( name->lpszShortNameA ) ),conn,size );
|
||||
// Connection *c=new Connection( *guid,string( strdup( name->lpszShortNameA ) ),conn,size );
|
||||
// connections.push_back( c );
|
||||
//
|
||||
// return TRUE;
|
||||
@@ -76,7 +76,7 @@
|
||||
//static BOOL FAR PASCAL enumSession( LPCDPSESSIONDESC2 desc,LPDWORD timeout,DWORD flags,LPVOID lpContext ){
|
||||
//
|
||||
// if( !desc ) return FALSE;
|
||||
// sessions.push_back( d_new Session( desc ) );
|
||||
// sessions.push_back( new Session( desc ) );
|
||||
// return TRUE;
|
||||
//}
|
||||
//
|
||||
@@ -196,7 +196,7 @@
|
||||
// case WM_INITDIALOG:
|
||||
// SetForegroundWindow( hwnd );
|
||||
// clearConnections();
|
||||
// connections.push_back( d_new Connection( GUID_NULL,"<no connection>","",0 ) );
|
||||
// connections.push_back( new Connection( GUID_NULL,"<no connection>","",0 ) );
|
||||
// if( openDirPlay( hwnd ) ){
|
||||
// if( dirPlay->EnumConnections( 0,enumConnection,0,0 )<0 ){
|
||||
// MessageBox( hwnd,"Failed to enumerate connections","DirectPlay Error",MB_SETFOREGROUND|MB_TOPMOST|MB_ICONWARNING|MB_OK );
|
||||
|
||||
+8
-8
@@ -88,7 +88,7 @@ static const char *linkRuntime() {
|
||||
for (k = 1; k < s.size(); ++k, end = k) {
|
||||
if (!isalnum(s[k]) && s[k] != '_') break;
|
||||
}
|
||||
DeclSeq *params = d_new DeclSeq();
|
||||
DeclSeq *params = new DeclSeq();
|
||||
string n = s.substr(start, end - start);
|
||||
while (k < s.size()) {
|
||||
Type *t = typeof(s[k++]);
|
||||
@@ -101,23 +101,23 @@ static const char *linkRuntime() {
|
||||
if (s[k] == '\"') {
|
||||
for (++k; s[k] != '\"'; ++k) {}
|
||||
string t = s.substr(from + 1, k - from - 1);
|
||||
defType = d_new ConstType(t); ++k;
|
||||
defType = new ConstType(t); ++k;
|
||||
} else {
|
||||
if (s[k] == '-') ++k;
|
||||
for (; isdigit(s[k]); ++k) {}
|
||||
if (t == Type::int_type) {
|
||||
int n = atoi(s.substr(from, k - from));
|
||||
defType = d_new ConstType(n);
|
||||
defType = new ConstType(n);
|
||||
} else {
|
||||
float n = atof(s.substr(from, k - from));
|
||||
defType = d_new ConstType(n);
|
||||
defType = new ConstType(n);
|
||||
}
|
||||
}
|
||||
}
|
||||
Decl *d = params->insertDecl(str, t, DECL_PARAM, defType);
|
||||
}
|
||||
|
||||
FuncType *f = d_new FuncType(t, params, false, cfunc);
|
||||
FuncType *f = new FuncType(t, params, false, cfunc);
|
||||
n = tolower(n);
|
||||
runtimeEnviron->funcDecls->insertDecl(n, f, DECL_FUNC);
|
||||
runtimeModule->addSymbol(("_f" + n).c_str(), pc);
|
||||
@@ -169,7 +169,7 @@ static const char *loadUserLib(const string &userlib) {
|
||||
if (ty) next(in);
|
||||
else ty = Type::void_type;
|
||||
|
||||
DeclSeq *params = d_new DeclSeq();
|
||||
DeclSeq *params = new DeclSeq();
|
||||
|
||||
if (curr != '(') return "expecting '(' after function identifier";
|
||||
next(in);
|
||||
@@ -200,7 +200,7 @@ static const char *loadUserLib(const string &userlib) {
|
||||
|
||||
keyWords.push_back(id);
|
||||
|
||||
FuncType *fn = d_new FuncType(ty, params, true, true);
|
||||
FuncType *fn = new FuncType(ty, params, true, true);
|
||||
|
||||
runtimeEnviron->funcDecls->insertDecl(lower_id, fn, DECL_FUNC);
|
||||
|
||||
@@ -285,7 +285,7 @@ const char *openLibs() {
|
||||
runtimeLib->startup(GetModuleHandle(0));
|
||||
|
||||
runtimeModule = linkerLib->createModule();
|
||||
runtimeEnviron = d_new Environ("", Type::int_type, 0, 0);
|
||||
runtimeEnviron = new Environ("", Type::int_type, 0, 0);
|
||||
|
||||
keyWords.clear();
|
||||
userFuncs.clear();
|
||||
|
||||
@@ -197,7 +197,7 @@ struct Animation::Rep{
|
||||
};
|
||||
|
||||
Animation::Animation():
|
||||
rep( d_new Rep() ){
|
||||
rep( new Rep() ){
|
||||
}
|
||||
|
||||
Animation::Animation( const Animation &t ):
|
||||
@@ -206,7 +206,7 @@ rep( t.rep ){
|
||||
}
|
||||
|
||||
Animation::Animation( const Animation &t,int first,int last ):
|
||||
rep( d_new Rep() ){
|
||||
rep( new Rep() ){
|
||||
Rep::KeyList::const_iterator it;
|
||||
for( it=t.rep->pos_anim.begin();it!=t.rep->pos_anim.end();++it ){
|
||||
const Rep::Key &key=*it;
|
||||
@@ -239,7 +239,7 @@ Animation &Animation::operator=( const Animation &t ){
|
||||
Animation::Rep *Animation::write(){
|
||||
if( rep->ref_cnt>1 ){
|
||||
--rep->ref_cnt;
|
||||
rep=d_new Rep( *rep );
|
||||
rep=new Rep( *rep );
|
||||
}
|
||||
return rep;
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ CachedTexture::Rep *CachedTexture::findRep( const string &f,int flags,int w,int
|
||||
}
|
||||
|
||||
CachedTexture::CachedTexture( int w,int h,int flags,int cnt ):
|
||||
rep(d_new Rep(w,h,flags,cnt)){
|
||||
rep(new Rep(w,h,flags,cnt)){
|
||||
}
|
||||
|
||||
CachedTexture::CachedTexture( const string &f_,int flags,int w,int h,int first,int cnt ){
|
||||
@@ -114,7 +114,7 @@ CachedTexture::CachedTexture( const string &f_,int flags,int w,int h,int first,i
|
||||
if( path.size() ){
|
||||
string t=path+tolower( filenamefile( f ) );
|
||||
if( rep=findRep( t,flags,w,h,first,cnt ) ) return;
|
||||
rep=d_new Rep( t,flags,w,h,first,cnt );
|
||||
rep=new Rep( t,flags,w,h,first,cnt );
|
||||
if( rep->frames.size() ){
|
||||
rep_set.insert( rep );
|
||||
return;
|
||||
@@ -123,7 +123,7 @@ CachedTexture::CachedTexture( const string &f_,int flags,int w,int h,int first,i
|
||||
}
|
||||
string t=tolower( fullfilename( f ) );
|
||||
if( rep=findRep( t,flags,w,h,first,cnt ) ) return;
|
||||
rep=d_new Rep( t,flags,w,h,first,cnt );
|
||||
rep=new Rep( t,flags,w,h,first,cnt );
|
||||
rep_set.insert( rep );
|
||||
}
|
||||
|
||||
|
||||
@@ -14,8 +14,6 @@ static float PI = 3.14159265359f; //180 degrees
|
||||
static float TWOPI = PI*2.0f; //360 degrees
|
||||
static float HALFPI = PI*.5f; //90 degrees
|
||||
static float QUARTERPI = PI*.25f; //45 degrees
|
||||
//static float FLT_EPSILON=.000001f; //small value
|
||||
//static float INFINITY=10000000.0f; //big value
|
||||
|
||||
class Vector {
|
||||
public:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ public:
|
||||
~Listener();
|
||||
|
||||
//Entity interface
|
||||
Entity *clone(){ return d_new Listener( *this ); }
|
||||
Entity *clone(){ return new Listener( *this ); }
|
||||
Listener *getListener(){ return this; }
|
||||
|
||||
//Listener interface
|
||||
|
||||
@@ -244,7 +244,7 @@ static void parseObject( MeshModel *root ){
|
||||
while( int id=nextChunk() ){
|
||||
switch( id ){
|
||||
case CHUNK_TRIMESH:
|
||||
mesh=d_new MeshModel();
|
||||
mesh=new MeshModel();
|
||||
mesh->setName( name );
|
||||
mesh->setParent( root );
|
||||
name_map[name]=mesh;
|
||||
@@ -419,7 +419,7 @@ static void parseMeshInfo( MeshModel *root,float curr_time ){
|
||||
}
|
||||
MeshModel *mesh=0;
|
||||
if( name=="$$$DUMMY" ){
|
||||
mesh=d_new MeshModel();
|
||||
mesh=new MeshModel();
|
||||
mesh->setName( inst );
|
||||
mesh->setParent( p );
|
||||
}else{
|
||||
@@ -465,7 +465,7 @@ static void parseKeyFramer( MeshModel *root ){
|
||||
}
|
||||
|
||||
if( !collapse ){
|
||||
root->setAnimator( d_new Animator( root,anim_len ) );
|
||||
root->setAnimator( new Animator( root,anim_len ) );
|
||||
}
|
||||
|
||||
leaveChunk();
|
||||
@@ -479,7 +479,7 @@ static MeshModel *parseFile(){
|
||||
chunk_end=(int)in.pubseekoff( 0,ios_base::cur )+len-6;
|
||||
|
||||
enterChunk();
|
||||
MeshModel *root=d_new MeshModel();
|
||||
MeshModel *root=new MeshModel();
|
||||
while( int id=nextChunk() ){
|
||||
switch( id ){
|
||||
case CHUNK_SCENE:
|
||||
|
||||
@@ -210,7 +210,7 @@ static Object *readBone(){
|
||||
t.m.k.z=.1f;
|
||||
bone->transform( t );
|
||||
#else
|
||||
Pivot *bone=d_new Pivot();
|
||||
Pivot *bone=new Pivot();
|
||||
#endif
|
||||
|
||||
bones.push_back( bone );
|
||||
@@ -264,7 +264,7 @@ static Object *readObject( Object *parent ){
|
||||
switch( readChunk() ){
|
||||
case 'MESH':
|
||||
MeshLoader::beginMesh();
|
||||
obj=mesh=d_new MeshModel();
|
||||
obj=mesh=new MeshModel();
|
||||
mesh_brush=readInt();
|
||||
mesh_flags=readMesh();
|
||||
break;
|
||||
@@ -280,14 +280,14 @@ static Object *readObject( Object *parent ){
|
||||
readFloat();
|
||||
break;
|
||||
case 'NODE':
|
||||
if( !obj ) obj=d_new MeshModel();
|
||||
if( !obj ) obj=new MeshModel();
|
||||
readObject( obj );
|
||||
break;
|
||||
}
|
||||
exitChunk();
|
||||
}
|
||||
|
||||
if( !obj ) obj=d_new MeshModel();
|
||||
if( !obj ) obj=new MeshModel();
|
||||
|
||||
obj->setName( name );
|
||||
obj->setLocalPosition( Vector( pos[0],pos[1],pos[2] ) );
|
||||
@@ -303,11 +303,11 @@ static Object *readObject( Object *parent ){
|
||||
|
||||
if( mesh && bones.size() ){
|
||||
bones.insert( bones.begin(),mesh );
|
||||
mesh->setAnimator( d_new Animator( bones,anim_len ) );
|
||||
mesh->setAnimator( new Animator( bones,anim_len ) );
|
||||
mesh->createBones();
|
||||
bones.clear();
|
||||
}else if( anim_len ){
|
||||
obj->setAnimator( d_new Animator( obj,anim_len ) );
|
||||
obj->setAnimator( new Animator( obj,anim_len ) );
|
||||
}
|
||||
|
||||
if( parent ) obj->setParent( parent );
|
||||
|
||||
@@ -290,7 +290,7 @@ static void parseMesh( IDirectXFileData *fileData,MeshModel *mesh ){
|
||||
|
||||
static MeshModel *parseFrame( IDirectXFileData *fileData ){
|
||||
|
||||
MeshModel *e=d_new MeshModel();
|
||||
MeshModel *e=new MeshModel();
|
||||
|
||||
const GUID *guid;
|
||||
IDirectXFileObject *childObj;
|
||||
@@ -346,7 +346,7 @@ static MeshModel *parseFile( const string &file ){
|
||||
}
|
||||
|
||||
anim_len=0;
|
||||
MeshModel *e=d_new MeshModel();
|
||||
MeshModel *e=new MeshModel();
|
||||
for( ;enumObj->GetNextDataObject( &fileData )>=0;fileData->Release() ){
|
||||
if( fileData->GetType( &guid )<0 ) continue;
|
||||
|
||||
@@ -361,7 +361,7 @@ static MeshModel *parseFile( const string &file ){
|
||||
}
|
||||
|
||||
if( !collapse ){
|
||||
e->setAnimator( d_new Animator( e,anim_len ) );
|
||||
e->setAnimator( new Animator( e,anim_len ) );
|
||||
}
|
||||
|
||||
enumObj->Release();
|
||||
|
||||
@@ -12,7 +12,7 @@ struct MD2Model::Rep : public MD2Rep{
|
||||
};
|
||||
|
||||
MD2Model::MD2Model( const string &f ):
|
||||
rep( d_new Rep( f ) ),
|
||||
rep( new Rep( f ) ),
|
||||
anim_mode(0),anim_time(0),
|
||||
render_a(0),render_b(0),render_t(0),trans_verts(0){
|
||||
}
|
||||
@@ -40,7 +40,7 @@ void MD2Model::startMD2Anim( int first,int last,int mode,float speed,float trans
|
||||
else if( last>=rep->numFrames() ) last=rep->numFrames()-1;
|
||||
|
||||
if( trans>0 ){
|
||||
if( !trans_verts ) trans_verts=d_new MD2Rep::Vert[rep->numVertices()];
|
||||
if( !trans_verts ) trans_verts=new MD2Rep::Vert[rep->numVertices()];
|
||||
|
||||
if( anim_mode & 0x8000 ) rep->render( trans_verts,anim_time,trans_time );
|
||||
else rep->render( trans_verts,render_a,render_b,render_t );
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ public:
|
||||
~MD2Model();
|
||||
|
||||
//Entity interface
|
||||
Entity *clone(){ return d_new MD2Model( *this ); }
|
||||
Entity *clone(){ return new MD2Model( *this ); }
|
||||
MD2Model *getMD2Model(){ return this; }
|
||||
|
||||
//Object interface
|
||||
|
||||
@@ -111,7 +111,7 @@ Box MeshCollider::nodeBox( const vector<int> &tris ){
|
||||
|
||||
MeshCollider::Node *MeshCollider::createLeaf( const vector<int> &tris ){
|
||||
|
||||
Node *c=d_new Node;
|
||||
Node *c=new Node;
|
||||
c->box=nodeBox( tris );
|
||||
c->triangles=tris;
|
||||
leaves.push_back( c );
|
||||
@@ -122,7 +122,7 @@ MeshCollider::Node *MeshCollider::createNode( const vector<int> &tris ){
|
||||
|
||||
if( tris.size()<=MAX_COLL_TRIS ) return createLeaf( tris );
|
||||
|
||||
Node *c=d_new Node;
|
||||
Node *c=new Node;
|
||||
c->box=nodeBox( tris );
|
||||
|
||||
//find longest axis
|
||||
|
||||
@@ -31,7 +31,7 @@ static vector<MLMesh*> mesh_stack;
|
||||
|
||||
void MeshLoader::beginMesh(){
|
||||
mesh_stack.push_back( ml_mesh );
|
||||
ml_mesh=d_new MLMesh();
|
||||
ml_mesh=new MLMesh();
|
||||
}
|
||||
|
||||
int MeshLoader::numVertices(){
|
||||
@@ -71,7 +71,7 @@ void MeshLoader::addTriangle( int v0,int v1,int v2,const Brush &b ){
|
||||
map<Brush,Surf*>::const_iterator it=ml_mesh->brush_map.find( b );
|
||||
if( it!=ml_mesh->brush_map.end() ) surf=it->second;
|
||||
else{
|
||||
surf=d_new Surf;
|
||||
surf=new Surf;
|
||||
ml_mesh->brush_map.insert( make_pair( b,surf ) );
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ struct MeshModel::Rep : public Surface::Monitor{
|
||||
}
|
||||
|
||||
Surface *createSurface( const Brush &b ){
|
||||
Surface *t=d_new Surface( this );
|
||||
Surface *t=new Surface( this );
|
||||
surfaces.push_back( t );
|
||||
t->setBrush( b );
|
||||
return t;
|
||||
@@ -153,7 +153,7 @@ struct MeshModel::Rep : public Surface::Monitor{
|
||||
verts.push_back( q );
|
||||
}
|
||||
}
|
||||
collider=d_new MeshCollider( verts,tris );
|
||||
collider=new MeshCollider( verts,tris );
|
||||
coll_valid=geom_changes;
|
||||
}
|
||||
return collider;
|
||||
@@ -161,7 +161,7 @@ struct MeshModel::Rep : public Surface::Monitor{
|
||||
};
|
||||
|
||||
MeshModel::MeshModel():
|
||||
rep( d_new Rep() ),brush_changes(0){
|
||||
rep( new Rep() ),brush_changes(0){
|
||||
}
|
||||
|
||||
MeshModel::MeshModel( const MeshModel &t ):Model( t ),
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ public:
|
||||
|
||||
//Entity interface
|
||||
virtual MeshModel *getMeshModel(){ return this; }
|
||||
virtual Entity *clone(){ return d_new MeshModel( *this ); }
|
||||
virtual Entity *clone(){ return new MeshModel( *this ); }
|
||||
|
||||
//Object interface
|
||||
virtual bool collide( const Line &line,float radius,Collision *curr_coll,const Transform &t );
|
||||
|
||||
@@ -15,7 +15,7 @@ MeshModel *MeshUtil::createCube( const Brush &b ){
|
||||
};
|
||||
static Box box( Vector(-1,-1,-1),Vector(1,1,1) );
|
||||
|
||||
MeshModel *m=d_new MeshModel();
|
||||
MeshModel *m=new MeshModel();
|
||||
Surface *s=m->createSurface( b );
|
||||
Surface::Vertex v;
|
||||
Surface::Triangle t;
|
||||
@@ -38,7 +38,7 @@ MeshModel *MeshUtil::createSphere( const Brush &b,int segs ){
|
||||
|
||||
int h_segs=segs*2,v_segs=segs;
|
||||
|
||||
MeshModel *m=d_new MeshModel();
|
||||
MeshModel *m=new MeshModel();
|
||||
Surface *s=m->createSurface( b );
|
||||
|
||||
Surface::Vertex v;
|
||||
@@ -96,7 +96,7 @@ MeshModel *MeshUtil::createSphere( const Brush &b,int segs ){
|
||||
|
||||
MeshModel *MeshUtil::createCylinder( const Brush &b,int segs,bool solid ){
|
||||
|
||||
MeshModel *m=d_new MeshModel();
|
||||
MeshModel *m=new MeshModel();
|
||||
Surface::Vertex v;
|
||||
Surface::Triangle t;
|
||||
|
||||
@@ -154,7 +154,7 @@ MeshModel *MeshUtil::createCylinder( const Brush &b,int segs,bool solid ){
|
||||
}
|
||||
|
||||
MeshModel *MeshUtil::createCone( const Brush &b,int segs,bool solid ){
|
||||
MeshModel *m=d_new MeshModel();
|
||||
MeshModel *m=new MeshModel();
|
||||
Surface::Vertex v;
|
||||
Surface::Triangle t;
|
||||
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ public:
|
||||
~Mirror();
|
||||
|
||||
//Entity interface
|
||||
Entity *clone(){ return d_new Mirror( *this ); }
|
||||
Entity *clone(){ return new Mirror( *this ); }
|
||||
Mirror *getMirror(){ return this; }
|
||||
};
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ Object *Object::copy(){
|
||||
Object *cpy=e->getObject()->copy();
|
||||
cpy->setParent( last_copy );
|
||||
}
|
||||
if( animator ) last_copy->setAnimator( d_new Animator( animator ) );
|
||||
if( animator ) last_copy->setAnimator( new Animator( animator ) );
|
||||
return last_copy;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ public:
|
||||
|
||||
//Entity interface
|
||||
Object *getObject(){ return this; }
|
||||
Entity *clone(){ return d_new Object( *this ); }
|
||||
Entity *clone(){ return new Object( *this ); }
|
||||
|
||||
//deep object copy!
|
||||
Object *copy();
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ public:
|
||||
Pivot( const Object &t );
|
||||
|
||||
//Entity interface
|
||||
Entity *clone(){ return d_new Pivot( *this ); }
|
||||
Entity *clone(){ return new Pivot( *this ); }
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -100,7 +100,7 @@ struct PlaneModel::Rep{
|
||||
};
|
||||
|
||||
PlaneModel::PlaneModel( int sub_divs ):
|
||||
rep( d_new Rep(sub_divs) ){
|
||||
rep( new Rep(sub_divs) ){
|
||||
}
|
||||
|
||||
PlaneModel::PlaneModel( const PlaneModel &t ):
|
||||
|
||||
@@ -10,7 +10,7 @@ public:
|
||||
PlaneModel( int sub_divs );
|
||||
PlaneModel( const PlaneModel &t );
|
||||
~PlaneModel();
|
||||
Entity *clone(){ return d_new PlaneModel( *this ); }
|
||||
Entity *clone(){ return new PlaneModel( *this ); }
|
||||
|
||||
//model interface
|
||||
bool render( const RenderContext &rc );
|
||||
|
||||
@@ -12,7 +12,7 @@ struct Q3BSPModel::Rep : public Q3BSPRep{
|
||||
};
|
||||
|
||||
Q3BSPModel::Q3BSPModel( const string &f,float gam ):
|
||||
rep( d_new Rep( f,gam ) ){
|
||||
rep( new Rep( f,gam ) ){
|
||||
}
|
||||
|
||||
Q3BSPModel::Q3BSPModel( const Q3BSPModel &t ):Model(t),
|
||||
|
||||
@@ -11,7 +11,7 @@ public:
|
||||
~Q3BSPModel();
|
||||
|
||||
//Entity interface
|
||||
Entity *clone(){ return d_new Q3BSPModel( *this ); }
|
||||
Entity *clone(){ return new Q3BSPModel( *this ); }
|
||||
|
||||
//Object interface
|
||||
virtual bool collide( const Line &line,float radius,Collision *curr_coll,const Transform &t );
|
||||
|
||||
@@ -176,7 +176,7 @@ static void debuglog(const string &t) {}
|
||||
static Surf *findSurf(q3_face *f) {
|
||||
FaceMap::const_iterator it = face_map.find(f);
|
||||
if (it != face_map.end()) return it->second;
|
||||
Surf *s = d_new Surf;
|
||||
Surf *s = new Surf;
|
||||
s->texture = f->texture;
|
||||
s->lm_index = f->lm_index;
|
||||
face_map.insert(make_pair(f, s));
|
||||
@@ -263,7 +263,7 @@ void Q3BSPRep::createCollider() {
|
||||
std::swap(coll_tris[k].verts[1], coll_tris[k].verts[2]);
|
||||
}
|
||||
#endif
|
||||
collider = d_new MeshCollider(coll_verts, coll_tris);
|
||||
collider = new MeshCollider(coll_verts, coll_tris);
|
||||
p_coll_verts.clear();
|
||||
coll_verts.clear();
|
||||
coll_tris.clear();
|
||||
@@ -298,7 +298,7 @@ void Q3BSPRep::createSurfs() {
|
||||
}
|
||||
mesh->unlock();
|
||||
|
||||
Q3BSPSurf *surf = d_new Q3BSPSurf;
|
||||
Q3BSPSurf *surf = new Q3BSPSurf;
|
||||
surf->texture = s->texture;
|
||||
surf->lm_index = s->lm_index;
|
||||
surf->mesh = mesh;
|
||||
@@ -468,7 +468,7 @@ static void meshFace(Q3BSPFace *face, q3_face *q3face, bool draw, bool solid) {
|
||||
}
|
||||
|
||||
static Q3BSPBrush *createBrush(int n) {
|
||||
Q3BSPBrush *brush = d_new Q3BSPBrush;
|
||||
Q3BSPBrush *brush = new Q3BSPBrush;
|
||||
q3_brush *q3brush = (q3_brush*)header.dir[8].lump + n;
|
||||
q3_brushside *q3brushside = (q3_brushside*)header.dir[9].lump + q3brush->brushside;
|
||||
Plane p;
|
||||
@@ -484,7 +484,7 @@ static Q3BSPBrush *createBrush(int n) {
|
||||
Q3BSPLeaf *Q3BSPRep::createLeaf(int n) {
|
||||
q3_leaf *q3leaf = (q3_leaf*)header.dir[4].lump + n;
|
||||
|
||||
Q3BSPLeaf *leaf = d_new Q3BSPLeaf;
|
||||
Q3BSPLeaf *leaf = new Q3BSPLeaf;
|
||||
|
||||
leaf->cluster = q3leaf->cluster;
|
||||
|
||||
@@ -523,7 +523,7 @@ Q3BSPLeaf *Q3BSPRep::createLeaf(int n) {
|
||||
Q3BSPFace *face = 0;
|
||||
if (draw) {
|
||||
Surf *surf = findSurf(q3face);
|
||||
face = d_new Q3BSPFace;
|
||||
face = new Q3BSPFace;
|
||||
face->t_surf = surf;
|
||||
face->vert = surf->verts.size();
|
||||
face->tri = surf->tris.size();
|
||||
@@ -588,7 +588,7 @@ Q3BSPRep::Q3BSPRep(const string &f, float gam) :root_node(0), vis_sz(0), vis_dat
|
||||
for (k = 0; k < 17; ++k) {
|
||||
if (header.dir[k].offset && header.dir[k].length) {
|
||||
fseek(buf, header.dir[k].offset, SEEK_SET);
|
||||
header.dir[k].lump = d_new char[header.dir[k].length];
|
||||
header.dir[k].lump = new char[header.dir[k].length];
|
||||
fread(header.dir[k].lump, header.dir[k].length, 1, buf);
|
||||
} else {
|
||||
header.dir[k].lump = 0;
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ public:
|
||||
|
||||
Sprite *getSprite(){ return this; }
|
||||
|
||||
Entity *clone(){ return d_new Sprite( *this ); }
|
||||
Entity *clone(){ return new Sprite( *this ); }
|
||||
|
||||
void capture();
|
||||
bool beginRender( float tween );
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
#include "terrainrep.h"
|
||||
|
||||
Terrain::Terrain( int size_shift ):
|
||||
rep( d_new TerrainRep( size_shift ) ){
|
||||
rep( new TerrainRep( size_shift ) ){
|
||||
}
|
||||
|
||||
Terrain::~Terrain(){
|
||||
|
||||
@@ -139,8 +139,8 @@ TerrainRep::TerrainRep( int n ):
|
||||
cell_shift(n),cell_size(1<<n),cell_mask((1<<n)-1),
|
||||
end_tri_id( (1<<n)*(1<<n)*2 ),
|
||||
shading(false),mesh(0),detail(0),morph(true){
|
||||
cells=d_new Cell[cell_size*cell_size];
|
||||
errors=d_new Error[end_tri_id];
|
||||
cells=new Cell[cell_size*cell_size];
|
||||
errors=new Error[end_tri_id];
|
||||
setDetail( 2000,false );
|
||||
clear();
|
||||
}
|
||||
@@ -279,7 +279,7 @@ void TerrainRep::split( Tri *t ){
|
||||
if( tv>=max_verts ){
|
||||
max_verts+=max_verts/2+32;
|
||||
Vert *t=verts;
|
||||
verts=d_new Vert[max_verts];
|
||||
verts=new Vert[max_verts];
|
||||
memcpy( verts,t,sizeof(Vert)*tv );
|
||||
next_vert=verts+tv;
|
||||
}
|
||||
|
||||
+3
-3
@@ -79,19 +79,19 @@ Texture::Texture() :rep(0) {
|
||||
Texture::Texture(const string &f, int flags) {
|
||||
flags = filterFile(f, flags) | gxCanvas::CANVAS_TEXTURE;
|
||||
if (flags & gxCanvas::CANVAS_TEX_MASK) flags |= gxCanvas::CANVAS_TEX_RGB | gxCanvas::CANVAS_TEX_ALPHA;
|
||||
rep = d_new Rep(f, flags, 0, 0, 0, 1);
|
||||
rep = new Rep(f, flags, 0, 0, 0, 1);
|
||||
}
|
||||
|
||||
Texture::Texture(const string &f, int flags, int w, int h, int first, int cnt) {
|
||||
flags = filterFile(f, flags) | gxCanvas::CANVAS_TEXTURE;
|
||||
if (flags & gxCanvas::CANVAS_TEX_MASK) flags |= gxCanvas::CANVAS_TEX_RGB | gxCanvas::CANVAS_TEX_ALPHA;
|
||||
rep = d_new Rep(f, flags, w, h, first, cnt);
|
||||
rep = new Rep(f, flags, w, h, first, cnt);
|
||||
}
|
||||
|
||||
Texture::Texture(int w, int h, int flags, int cnt) {
|
||||
flags |= gxCanvas::CANVAS_TEXTURE;
|
||||
if (flags & gxCanvas::CANVAS_TEX_MASK) flags |= gxCanvas::CANVAS_TEX_RGB | gxCanvas::CANVAS_TEX_ALPHA;
|
||||
rep = d_new Rep(w, h, flags, cnt);
|
||||
rep = new Rep(w, h, flags, cnt);
|
||||
}
|
||||
|
||||
Texture::Texture(const Texture &t) :
|
||||
|
||||
@@ -107,7 +107,7 @@ Tile *Codegen_x86::genCompare( TNode *t,string &func,bool negate ){
|
||||
}
|
||||
}
|
||||
|
||||
return d_new Tile( q,ql ? munchReg( ql ) : 0,qr ? munchReg( qr ) : 0 );
|
||||
return new Tile( q,ql ? munchReg( ql ) : 0,qr ? munchReg( qr ) : 0 );
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////
|
||||
@@ -119,7 +119,7 @@ Tile *Codegen_x86::munchUnary( TNode *t ){
|
||||
case IR_NEG:s="\tneg\t%l\n";break;
|
||||
default:return 0;
|
||||
}
|
||||
return d_new Tile( s,munchReg( t->l ) );
|
||||
return new Tile( s,munchReg( t->l ) );
|
||||
}
|
||||
|
||||
Tile *Codegen_x86::munchLogical( TNode *t ){
|
||||
@@ -130,7 +130,7 @@ Tile *Codegen_x86::munchLogical( TNode *t ){
|
||||
case IR_XOR:s="\txor\t%l,%r\n";break;
|
||||
default:return 0;
|
||||
}
|
||||
return d_new Tile( s,munchReg( t->l ),munchReg( t->r ) );
|
||||
return new Tile( s,munchReg( t->l ),munchReg( t->r ) );
|
||||
}
|
||||
|
||||
Tile *Codegen_x86::munchArith( TNode *t ){
|
||||
@@ -139,10 +139,10 @@ Tile *Codegen_x86::munchArith( TNode *t ){
|
||||
int shift;
|
||||
if( t->r->op==IR_CONST ){
|
||||
if( getShift( t->r->iconst,shift ) ){
|
||||
return d_new Tile( "\tsar\t%l,byte "+itoa(shift)+"\n",munchReg( t->l ) );
|
||||
return new Tile( "\tsar\t%l,byte "+itoa(shift)+"\n",munchReg( t->l ) );
|
||||
}
|
||||
}
|
||||
Tile *q=d_new Tile( "\tcdq\n\tidiv\tecx\n",munchReg( t->l ),munchReg( t->r ) );
|
||||
Tile *q=new Tile( "\tcdq\n\tidiv\tecx\n",munchReg( t->l ),munchReg( t->r ) );
|
||||
q->want_l=EAX;q->want_r=ECX;q->hits=1<<EDX;
|
||||
return q;
|
||||
}
|
||||
@@ -151,11 +151,11 @@ Tile *Codegen_x86::munchArith( TNode *t ){
|
||||
int shift;
|
||||
if( t->r->op==IR_CONST ){
|
||||
if( getShift( t->r->iconst,shift ) ){
|
||||
return d_new Tile( "\tshl\t%l,byte "+itoa(shift)+"\n",munchReg( t->l ) );
|
||||
return new Tile( "\tshl\t%l,byte "+itoa(shift)+"\n",munchReg( t->l ) );
|
||||
}
|
||||
}else if( t->l->op==IR_CONST ){
|
||||
if( getShift( t->l->iconst,shift ) ){
|
||||
return d_new Tile( "\tshl\t%l,byte "+itoa(shift)+"\n",munchReg( t->r ) );
|
||||
return new Tile( "\tshl\t%l,byte "+itoa(shift)+"\n",munchReg( t->r ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -169,12 +169,12 @@ Tile *Codegen_x86::munchArith( TNode *t ){
|
||||
}
|
||||
|
||||
if( matchMEMCONST( t->r,s ) ){
|
||||
return d_new Tile( op+"%l,"+s+"\n",munchReg( t->l ) );
|
||||
return new Tile( op+"%l,"+s+"\n",munchReg( t->l ) );
|
||||
}
|
||||
if( t->op!=IR_SUB && matchMEMCONST( t->l,s ) ){
|
||||
return d_new Tile( op+"%l,"+s+"\n",munchReg( t->r ) );
|
||||
return new Tile( op+"%l,"+s+"\n",munchReg( t->r ) );
|
||||
}
|
||||
return d_new Tile( op+"%l,%r\n",munchReg( t->l ),munchReg( t->r ) );
|
||||
return new Tile( op+"%l,%r\n",munchReg( t->l ),munchReg( t->r ) );
|
||||
}
|
||||
|
||||
Tile *Codegen_x86::munchShift( TNode *t ){
|
||||
@@ -187,10 +187,10 @@ Tile *Codegen_x86::munchShift( TNode *t ){
|
||||
}
|
||||
|
||||
if( matchCONST( t->r,s ) ){
|
||||
return d_new Tile( op+"%l,byte "+s+"\n",munchReg( t->l ) );
|
||||
return new Tile( op+"%l,byte "+s+"\n",munchReg( t->l ) );
|
||||
}
|
||||
|
||||
Tile *q=d_new Tile( op+"%l,cl\n",munchReg( t->l ),munchReg( t->r ) );
|
||||
Tile *q=new Tile( op+"%l,cl\n",munchReg( t->l ),munchReg( t->r ) );
|
||||
q->want_r=ECX;return q;
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ Tile *Codegen_x86::munchRelop( TNode *t ){
|
||||
string func;
|
||||
Tile *q=genCompare( t,func,false );
|
||||
|
||||
q=d_new Tile( "\tset"+func+"\tal\n\tmovzx\teax,al\n",q );
|
||||
q=new Tile( "\tset"+func+"\tal\n\tmovzx\teax,al\n",q );
|
||||
q->want_l=EAX;
|
||||
return q;
|
||||
}
|
||||
@@ -212,7 +212,7 @@ Tile *Codegen_x86::munchFPUnary( TNode *t ){
|
||||
case IR_FNEG:s="\tfchs\n";break;
|
||||
default:return 0;
|
||||
}
|
||||
return d_new Tile( s,munchFP( t->l ) );
|
||||
return new Tile( s,munchFP( t->l ) );
|
||||
}
|
||||
|
||||
Tile *Codegen_x86::munchFPArith( TNode *t ){
|
||||
@@ -224,7 +224,7 @@ Tile *Codegen_x86::munchFPArith( TNode *t ){
|
||||
case IR_FDIV:s="\tfdivrp\tst(1)\n";s2="\tfdivp\tst(1)\n";break;
|
||||
default:return 0;
|
||||
}
|
||||
return d_new Tile( s,s2,munchFP( t->l ),munchFP( t->r ) );
|
||||
return new Tile( s,s2,munchFP( t->l ),munchFP( t->r ) );
|
||||
}
|
||||
|
||||
Tile *Codegen_x86::munchFPRelop( TNode *t ){
|
||||
@@ -240,7 +240,7 @@ Tile *Codegen_x86::munchFPRelop( TNode *t ){
|
||||
}
|
||||
s="\tfucompp\n\tfnstsw\tax\n\tsahf\n\tset"+s+"\tal\n\tmovzx\t%l,al\n";
|
||||
s2="\tfucompp\n\tfnstsw\tax\n\tsahf\n\tset"+s2+"\tal\n\tmovzx\t%l,al\n";
|
||||
Tile *q=d_new Tile( s,s2,munchFP( t->l ),munchFP( t->r ) );
|
||||
Tile *q=new Tile( s,s2,munchFP( t->l ),munchFP( t->r ) );
|
||||
q->want_l=EAX;
|
||||
return q;
|
||||
}
|
||||
@@ -251,9 +251,9 @@ Tile *Codegen_x86::munchFPRelop( TNode *t ){
|
||||
Tile *Codegen_x86::munchCall( TNode *t ){
|
||||
Tile *q;
|
||||
if( t->l->op==IR_GLOBAL ){
|
||||
q=d_new Tile( "\tcall\t"+t->l->sconst+"\n",t->r ? munchReg( t->r ) : 0 );
|
||||
q=new Tile( "\tcall\t"+t->l->sconst+"\n",t->r ? munchReg( t->r ) : 0 );
|
||||
}else{
|
||||
q=d_new Tile( "\tcall\t%l\n",munchReg( t->l ),t->r ? munchReg( t->r ) : 0 );
|
||||
q=new Tile( "\tcall\t%l\n",munchReg( t->l ),t->r ? munchReg( t->r ) : 0 );
|
||||
}
|
||||
q->argFrame=t->iconst;
|
||||
q->want_l=EAX;
|
||||
@@ -270,26 +270,26 @@ Tile *Codegen_x86::munch( TNode *t ){
|
||||
string s;
|
||||
switch( t->op ){
|
||||
case IR_JSR:
|
||||
q=d_new Tile( "\tcall\t"+t->sconst+'\n' );
|
||||
q=new Tile( "\tcall\t"+t->sconst+'\n' );
|
||||
break;
|
||||
case IR_RET:
|
||||
q=d_new Tile( "\tret\n" );
|
||||
q=new Tile( "\tret\n" );
|
||||
break;
|
||||
case IR_RETURN:
|
||||
q=munchReg( t->l );q->want_l=EAX;
|
||||
s="\tjmp\t"+t->sconst+'\n';
|
||||
q=d_new Tile( s,q );
|
||||
q=new Tile( s,q );
|
||||
break;
|
||||
case IR_FRETURN:
|
||||
q=munchFP( t->l );
|
||||
s="\tjmp\t"+t->sconst+'\n';
|
||||
q=d_new Tile( s,q );
|
||||
q=new Tile( s,q );
|
||||
break;
|
||||
case IR_CALL:
|
||||
q=munchCall( t );
|
||||
break;
|
||||
case IR_JUMP:
|
||||
q=d_new Tile( "\tjmp\t"+t->sconst+'\n' );
|
||||
q=new Tile( "\tjmp\t"+t->sconst+'\n' );
|
||||
break;
|
||||
case IR_JUMPT:
|
||||
if( TNode *p=t->l ){
|
||||
@@ -297,7 +297,7 @@ Tile *Codegen_x86::munch( TNode *t ){
|
||||
if( isRelop( p->op ) ){
|
||||
string func;
|
||||
q=genCompare( p,func,neg );
|
||||
q=d_new Tile( "\tj"+func+"\t"+t->sconst+"\n",q );
|
||||
q=new Tile( "\tj"+func+"\t"+t->sconst+"\n",q );
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -307,7 +307,7 @@ Tile *Codegen_x86::munch( TNode *t ){
|
||||
if( isRelop( p->op ) ){
|
||||
string func;
|
||||
q=genCompare( p,func,neg );
|
||||
q=d_new Tile( "\tj"+func+"\t"+t->sconst+"\n",q );
|
||||
q=new Tile( "\tj"+func+"\t"+t->sconst+"\n",q );
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -315,7 +315,7 @@ Tile *Codegen_x86::munch( TNode *t ){
|
||||
if( matchMEM( t->r,s ) ){
|
||||
string c;
|
||||
if( matchCONST( t->l,c ) ){
|
||||
q=d_new Tile( "\tmov\t"+s+","+c+"\n" );
|
||||
q=new Tile( "\tmov\t"+s+","+c+"\n" );
|
||||
}else if( t->l->op==IR_ADD || t->l->op==IR_SUB ){
|
||||
TNode *p=0;
|
||||
if( nodesEqual( t->l->l,t->r ) ) p=t->l->r;
|
||||
@@ -327,13 +327,13 @@ Tile *Codegen_x86::munch( TNode *t ){
|
||||
case IR_SUB:op="\tsub\t";break;
|
||||
}
|
||||
if( matchCONST( p,c ) ){
|
||||
q=d_new Tile( op+s+","+c+"\n" );
|
||||
q=new Tile( op+s+","+c+"\n" );
|
||||
}else{
|
||||
q=d_new Tile( op+s+",%l\n",munchReg( p ) );
|
||||
q=new Tile( op+s+",%l\n",munchReg( p ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
if( !q ) q=d_new Tile( "\tmov\t"+s+",%l\n",munchReg( t->l ) );
|
||||
if( !q ) q=new Tile( "\tmov\t"+s+",%l\n",munchReg( t->l ) );
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -352,13 +352,13 @@ Tile *Codegen_x86::munchReg( TNode *t ){
|
||||
|
||||
switch( t->op ){
|
||||
case IR_JUMPT:
|
||||
q=d_new Tile( "\tand\t%l,%l\n\tjnz\t"+t->sconst+'\n',munchReg( t->l ) );
|
||||
q=new Tile( "\tand\t%l,%l\n\tjnz\t"+t->sconst+'\n',munchReg( t->l ) );
|
||||
break;
|
||||
case IR_JUMPF:
|
||||
q=d_new Tile( "\tand\t%l,%l\n\tjz\t"+t->sconst+'\n',munchReg( t->l ) );
|
||||
q=new Tile( "\tand\t%l,%l\n\tjz\t"+t->sconst+'\n',munchReg( t->l ) );
|
||||
break;
|
||||
case IR_JUMPGE:
|
||||
q=d_new Tile( "\tcmp\t%l,%r\n\tjnc\t"+t->sconst+'\n',munchReg( t->l ),munchReg( t->r ) );
|
||||
q=new Tile( "\tcmp\t%l,%r\n\tjnc\t"+t->sconst+'\n',munchReg( t->l ),munchReg( t->r ) );
|
||||
break;
|
||||
case IR_CALL:
|
||||
q=munchCall( t );
|
||||
@@ -366,37 +366,37 @@ Tile *Codegen_x86::munchReg( TNode *t ){
|
||||
case IR_MOVE:
|
||||
//MUST BE MOVE TO MEM!
|
||||
if( matchMEM( t->r,s ) ){
|
||||
q=d_new Tile( "\tmov\t"+s+",%l\n",munchReg( t->l ) );
|
||||
q=new Tile( "\tmov\t"+s+",%l\n",munchReg( t->l ) );
|
||||
}else if( t->r->op==IR_MEM ){
|
||||
q=d_new Tile( "\tmov\t[%r],%l\n",munchReg( t->l ),munchReg( t->r->l ) );
|
||||
q=new Tile( "\tmov\t[%r],%l\n",munchReg( t->l ),munchReg( t->r->l ) );
|
||||
}
|
||||
break;
|
||||
case IR_MEM:
|
||||
if( matchMEM( t,s ) ){
|
||||
q=d_new Tile( "\tmov\t%l,"+s+"\n" );
|
||||
q=new Tile( "\tmov\t%l,"+s+"\n" );
|
||||
}else{
|
||||
q=d_new Tile( "\tmov\t%l,[%l]\n",munchReg( t->l ) );
|
||||
q=new Tile( "\tmov\t%l,[%l]\n",munchReg( t->l ) );
|
||||
}
|
||||
break;
|
||||
case IR_SEQ:
|
||||
q=d_new Tile( "",munch(t->l),munch(t->r) );
|
||||
q=new Tile( "",munch(t->l),munch(t->r) );
|
||||
break;
|
||||
case IR_ARG:
|
||||
q=d_new Tile( "\tlea\t%l,[esp"+itoa_sgn(t->iconst)+"]\n" );
|
||||
q=new Tile( "\tlea\t%l,[esp"+itoa_sgn(t->iconst)+"]\n" );
|
||||
break;
|
||||
case IR_LOCAL:
|
||||
q=d_new Tile( "\tlea\t%l,[ebp"+itoa_sgn(t->iconst)+"]\n" );
|
||||
q=new Tile( "\tlea\t%l,[ebp"+itoa_sgn(t->iconst)+"]\n" );
|
||||
break;
|
||||
case IR_GLOBAL:
|
||||
q=d_new Tile( string( "\tmov\t%l," )+t->sconst+'\n' );
|
||||
q=new Tile( string( "\tmov\t%l," )+t->sconst+'\n' );
|
||||
break;
|
||||
case IR_CAST:
|
||||
q=munchFP( t->l );
|
||||
s="\tpush\t%l\n\tfistp\t[esp]\n\tpop\t%l\n";
|
||||
q=d_new Tile( s,q );
|
||||
q=new Tile( s,q );
|
||||
break;
|
||||
case IR_CONST:
|
||||
q=d_new Tile( "\tmov\t%l,"+itoa(t->iconst)+"\n" );
|
||||
q=new Tile( "\tmov\t%l,"+itoa(t->iconst)+"\n" );
|
||||
break;
|
||||
case IR_NEG:
|
||||
q=munchUnary( t );
|
||||
@@ -419,7 +419,7 @@ Tile *Codegen_x86::munchReg( TNode *t ){
|
||||
default:
|
||||
q=munchFP( t );if( !q ) return 0;
|
||||
s="\tpush\t%l\n\tfstp\t[esp]\n\tpop\t%l\n";
|
||||
q=d_new Tile( s,q );
|
||||
q=new Tile( s,q );
|
||||
}
|
||||
return q;
|
||||
}
|
||||
@@ -439,7 +439,7 @@ Tile *Codegen_x86::munchFP( TNode *t ){
|
||||
break;
|
||||
case IR_FCAST:
|
||||
s="\tpush\t%l\n\tfild\t[esp]\n\tpop\t%l\n";
|
||||
q=d_new Tile( s,munchReg( t->l ) );
|
||||
q=new Tile( s,munchReg( t->l ) );
|
||||
break;
|
||||
case IR_FNEG:
|
||||
q=munchFPUnary( t );
|
||||
@@ -450,7 +450,7 @@ Tile *Codegen_x86::munchFP( TNode *t ){
|
||||
default:
|
||||
q=munchReg( t );if( !q ) return 0;
|
||||
s="\tpush\t%l\n\tfld\t[esp]\n\tpop\t%l\n";
|
||||
q=d_new Tile( s,q );
|
||||
q=new Tile( s,q );
|
||||
}
|
||||
return q;
|
||||
}
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ Decl *DeclSeq::findDecl( const string &s ){
|
||||
|
||||
Decl *DeclSeq::insertDecl( const string &s,Type *t,int kind,ConstType *d ){
|
||||
if( findDecl( s ) ) return 0;
|
||||
decls.push_back( d_new Decl( s,t,kind,d ) );
|
||||
decls.push_back( new Decl( s,t,kind,d ) );
|
||||
return decls.back();
|
||||
}
|
||||
|
||||
|
||||
+10
-10
@@ -69,9 +69,9 @@ void VarDeclNode::proto(DeclSeq *d, Environ *e) {
|
||||
|
||||
|
||||
if (!c) ex("Expression must be constant");
|
||||
if (ty == Type::int_type) ty = d_new ConstType(c->intValue());
|
||||
else if (ty == Type::float_type) ty = d_new ConstType(c->floatValue());
|
||||
else ty = d_new ConstType(c->stringValue());
|
||||
if (ty == Type::int_type) ty = new ConstType(c->intValue());
|
||||
else if (ty == Type::float_type) ty = new ConstType(c->floatValue());
|
||||
else ty = new ConstType(c->stringValue());
|
||||
e->types.push_back(ty);
|
||||
delete expr; expr = 0;
|
||||
}
|
||||
@@ -87,7 +87,7 @@ void VarDeclNode::proto(DeclSeq *d, Environ *e) {
|
||||
|
||||
Decl *decl = d->insertDecl(ident, ty, kind, defType);
|
||||
if (!decl) ex("Duplicate variable name");
|
||||
if (expr) sem_var = d_new DeclVarNode(decl);
|
||||
if (expr) sem_var = new DeclVarNode(decl);
|
||||
}
|
||||
|
||||
void VarDeclNode::semant(Environ *e) {
|
||||
@@ -106,9 +106,9 @@ void VarDeclNode::translate(Codegen *g) {
|
||||
//////////////////////////
|
||||
void FuncDeclNode::proto(DeclSeq *d, Environ *e) {
|
||||
Type *t = tagType(tag, e); if (!t) t = Type::int_type;
|
||||
a_ptr<DeclSeq> decls(d_new DeclSeq());
|
||||
a_ptr<DeclSeq> decls(new DeclSeq());
|
||||
params->proto(decls, e);
|
||||
sem_type = d_new FuncType(t, decls.release(), false, false);
|
||||
sem_type = new FuncType(t, decls.release(), false, false);
|
||||
if (!d->insertDecl(ident, sem_type, DECL_FUNC)) {
|
||||
delete sem_type; ex("duplicate identifier");
|
||||
}
|
||||
@@ -117,7 +117,7 @@ void FuncDeclNode::proto(DeclSeq *d, Environ *e) {
|
||||
|
||||
void FuncDeclNode::semant(Environ *e) {
|
||||
|
||||
sem_env = d_new Environ(genLabel(), sem_type->returnType, 1, e);
|
||||
sem_env = new Environ(genLabel(), sem_type->returnType, 1, e);
|
||||
DeclSeq *decls = sem_env->decls;
|
||||
|
||||
int k;
|
||||
@@ -156,7 +156,7 @@ void FuncDeclNode::translate(Codegen *g) {
|
||||
//leave the function
|
||||
g->label(sem_env->funcLabel + "_leave");
|
||||
t = deleteVars(sem_env);
|
||||
if (g->debug) t = d_new TNode(IR_SEQ, call("__bbDebugLeave"), t);
|
||||
if (g->debug) t = new TNode(IR_SEQ, call("__bbDebugLeave"), t);
|
||||
g->leave(t, sem_type->params->size() * 4);
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ void FuncDeclNode::translate(Codegen *g) {
|
||||
// Type Declaration //
|
||||
//////////////////////
|
||||
void StructDeclNode::proto(DeclSeq *d, Environ *e) {
|
||||
sem_type = d_new StructType(ident, d_new DeclSeq());
|
||||
sem_type = new StructType(ident, new DeclSeq());
|
||||
if (!d->insertDecl(ident, sem_type, DECL_STRUCT)) {
|
||||
delete sem_type; ex("Duplicate identifier");
|
||||
}
|
||||
@@ -262,7 +262,7 @@ void VectorDeclNode::proto(DeclSeq *d, Environ *env) {
|
||||
sizes.push_back(n + 1);
|
||||
}
|
||||
string label = genLabel();
|
||||
sem_type = d_new VectorType(label, ty, sizes);
|
||||
sem_type = new VectorType(label, ty, sizes);
|
||||
if (!d->insertDecl(ident, sem_type, kind)) {
|
||||
delete sem_type; ex("Duplicate identifier");
|
||||
}
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
Environ::Environ( const string &f,Type *r,int l,Environ *gs )
|
||||
:funcLabel(f),returnType(r),level(l),globals(gs){
|
||||
decls=d_new DeclSeq();
|
||||
typeDecls=d_new DeclSeq();
|
||||
funcDecls=d_new DeclSeq();
|
||||
decls=new DeclSeq();
|
||||
typeDecls=new DeclSeq();
|
||||
funcDecls=new DeclSeq();
|
||||
if( globals ) globals->children.push_back( this );
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ Label *Environ::findLabel( const string &s ){
|
||||
}
|
||||
|
||||
Label *Environ::insertLabel( const string &s,int def,int src,int sz ){
|
||||
Label *l=d_new Label( s,def,src,sz );
|
||||
Label *l=new Label( s,def,src,sz );
|
||||
labels.push_back( l );return l;
|
||||
}
|
||||
|
||||
|
||||
+65
-65
@@ -13,7 +13,7 @@ ExprNode *ExprNode::castTo(Type *ty, Environ *e) {
|
||||
ex("Illegal type conversion");
|
||||
}
|
||||
|
||||
ExprNode *cast = d_new CastNode(this, ty);
|
||||
ExprNode *cast = new CastNode(this, ty);
|
||||
cast->semant(e);
|
||||
return cast;
|
||||
}
|
||||
@@ -25,9 +25,9 @@ ExprNode *CastNode::semant(Environ *e) {
|
||||
|
||||
if (ConstNode *c = expr->constNode()) {
|
||||
ExprNode *e;
|
||||
if (type == Type::int_type) e = d_new IntConstNode(c->intValue());
|
||||
else if (type == Type::float_type) e = d_new FloatConstNode(c->floatValue());
|
||||
else e = d_new StringConstNode(c->stringValue());
|
||||
if (type == Type::int_type) e = new IntConstNode(c->intValue());
|
||||
else if (type == Type::float_type) e = new FloatConstNode(c->floatValue());
|
||||
else e = new StringConstNode(c->stringValue());
|
||||
delete this;
|
||||
return e;
|
||||
}
|
||||
@@ -43,11 +43,11 @@ TNode *CastNode::translate(Codegen *g) {
|
||||
TNode *t = expr->translate(g);
|
||||
if (expr->sem_type == Type::float_type && sem_type == Type::int_type) {
|
||||
//float->int
|
||||
return d_new TNode(IR_CAST, t, 0);
|
||||
return new TNode(IR_CAST, t, 0);
|
||||
}
|
||||
if (expr->sem_type == Type::int_type && sem_type == Type::float_type) {
|
||||
//int->float
|
||||
return d_new TNode(IR_FCAST, t, 0);
|
||||
return new TNode(IR_FCAST, t, 0);
|
||||
}
|
||||
if (expr->sem_type == Type::string_type && sem_type == Type::int_type) {
|
||||
//str->int
|
||||
@@ -92,17 +92,17 @@ TNode *ExprSeqNode::translate(Codegen *g, bool cfunc) {
|
||||
if (ty->stringType()) {
|
||||
q = call("__bbStrToCStr", q);
|
||||
} else if (ty->structType()) {
|
||||
q = d_new TNode(IR_MEM, q);
|
||||
q = new TNode(IR_MEM, q);
|
||||
} else if (ty == Type::void_type) {
|
||||
q = d_new TNode(IR_MEM, add(q, iconst(4)));
|
||||
q = new TNode(IR_MEM, add(q, iconst(4)));
|
||||
}
|
||||
}
|
||||
|
||||
TNode *p;
|
||||
p = d_new TNode(IR_ARG, 0, 0, k * 4);
|
||||
p = d_new TNode(IR_MEM, p, 0);
|
||||
p = d_new TNode(IR_MOVE, q, p);
|
||||
p = d_new TNode(IR_SEQ, p, 0);
|
||||
p = new TNode(IR_ARG, 0, 0, k * 4);
|
||||
p = new TNode(IR_MEM, p, 0);
|
||||
p = new TNode(IR_MOVE, q, p);
|
||||
p = new TNode(IR_SEQ, p, 0);
|
||||
if (l) l->r = p;
|
||||
else t = p;
|
||||
l = p;
|
||||
@@ -167,14 +167,14 @@ TNode *CallNode::translate(Codegen *g) {
|
||||
TNode *r = exprs->translate(g, f->cfunc);
|
||||
|
||||
if (f->userlib) {
|
||||
l = d_new TNode(IR_MEM, l);
|
||||
l = new TNode(IR_MEM, l);
|
||||
usedfuncs.insert(ident);
|
||||
}
|
||||
|
||||
if (sem_type == Type::float_type) {
|
||||
t = d_new TNode(IR_FCALL, l, r, exprs->size() * 4);
|
||||
t = new TNode(IR_FCALL, l, r, exprs->size() * 4);
|
||||
} else {
|
||||
t = d_new TNode(IR_CALL, l, r, exprs->size() * 4);
|
||||
t = new TNode(IR_CALL, l, r, exprs->size() * 4);
|
||||
}
|
||||
|
||||
if (f->returnType->stringType()) {
|
||||
@@ -209,7 +209,7 @@ IntConstNode::IntConstNode(int n) :value(n) {
|
||||
}
|
||||
|
||||
TNode *IntConstNode::translate(Codegen *g) {
|
||||
return d_new TNode(IR_CONST, 0, 0, value);
|
||||
return new TNode(IR_CONST, 0, 0, value);
|
||||
}
|
||||
|
||||
int IntConstNode::intValue() {
|
||||
@@ -232,7 +232,7 @@ FloatConstNode::FloatConstNode(float f) :value(f) {
|
||||
}
|
||||
|
||||
TNode *FloatConstNode::translate(Codegen *g) {
|
||||
return d_new TNode(IR_CONST, 0, 0, *(int*)&value);
|
||||
return new TNode(IR_CONST, 0, 0, *(int*)&value);
|
||||
}
|
||||
|
||||
int FloatConstNode::intValue() {
|
||||
@@ -291,17 +291,17 @@ ExprNode *UniExprNode::semant(Environ *e) {
|
||||
ExprNode *e;
|
||||
if (sem_type == Type::int_type) {
|
||||
switch (op) {
|
||||
case '+':e = d_new IntConstNode(+c->intValue()); break;
|
||||
case '-':e = d_new IntConstNode(-c->intValue()); break;
|
||||
case ABS:e = d_new IntConstNode(c->intValue() >= 0 ? c->intValue() : -c->intValue()); break;
|
||||
case SGN:e = d_new IntConstNode(c->intValue() > 0 ? 1 : (c->intValue() < 0 ? -1 : 0)); break;
|
||||
case '+':e = new IntConstNode(+c->intValue()); break;
|
||||
case '-':e = new IntConstNode(-c->intValue()); break;
|
||||
case ABS:e = new IntConstNode(c->intValue() >= 0 ? c->intValue() : -c->intValue()); break;
|
||||
case SGN:e = new IntConstNode(c->intValue() > 0 ? 1 : (c->intValue() < 0 ? -1 : 0)); break;
|
||||
}
|
||||
} else {
|
||||
switch (op) {
|
||||
case '+':e = d_new FloatConstNode(+c->floatValue()); break;
|
||||
case '-':e = d_new FloatConstNode(-c->floatValue()); break;
|
||||
case ABS:e = d_new FloatConstNode(c->floatValue() >= 0 ? c->floatValue() : -c->floatValue()); break;
|
||||
case SGN:e = d_new FloatConstNode(c->floatValue() > 0 ? 1 : (c->floatValue() < 0 ? -1 : 0)); break;
|
||||
case '+':e = new FloatConstNode(+c->floatValue()); break;
|
||||
case '-':e = new FloatConstNode(-c->floatValue()); break;
|
||||
case ABS:e = new FloatConstNode(c->floatValue() >= 0 ? c->floatValue() : -c->floatValue()); break;
|
||||
case SGN:e = new FloatConstNode(c->floatValue() > 0 ? 1 : (c->floatValue() < 0 ? -1 : 0)); break;
|
||||
}
|
||||
}
|
||||
delete this;
|
||||
@@ -328,7 +328,7 @@ TNode *UniExprNode::translate(Codegen *g) {
|
||||
case SGN:return fcall("__bbFSgn", l);
|
||||
}
|
||||
}
|
||||
return d_new TNode(n, l, 0);
|
||||
return new TNode(n, l, 0);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
@@ -341,12 +341,12 @@ ExprNode *BinExprNode::semant(Environ *e) {
|
||||
if (lc && rc) {
|
||||
ExprNode *expr = nullptr;
|
||||
switch (op) {
|
||||
case AND:expr = d_new IntConstNode(lc->intValue() & rc->intValue()); break;
|
||||
case OR: expr = d_new IntConstNode(lc->intValue() | rc->intValue()); break;
|
||||
case XOR:expr = d_new IntConstNode(lc->intValue() ^ rc->intValue()); break;
|
||||
case SHL:expr = d_new IntConstNode(lc->intValue() << rc->intValue()); break;
|
||||
case SHR:expr = d_new IntConstNode((unsigned)lc->intValue() >> rc->intValue()); break;
|
||||
case SAR:expr = d_new IntConstNode(lc->intValue() >> rc->intValue()); break;
|
||||
case AND:expr = new IntConstNode(lc->intValue() & rc->intValue()); break;
|
||||
case OR: expr = new IntConstNode(lc->intValue() | rc->intValue()); break;
|
||||
case XOR:expr = new IntConstNode(lc->intValue() ^ rc->intValue()); break;
|
||||
case SHL:expr = new IntConstNode(lc->intValue() << rc->intValue()); break;
|
||||
case SHR:expr = new IntConstNode((unsigned)lc->intValue() >> rc->intValue()); break;
|
||||
case SAR:expr = new IntConstNode(lc->intValue() >> rc->intValue()); break;
|
||||
}
|
||||
delete this;
|
||||
return expr;
|
||||
@@ -363,7 +363,7 @@ TNode *BinExprNode::translate(Codegen *g) {
|
||||
case AND:n = IR_AND; break; case OR:n = IR_OR; break; case XOR:n = IR_XOR; break;
|
||||
case SHL:n = IR_SHL; break; case SHR:n = IR_SHR; break; case SAR:n = IR_SAR; break;
|
||||
}
|
||||
return d_new TNode(n, l, r);
|
||||
return new TNode(n, l, r);
|
||||
}
|
||||
|
||||
///////////////////////////
|
||||
@@ -397,23 +397,23 @@ ExprNode *ArithExprNode::semant(Environ *e) {
|
||||
if (lc && rc) {
|
||||
ExprNode *expr = nullptr;
|
||||
if (sem_type == Type::string_type) {
|
||||
expr = d_new StringConstNode(lc->stringValue() + rc->stringValue());
|
||||
expr = new StringConstNode(lc->stringValue() + rc->stringValue());
|
||||
} else if (sem_type == Type::int_type) {
|
||||
switch (op) {
|
||||
case '+':expr = d_new IntConstNode(lc->intValue() + rc->intValue()); break;
|
||||
case '-':expr = d_new IntConstNode(lc->intValue() - rc->intValue()); break;
|
||||
case '*':expr = d_new IntConstNode(lc->intValue()*rc->intValue()); break;
|
||||
case '/':expr = d_new IntConstNode(lc->intValue() / rc->intValue()); break;
|
||||
case MOD:expr = d_new IntConstNode(lc->intValue() % rc->intValue()); break;
|
||||
case '+':expr = new IntConstNode(lc->intValue() + rc->intValue()); break;
|
||||
case '-':expr = new IntConstNode(lc->intValue() - rc->intValue()); break;
|
||||
case '*':expr = new IntConstNode(lc->intValue()*rc->intValue()); break;
|
||||
case '/':expr = new IntConstNode(lc->intValue() / rc->intValue()); break;
|
||||
case MOD:expr = new IntConstNode(lc->intValue() % rc->intValue()); break;
|
||||
}
|
||||
} else {
|
||||
switch (op) {
|
||||
case '+':expr = d_new FloatConstNode(lc->floatValue() + rc->floatValue()); break;
|
||||
case '-':expr = d_new FloatConstNode(lc->floatValue() - rc->floatValue()); break;
|
||||
case '*':expr = d_new FloatConstNode(lc->floatValue()*rc->floatValue()); break;
|
||||
case '/':expr = d_new FloatConstNode(lc->floatValue() / rc->floatValue()); break;
|
||||
case MOD:expr = d_new FloatConstNode(fmod(lc->floatValue(), rc->floatValue())); break;
|
||||
case '^':expr = d_new FloatConstNode(pow(lc->floatValue(), rc->floatValue())); break;
|
||||
case '+':expr = new FloatConstNode(lc->floatValue() + rc->floatValue()); break;
|
||||
case '-':expr = new FloatConstNode(lc->floatValue() - rc->floatValue()); break;
|
||||
case '*':expr = new FloatConstNode(lc->floatValue()*rc->floatValue()); break;
|
||||
case '/':expr = new FloatConstNode(lc->floatValue() / rc->floatValue()); break;
|
||||
case MOD:expr = new FloatConstNode(fmod(lc->floatValue(), rc->floatValue())); break;
|
||||
case '^':expr = new FloatConstNode(pow(lc->floatValue(), rc->floatValue())); break;
|
||||
}
|
||||
}
|
||||
delete this;
|
||||
@@ -443,7 +443,7 @@ TNode *ArithExprNode::translate(Codegen *g) {
|
||||
case '^':return fcall("__bbFPow", l, r);
|
||||
}
|
||||
}
|
||||
return d_new TNode(n, l, r);
|
||||
return new TNode(n, l, r);
|
||||
}
|
||||
|
||||
/////////////////////////
|
||||
@@ -470,30 +470,30 @@ ExprNode *RelExprNode::semant(Environ *e) {
|
||||
ExprNode *expr = nullptr;
|
||||
if (opType == Type::string_type) {
|
||||
switch (op) {
|
||||
case '<':expr = d_new IntConstNode(lc->stringValue() < rc->stringValue()); break;
|
||||
case '=':expr = d_new IntConstNode(lc->stringValue() == rc->stringValue()); break;
|
||||
case '>':expr = d_new IntConstNode(lc->stringValue() > rc->stringValue()); break;
|
||||
case LE: expr = d_new IntConstNode(lc->stringValue() <= rc->stringValue()); break;
|
||||
case NE: expr = d_new IntConstNode(lc->stringValue() != rc->stringValue()); break;
|
||||
case GE: expr = d_new IntConstNode(lc->stringValue() >= rc->stringValue()); break;
|
||||
case '<':expr = new IntConstNode(lc->stringValue() < rc->stringValue()); break;
|
||||
case '=':expr = new IntConstNode(lc->stringValue() == rc->stringValue()); break;
|
||||
case '>':expr = new IntConstNode(lc->stringValue() > rc->stringValue()); break;
|
||||
case LE: expr = new IntConstNode(lc->stringValue() <= rc->stringValue()); break;
|
||||
case NE: expr = new IntConstNode(lc->stringValue() != rc->stringValue()); break;
|
||||
case GE: expr = new IntConstNode(lc->stringValue() >= rc->stringValue()); break;
|
||||
}
|
||||
} else if (opType == Type::float_type) {
|
||||
switch (op) {
|
||||
case '<':expr = d_new IntConstNode(lc->floatValue() < rc->floatValue()); break;
|
||||
case '=':expr = d_new IntConstNode(lc->floatValue() == rc->floatValue()); break;
|
||||
case '>':expr = d_new IntConstNode(lc->floatValue() > rc->floatValue()); break;
|
||||
case LE: expr = d_new IntConstNode(lc->floatValue() <= rc->floatValue()); break;
|
||||
case NE: expr = d_new IntConstNode(lc->floatValue() != rc->floatValue()); break;
|
||||
case GE: expr = d_new IntConstNode(lc->floatValue() >= rc->floatValue()); break;
|
||||
case '<':expr = new IntConstNode(lc->floatValue() < rc->floatValue()); break;
|
||||
case '=':expr = new IntConstNode(lc->floatValue() == rc->floatValue()); break;
|
||||
case '>':expr = new IntConstNode(lc->floatValue() > rc->floatValue()); break;
|
||||
case LE: expr = new IntConstNode(lc->floatValue() <= rc->floatValue()); break;
|
||||
case NE: expr = new IntConstNode(lc->floatValue() != rc->floatValue()); break;
|
||||
case GE: expr = new IntConstNode(lc->floatValue() >= rc->floatValue()); break;
|
||||
}
|
||||
} else {
|
||||
switch (op) {
|
||||
case '<':expr = d_new IntConstNode(lc->intValue() < rc->intValue()); break;
|
||||
case '=':expr = d_new IntConstNode(lc->intValue() == rc->intValue()); break;
|
||||
case '>':expr = d_new IntConstNode(lc->intValue() > rc->intValue()); break;
|
||||
case LE: expr = d_new IntConstNode(lc->intValue() <= rc->intValue()); break;
|
||||
case NE: expr = d_new IntConstNode(lc->intValue() != rc->intValue()); break;
|
||||
case GE: expr = d_new IntConstNode(lc->intValue() >= rc->intValue()); break;
|
||||
case '<':expr = new IntConstNode(lc->intValue() < rc->intValue()); break;
|
||||
case '=':expr = new IntConstNode(lc->intValue() == rc->intValue()); break;
|
||||
case '>':expr = new IntConstNode(lc->intValue() > rc->intValue()); break;
|
||||
case LE: expr = new IntConstNode(lc->intValue() <= rc->intValue()); break;
|
||||
case NE: expr = new IntConstNode(lc->intValue() != rc->intValue()); break;
|
||||
case GE: expr = new IntConstNode(lc->intValue() >= rc->intValue()); break;
|
||||
}
|
||||
}
|
||||
delete this;
|
||||
@@ -591,7 +591,7 @@ ExprNode *NullNode::semant(Environ *e) {
|
||||
}
|
||||
|
||||
TNode *NullNode::translate(Codegen *g) {
|
||||
return d_new TNode(IR_CONST, 0, 0, 0);
|
||||
return new TNode(IR_CONST, 0, 0, 0);
|
||||
}
|
||||
|
||||
/////////////////
|
||||
|
||||
+31
-31
@@ -29,7 +29,7 @@ void Node::ex( const string &e,int pos,const string &f ){
|
||||
VarNode *Node::genLocal( Environ *e,Type *ty ){
|
||||
string t=genLabel();
|
||||
Decl *d=e->decls->insertDecl( t,ty,DECL_LOCAL );
|
||||
return d_new DeclVarNode( d );
|
||||
return new DeclVarNode( d );
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
@@ -39,9 +39,9 @@ ConstNode *Node::constValue( Type *ty ){
|
||||
ConstType *c=ty->constType();
|
||||
if( !c ) return 0;
|
||||
ty=c->valueType;
|
||||
if( ty==Type::int_type ) return d_new IntConstNode( c->intValue );
|
||||
if( ty==Type::float_type ) return d_new FloatConstNode( c->floatValue );
|
||||
return d_new StringConstNode( c->stringValue );
|
||||
if( ty==Type::int_type ) return new IntConstNode( c->intValue );
|
||||
if( ty==Type::float_type ) return new FloatConstNode( c->floatValue );
|
||||
return new StringConstNode( c->stringValue );
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
@@ -74,10 +74,10 @@ TNode *Node::createVars( Environ *e ){
|
||||
Decl *d=e->decls->decls[k];
|
||||
if( d->kind!=DECL_LOCAL ) continue;
|
||||
if( d->type->vectorType() ) continue;
|
||||
if( !t ) t=d_new TNode( IR_CONST,0,0,0 );
|
||||
TNode *p=d_new TNode( IR_LOCAL,0,0,d->offset );
|
||||
p=d_new TNode( IR_MEM,p,0 );
|
||||
t=d_new TNode( IR_MOVE,t,p );
|
||||
if( !t ) t=new TNode( IR_CONST,0,0,0 );
|
||||
TNode *p=new TNode( IR_LOCAL,0,0,d->offset );
|
||||
p=new TNode( IR_MEM,p,0 );
|
||||
t=new TNode( IR_MOVE,t,p );
|
||||
}
|
||||
//initialize vectors
|
||||
for( k=0;k<e->decls->size();++k ){
|
||||
@@ -123,7 +123,7 @@ TNode *Node::deleteVars( Environ *e ){
|
||||
}
|
||||
}
|
||||
if( !func.size() ) continue;
|
||||
p=d_new TNode( IR_SEQ,call( func,p1,p2 ),0 );
|
||||
p=new TNode( IR_SEQ,call( func,p1,p2 ),0 );
|
||||
(l ? l->r : t)=p;
|
||||
l=p;
|
||||
}
|
||||
@@ -150,12 +150,12 @@ TNode *Node::compare( int op,TNode *l,TNode *r,Type *ty ){
|
||||
}
|
||||
if( ty==Type::string_type ){
|
||||
l=call( "__bbStrCompare",l,r );
|
||||
r=d_new TNode( IR_CONST,0,0,0 );
|
||||
r=new TNode( IR_CONST,0,0,0 );
|
||||
}else if( ty->structType() ){
|
||||
l=call( "__bbObjCompare",l,r );
|
||||
r=d_new TNode( IR_CONST,0,0,0 );
|
||||
r=new TNode( IR_CONST,0,0,0 );
|
||||
}
|
||||
return d_new TNode( n,l,r );
|
||||
return new TNode( n,l,r );
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
@@ -196,8 +196,8 @@ TNode *Node::call( const string &func,TNode *a0,TNode *a1,TNode *a2 ){
|
||||
}
|
||||
}
|
||||
}
|
||||
TNode *l=d_new TNode( IR_GLOBAL,0,0,func );
|
||||
return d_new TNode( IR_CALL,l,t,size );
|
||||
TNode *l=new TNode( IR_GLOBAL,0,0,func );
|
||||
return new TNode( IR_CALL,l,t,size );
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
@@ -218,67 +218,67 @@ TNode *Node::fcall( const string &func,TNode *a0,TNode *a1,TNode *a2 ){
|
||||
}
|
||||
}
|
||||
}
|
||||
TNode *l=d_new TNode( IR_GLOBAL,0,0,func );
|
||||
return d_new TNode( IR_FCALL,l,t,size );
|
||||
TNode *l=new TNode( IR_GLOBAL,0,0,func );
|
||||
return new TNode( IR_FCALL,l,t,size );
|
||||
}
|
||||
|
||||
TNode *Node::seq( TNode *l,TNode *r ){
|
||||
return d_new TNode( IR_SEQ,l,r );
|
||||
return new TNode( IR_SEQ,l,r );
|
||||
}
|
||||
|
||||
TNode *Node::move( TNode *src,TNode *dest ){
|
||||
return d_new TNode( IR_MOVE,src,dest );
|
||||
return new TNode( IR_MOVE,src,dest );
|
||||
}
|
||||
|
||||
TNode *Node::global( const string &s ){
|
||||
return d_new TNode( IR_GLOBAL,0,0,s );
|
||||
return new TNode( IR_GLOBAL,0,0,s );
|
||||
}
|
||||
|
||||
TNode *Node::local( int offset ){
|
||||
return d_new TNode( IR_LOCAL,0,0,offset );
|
||||
return new TNode( IR_LOCAL,0,0,offset );
|
||||
}
|
||||
|
||||
TNode *Node::arg( int offset ){
|
||||
return d_new TNode( IR_ARG,0,0,offset );
|
||||
return new TNode( IR_ARG,0,0,offset );
|
||||
}
|
||||
|
||||
TNode *Node::mem( TNode *ref ){
|
||||
return d_new TNode( IR_MEM,ref,0 );
|
||||
return new TNode( IR_MEM,ref,0 );
|
||||
}
|
||||
|
||||
TNode *Node::add( TNode *l,TNode *r ){
|
||||
return d_new TNode( IR_ADD,l,r );
|
||||
return new TNode( IR_ADD,l,r );
|
||||
}
|
||||
|
||||
TNode *Node::mul( TNode *l,TNode *r ){
|
||||
return d_new TNode( IR_MUL,l,r );
|
||||
return new TNode( IR_MUL,l,r );
|
||||
}
|
||||
|
||||
TNode *Node::iconst( int n ){
|
||||
return d_new TNode( IR_CONST,0,0,n );
|
||||
return new TNode( IR_CONST,0,0,n );
|
||||
}
|
||||
|
||||
TNode *Node::ret(){
|
||||
return d_new TNode( IR_RET,0,0 );
|
||||
return new TNode( IR_RET,0,0 );
|
||||
}
|
||||
|
||||
TNode *Node::jsr( const string &s ){
|
||||
return d_new TNode( IR_JSR,0,0,s );
|
||||
return new TNode( IR_JSR,0,0,s );
|
||||
}
|
||||
|
||||
TNode *Node::jump( const string &s ){
|
||||
return d_new TNode( IR_JUMP,0,0,s );
|
||||
return new TNode( IR_JUMP,0,0,s );
|
||||
}
|
||||
|
||||
TNode *Node::jumpt( TNode *expr,const string &s ){
|
||||
return d_new TNode( IR_JUMPT,expr,0,s );
|
||||
return new TNode( IR_JUMPT,expr,0,s );
|
||||
}
|
||||
|
||||
TNode *Node::jumpf( TNode *expr,const string &s ){
|
||||
return d_new TNode( IR_JUMPF,expr,0,s );
|
||||
return new TNode( IR_JUMPF,expr,0,s );
|
||||
}
|
||||
|
||||
TNode *Node::jumpge( TNode *l,TNode *r,const string &s ){
|
||||
return d_new TNode( IR_JUMPGE,l,r,s );
|
||||
return new TNode( IR_JUMPGE,l,r,s );
|
||||
}
|
||||
|
||||
|
||||
+78
-78
@@ -22,10 +22,10 @@ ProgNode *Parser::parse( const string &main ){
|
||||
|
||||
incfile=main;
|
||||
|
||||
consts=d_new DeclSeqNode();
|
||||
structs=d_new DeclSeqNode();
|
||||
funcs=d_new DeclSeqNode();
|
||||
datas=d_new DeclSeqNode();
|
||||
consts=new DeclSeqNode();
|
||||
structs=new DeclSeqNode();
|
||||
funcs=new DeclSeqNode();
|
||||
datas=new DeclSeqNode();
|
||||
StmtSeqNode *stmts=0;
|
||||
|
||||
try{
|
||||
@@ -36,7 +36,7 @@ ProgNode *Parser::parse( const string &main ){
|
||||
throw;
|
||||
}
|
||||
|
||||
return d_new ProgNode( consts,structs,funcs,datas,stmts );
|
||||
return new ProgNode( consts,structs,funcs,datas,stmts );
|
||||
}
|
||||
|
||||
void Parser::ex( const string &s ){
|
||||
@@ -71,7 +71,7 @@ void Parser::parseChar( int c ){
|
||||
}
|
||||
|
||||
StmtSeqNode *Parser::parseStmtSeq( int scope ){
|
||||
a_ptr<StmtSeqNode> stmts( d_new StmtSeqNode( incfile ) );
|
||||
a_ptr<StmtSeqNode> stmts( new StmtSeqNode( incfile ) );
|
||||
parseStmtSeq( stmts,scope );
|
||||
return stmts.release();
|
||||
}
|
||||
@@ -116,7 +116,7 @@ void Parser::parseStmtSeq( StmtSeqNode *stmts,int scope ){
|
||||
a_ptr<StmtSeqNode> ss( parseStmtSeq( scope ) );
|
||||
if( toker->curr()!=EOF ) exp( "end-of-file" );
|
||||
|
||||
result=d_new IncludeNode( incfile,ss.release() );
|
||||
result=new IncludeNode( incfile,ss.release() );
|
||||
|
||||
toker=t_toker;
|
||||
incfile=t_inc;
|
||||
@@ -146,14 +146,14 @@ void Parser::parseStmtSeq( StmtSeqNode *stmts,int scope ){
|
||||
toker->next();
|
||||
}else exprs=parseExprSeq();
|
||||
}else exprs=parseExprSeq();
|
||||
CallNode *call=d_new CallNode( ident,tag,exprs );
|
||||
result=d_new ExprStmtNode( call );
|
||||
CallNode *call=new CallNode( ident,tag,exprs );
|
||||
result=new ExprStmtNode( call );
|
||||
}else{
|
||||
//must be a var
|
||||
a_ptr<VarNode> var( parseVar( ident,tag ) );
|
||||
if( toker->curr()!='=' ) exp( "variable assignment" );
|
||||
toker->next();ExprNode *expr=parseExpr( false );
|
||||
result=d_new AssNode( var.release(),expr );
|
||||
result=new AssNode( var.release(),expr );
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -171,7 +171,7 @@ void Parser::parseStmtSeq( StmtSeqNode *stmts,int scope ){
|
||||
int pos=toker->pos();
|
||||
if( toker->curr()!=WEND ) exp( "'Wend'" );
|
||||
toker->next();
|
||||
result=d_new WhileNode( expr.release(),stmts.release(),pos );
|
||||
result=new WhileNode( expr.release(),stmts.release(),pos );
|
||||
}
|
||||
break;
|
||||
case REPEAT:
|
||||
@@ -182,13 +182,13 @@ void Parser::parseStmtSeq( StmtSeqNode *stmts,int scope ){
|
||||
int pos=toker->pos();
|
||||
if( curr!=UNTIL && curr!=FOREVER ) exp( "'Until' or 'Forever'" );
|
||||
toker->next();if( curr==UNTIL ) expr=parseExpr( false );
|
||||
result=d_new RepeatNode( stmts.release(),expr,pos );
|
||||
result=new RepeatNode( stmts.release(),expr,pos );
|
||||
}
|
||||
break;
|
||||
case SELECT:
|
||||
{
|
||||
toker->next();ExprNode *expr=parseExpr( false );
|
||||
a_ptr<SelectNode> selNode( d_new SelectNode( expr ) );
|
||||
a_ptr<SelectNode> selNode( new SelectNode( expr ) );
|
||||
for(;;){
|
||||
while( isTerm( toker->curr() ) ) toker->next();
|
||||
if( toker->curr()==CASE ){
|
||||
@@ -196,7 +196,7 @@ void Parser::parseStmtSeq( StmtSeqNode *stmts,int scope ){
|
||||
a_ptr<ExprSeqNode> exprs( parseExprSeq() );
|
||||
if( !exprs->size() ) exp( "expression sequence" );
|
||||
a_ptr<StmtSeqNode> stmts( parseStmtSeq( STMTS_BLOCK ) );
|
||||
selNode->push_back( d_new CaseNode( exprs.release(),stmts.release() ) );
|
||||
selNode->push_back( new CaseNode( exprs.release(),stmts.release() ) );
|
||||
continue;
|
||||
}else if( toker->curr()==DEFAULT ){
|
||||
toker->next();
|
||||
@@ -226,7 +226,7 @@ void Parser::parseStmtSeq( StmtSeqNode *stmts,int scope ){
|
||||
int pos=toker->pos();
|
||||
if( toker->curr()!=NEXT ) exp( "'Next'" );
|
||||
toker->next();
|
||||
result=d_new ForEachNode( var.release(),ident,stmts.release(),pos );
|
||||
result=new ForEachNode( var.release(),ident,stmts.release(),pos );
|
||||
}else{
|
||||
a_ptr<ExprNode> from,to,step;
|
||||
from=parseExpr( false );
|
||||
@@ -235,43 +235,43 @@ void Parser::parseStmtSeq( StmtSeqNode *stmts,int scope ){
|
||||
//step...
|
||||
if( toker->curr()==STEP ){
|
||||
toker->next();step=parseExpr( false );
|
||||
}else step=d_new IntConstNode( 1 );
|
||||
}else step=new IntConstNode( 1 );
|
||||
stmts=parseStmtSeq( STMTS_BLOCK );
|
||||
int pos=toker->pos();
|
||||
if( toker->curr()!=NEXT ) exp( "'Next'" );
|
||||
toker->next();
|
||||
result=d_new ForNode( var.release(),from.release(),to.release(),step.release(),stmts.release(),pos );
|
||||
result=new ForNode( var.release(),from.release(),to.release(),step.release(),stmts.release(),pos );
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EXIT:
|
||||
{
|
||||
toker->next();result=d_new ExitNode();
|
||||
toker->next();result=new ExitNode();
|
||||
}
|
||||
break;
|
||||
case GOTO:
|
||||
{
|
||||
toker->next();string t=parseIdent();result=d_new GotoNode( t );
|
||||
toker->next();string t=parseIdent();result=new GotoNode( t );
|
||||
}
|
||||
break;
|
||||
case GOSUB:
|
||||
{
|
||||
toker->next();string t=parseIdent();result=d_new GosubNode( t );
|
||||
toker->next();string t=parseIdent();result=new GosubNode( t );
|
||||
}
|
||||
break;
|
||||
case RETURN:
|
||||
{
|
||||
toker->next();result=d_new ReturnNode( parseExpr( true ) );
|
||||
toker->next();result=new ReturnNode( parseExpr( true ) );
|
||||
}
|
||||
break;
|
||||
case BBDELETE:
|
||||
{
|
||||
if( toker->next()==EACH ){
|
||||
toker->next();string t=parseIdent();
|
||||
result=d_new DeleteEachNode( t );
|
||||
result=new DeleteEachNode( t );
|
||||
}else{
|
||||
ExprNode *expr=parseExpr( false );
|
||||
result=d_new DeleteNode( expr );
|
||||
result=new DeleteNode( expr );
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -282,28 +282,28 @@ void Parser::parseStmtSeq( StmtSeqNode *stmts,int scope ){
|
||||
if( toker->curr()!=BEFORE && toker->curr()!=AFTER ) exp( "'Before' or 'After'" );
|
||||
bool before=toker->curr()==BEFORE;toker->next();
|
||||
a_ptr<ExprNode> expr2( parseExpr( false ) );
|
||||
result=d_new InsertNode( expr1.release(),expr2.release(),before );
|
||||
result=new InsertNode( expr1.release(),expr2.release(),before );
|
||||
}
|
||||
break;
|
||||
case READ:
|
||||
do{
|
||||
toker->next();VarNode *var=parseVar();
|
||||
StmtNode *stmt=d_new ReadNode( var );
|
||||
StmtNode *stmt=new ReadNode( var );
|
||||
stmt->pos=pos;pos=toker->pos();
|
||||
stmts->push_back( stmt );
|
||||
}while( toker->curr()==',' );
|
||||
break;
|
||||
case RESTORE:
|
||||
if( toker->next()==IDENT ){
|
||||
result=d_new RestoreNode( toker->text() );toker->next();
|
||||
}else result=d_new RestoreNode( "" );
|
||||
result=new RestoreNode( toker->text() );toker->next();
|
||||
}else result=new RestoreNode( "" );
|
||||
break;
|
||||
case DATA:
|
||||
if( scope!=STMTS_PROG ) ex( "'Data' can only appear in main program" );
|
||||
do{
|
||||
toker->next();
|
||||
ExprNode *expr=parseExpr( false );
|
||||
datas->push_back( d_new DataDeclNode( expr ) );
|
||||
datas->push_back( new DataDeclNode( expr ) );
|
||||
}while( toker->curr()==',' );
|
||||
break;
|
||||
case TYPE:
|
||||
@@ -332,7 +332,7 @@ void Parser::parseStmtSeq( StmtSeqNode *stmts,int scope ){
|
||||
do{
|
||||
toker->next();
|
||||
DeclNode *d=parseVarDecl( DECL_LOCAL,false );
|
||||
StmtNode *stmt=d_new DeclStmtNode( d );
|
||||
StmtNode *stmt=new DeclStmtNode( d );
|
||||
stmt->pos=pos;pos=toker->pos();
|
||||
stmts->push_back( stmt );
|
||||
}while( toker->curr()==',' );
|
||||
@@ -342,7 +342,7 @@ void Parser::parseStmtSeq( StmtSeqNode *stmts,int scope ){
|
||||
do{
|
||||
toker->next();
|
||||
DeclNode *d=parseVarDecl( DECL_GLOBAL,false );
|
||||
StmtNode *stmt=d_new DeclStmtNode( d );
|
||||
StmtNode *stmt=new DeclStmtNode( d );
|
||||
stmt->pos=pos;pos=toker->pos();
|
||||
stmts->push_back( stmt );
|
||||
}while( toker->curr()==',' );
|
||||
@@ -350,7 +350,7 @@ void Parser::parseStmtSeq( StmtSeqNode *stmts,int scope ){
|
||||
case '.':
|
||||
{
|
||||
toker->next();string t=parseIdent();
|
||||
result=d_new LabelNode( t,datas->size() );
|
||||
result=new LabelNode( t,datas->size() );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -387,23 +387,23 @@ VarNode *Parser::parseVar( const string &ident,const string &tag ){
|
||||
a_ptr<ExprSeqNode> exprs( parseExprSeq() );
|
||||
if( toker->curr()!=')' ) exp( "')'" );
|
||||
toker->next();
|
||||
var=d_new ArrayVarNode( ident,tag,exprs.release() );
|
||||
}else var=d_new IdentVarNode( ident,tag );
|
||||
var=new ArrayVarNode( ident,tag,exprs.release() );
|
||||
}else var=new IdentVarNode( ident,tag );
|
||||
|
||||
for(;;){
|
||||
if( toker->curr()=='\\' ){
|
||||
toker->next();
|
||||
string ident=parseIdent();
|
||||
string tag=parseTypeTag();
|
||||
ExprNode *expr=d_new VarExprNode( var.release() );
|
||||
var=d_new FieldVarNode( expr,ident,tag );
|
||||
ExprNode *expr=new VarExprNode( var.release() );
|
||||
var=new FieldVarNode( expr,ident,tag );
|
||||
}else if( toker->curr()=='[' ){
|
||||
toker->next();
|
||||
a_ptr<ExprSeqNode> exprs( parseExprSeq() );
|
||||
if( exprs->exprs.size()!=1 || toker->curr()!=']' ) exp( "']'" );
|
||||
toker->next();
|
||||
ExprNode *expr=d_new VarExprNode( var.release() );
|
||||
var=d_new VectorVarNode( expr,exprs.release() );
|
||||
ExprNode *expr=new VarExprNode( var.release() );
|
||||
var=new VectorVarNode( expr,exprs.release() );
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
@@ -422,13 +422,13 @@ DeclNode *Parser::parseVarDecl( int kind,bool constant ){
|
||||
a_ptr<ExprSeqNode> exprs( parseExprSeq() );
|
||||
if( exprs->size()!=1 || toker->curr()!=']' ) exp( "']'" );
|
||||
toker->next();
|
||||
d=d_new VectorDeclNode( ident,tag,exprs.release(),kind );
|
||||
d=new VectorDeclNode( ident,tag,exprs.release(),kind );
|
||||
}else{
|
||||
ExprNode *expr=0;
|
||||
if( toker->curr()=='=' ){
|
||||
toker->next();expr=parseExpr( false );
|
||||
}else if( constant ) ex( "Constants must be initialized" );
|
||||
d=d_new VarDeclNode( ident,tag,kind,constant,expr );
|
||||
d=new VarDeclNode( ident,tag,kind,constant,expr );
|
||||
}
|
||||
d->pos=pos;d->file=incfile;
|
||||
return d;
|
||||
@@ -443,7 +443,7 @@ DimNode *Parser::parseArrayDecl(){
|
||||
if( toker->curr()!=')' ) exp( "')'" );
|
||||
if( !exprs->size() ) ex( "can't have a 0 dimensional array" );
|
||||
toker->next();
|
||||
DimNode *d=d_new DimNode( ident,tag,exprs.release() );
|
||||
DimNode *d=new DimNode( ident,tag,exprs.release() );
|
||||
arrayDecls[ident]=d;
|
||||
d->pos=pos;
|
||||
return d;
|
||||
@@ -454,7 +454,7 @@ DeclNode *Parser::parseFuncDecl(){
|
||||
string ident=parseIdent();
|
||||
string tag=parseTypeTag();
|
||||
if( toker->curr()!='(' ) exp( "'('" );
|
||||
a_ptr<DeclSeqNode> params( d_new DeclSeqNode() );
|
||||
a_ptr<DeclSeqNode> params( new DeclSeqNode() );
|
||||
if( toker->next()!=')' ){
|
||||
for(;;){
|
||||
params->push_back( parseVarDecl( DECL_PARAM,false ) );
|
||||
@@ -466,9 +466,9 @@ DeclNode *Parser::parseFuncDecl(){
|
||||
toker->next();
|
||||
a_ptr<StmtSeqNode> stmts( parseStmtSeq( STMTS_BLOCK ) );
|
||||
if( toker->curr()!=ENDFUNCTION ) exp( "'End Function'" );
|
||||
StmtNode *ret=d_new ReturnNode(0);ret->pos=toker->pos();
|
||||
StmtNode *ret=new ReturnNode(0);ret->pos=toker->pos();
|
||||
stmts->push_back( ret );toker->next();
|
||||
DeclNode *d=d_new FuncDeclNode( ident,tag,params.release(),stmts.release() );
|
||||
DeclNode *d=new FuncDeclNode( ident,tag,params.release(),stmts.release() );
|
||||
d->pos=pos;d->file=incfile;
|
||||
return d;
|
||||
}
|
||||
@@ -477,7 +477,7 @@ DeclNode *Parser::parseStructDecl(){
|
||||
int pos=toker->pos();
|
||||
string ident=parseIdent();
|
||||
while( toker->curr()=='\n' ) toker->next();
|
||||
a_ptr<DeclSeqNode> fields( d_new DeclSeqNode() );
|
||||
a_ptr<DeclSeqNode> fields( new DeclSeqNode() );
|
||||
while( toker->curr()==FIELD ){
|
||||
do{
|
||||
toker->next();
|
||||
@@ -487,7 +487,7 @@ DeclNode *Parser::parseStructDecl(){
|
||||
}
|
||||
if( toker->curr()!=ENDTYPE ) exp( "'Field' or 'End Type'" );
|
||||
toker->next();
|
||||
DeclNode *d=d_new StructDeclNode( ident,fields.release() );
|
||||
DeclNode *d=new StructDeclNode( ident,fields.release() );
|
||||
d->pos=pos;d->file=incfile;
|
||||
return d;
|
||||
}
|
||||
@@ -507,7 +507,7 @@ IfNode *Parser::parseIf(){
|
||||
toker->next();
|
||||
IfNode *ifnode=parseIf();
|
||||
ifnode->pos=pos;
|
||||
elseOpt=d_new StmtSeqNode( incfile );
|
||||
elseOpt=new StmtSeqNode( incfile );
|
||||
elseOpt->push_back( ifnode );
|
||||
}else if( toker->curr()==ELSE ){
|
||||
toker->next();
|
||||
@@ -517,11 +517,11 @@ IfNode *Parser::parseIf(){
|
||||
if( toker->curr()!=ENDIF ) exp( "'EndIf'" );
|
||||
}else if( toker->curr()!='\n' ) exp( "end-of-line" );
|
||||
|
||||
return d_new IfNode( expr.release(),stmts.release(),elseOpt.release() );
|
||||
return new IfNode( expr.release(),stmts.release(),elseOpt.release() );
|
||||
}
|
||||
|
||||
ExprSeqNode *Parser::parseExprSeq(){
|
||||
a_ptr<ExprSeqNode> exprs( d_new ExprSeqNode() );
|
||||
a_ptr<ExprSeqNode> exprs( new ExprSeqNode() );
|
||||
bool opt=true;
|
||||
while( ExprNode *e=parseExpr( opt ) ){
|
||||
exprs->push_back( e );
|
||||
@@ -535,7 +535,7 @@ ExprNode *Parser::parseExpr( bool opt ){
|
||||
if( toker->curr()==NOT ){
|
||||
toker->next();
|
||||
ExprNode *expr=parseExpr1( false );
|
||||
return d_new RelExprNode( '=',expr,d_new IntConstNode( 0 ) );
|
||||
return new RelExprNode( '=',expr,new IntConstNode( 0 ) );
|
||||
}
|
||||
return parseExpr1( opt );
|
||||
}
|
||||
@@ -548,7 +548,7 @@ ExprNode *Parser::parseExpr1( bool opt ){
|
||||
int c=toker->curr();
|
||||
if( c!=AND && c!=OR && c!=XOR ) return lhs.release();
|
||||
toker->next();ExprNode *rhs=parseExpr2( false );
|
||||
lhs=d_new BinExprNode( c,lhs.release(),rhs );
|
||||
lhs=new BinExprNode( c,lhs.release(),rhs );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -560,7 +560,7 @@ ExprNode *Parser::parseExpr2( bool opt ){
|
||||
int c=toker->curr();
|
||||
if( c!='<' && c!='>' && c!='=' && c!=LE && c!=GE && c!=NE ) return lhs.release();
|
||||
toker->next();ExprNode *rhs=parseExpr3( false );
|
||||
lhs=d_new RelExprNode( c,lhs.release(),rhs );
|
||||
lhs=new RelExprNode( c,lhs.release(),rhs );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -572,7 +572,7 @@ ExprNode *Parser::parseExpr3( bool opt ){
|
||||
int c=toker->curr();
|
||||
if( c!='+' && c!='-' ) return lhs.release();
|
||||
toker->next();ExprNode *rhs=parseExpr4( false );
|
||||
lhs=d_new ArithExprNode( c,lhs.release(),rhs );
|
||||
lhs=new ArithExprNode( c,lhs.release(),rhs );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -583,7 +583,7 @@ ExprNode *Parser::parseExpr4( bool opt ){
|
||||
int c=toker->curr();
|
||||
if( c!=SHL && c!=SHR && c!=SAR ) return lhs.release();
|
||||
toker->next();ExprNode *rhs=parseExpr5( false );
|
||||
lhs=d_new BinExprNode( c,lhs.release(),rhs );
|
||||
lhs=new BinExprNode( c,lhs.release(),rhs );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -595,7 +595,7 @@ ExprNode *Parser::parseExpr5( bool opt ){
|
||||
int c=toker->curr();
|
||||
if( c!='*' && c!='/' && c!=MOD ) return lhs.release();
|
||||
toker->next();ExprNode *rhs=parseExpr6( false );
|
||||
lhs=d_new ArithExprNode( c,lhs.release(),rhs );
|
||||
lhs=new ArithExprNode( c,lhs.release(),rhs );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -607,7 +607,7 @@ ExprNode *Parser::parseExpr6( bool opt ){
|
||||
int c=toker->curr();
|
||||
if( c!='^' ) return lhs.release();
|
||||
toker->next();ExprNode *rhs=parseUniExpr( false );
|
||||
lhs=d_new ArithExprNode( c,lhs.release(),rhs );
|
||||
lhs=new ArithExprNode( c,lhs.release(),rhs );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -621,46 +621,46 @@ ExprNode *Parser::parseUniExpr( bool opt ){
|
||||
case BBINT:
|
||||
if( toker->next()=='%' ) toker->next();
|
||||
result=parseUniExpr( false );
|
||||
result=d_new CastNode( result,Type::int_type );
|
||||
result=new CastNode( result,Type::int_type );
|
||||
break;
|
||||
case BBFLOAT:
|
||||
if( toker->next()=='#' ) toker->next();
|
||||
result=parseUniExpr( false );
|
||||
result=d_new CastNode( result,Type::float_type );
|
||||
result=new CastNode( result,Type::float_type );
|
||||
break;
|
||||
case BBSTR:
|
||||
if( toker->next()=='$' ) toker->next();
|
||||
result=parseUniExpr( false );
|
||||
result=d_new CastNode( result,Type::string_type );
|
||||
result=new CastNode( result,Type::string_type );
|
||||
break;
|
||||
case OBJECT:
|
||||
if( toker->next()=='.' ) toker->next();
|
||||
t=parseIdent();
|
||||
result=parseUniExpr( false );
|
||||
result=d_new ObjectCastNode( result,t );
|
||||
result=new ObjectCastNode( result,t );
|
||||
break;
|
||||
case BBHANDLE:
|
||||
toker->next();
|
||||
result=parseUniExpr( false );
|
||||
result=d_new ObjectHandleNode( result );
|
||||
result=new ObjectHandleNode( result );
|
||||
break;
|
||||
case BEFORE:
|
||||
toker->next();
|
||||
result=parseUniExpr( false );
|
||||
result=d_new BeforeNode( result );
|
||||
result=new BeforeNode( result );
|
||||
break;
|
||||
case AFTER:
|
||||
toker->next();
|
||||
result=parseUniExpr( false );
|
||||
result=d_new AfterNode( result );
|
||||
result=new AfterNode( result );
|
||||
break;
|
||||
case '+':case '-':case '~':case ABS:case SGN:
|
||||
toker->next();
|
||||
result=parseUniExpr( false );
|
||||
if( c=='~' ){
|
||||
result=d_new BinExprNode( XOR,result,d_new IntConstNode( -1 ) );
|
||||
result=new BinExprNode( XOR,result,new IntConstNode( -1 ) );
|
||||
}else{
|
||||
result=d_new UniExprNode( c,result );
|
||||
result=new UniExprNode( c,result );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -686,53 +686,53 @@ ExprNode *Parser::parsePrimary( bool opt ){
|
||||
break;
|
||||
case BBNEW:
|
||||
toker->next();t=parseIdent();
|
||||
result=d_new NewNode( t );
|
||||
result=new NewNode( t );
|
||||
break;
|
||||
case FIRST:
|
||||
toker->next();t=parseIdent();
|
||||
result=d_new FirstNode( t );
|
||||
result=new FirstNode( t );
|
||||
break;
|
||||
case LAST:
|
||||
toker->next();t=parseIdent();
|
||||
result=d_new LastNode( t );
|
||||
result=new LastNode( t );
|
||||
break;
|
||||
case BBNULL:
|
||||
result=d_new NullNode();
|
||||
result=new NullNode();
|
||||
toker->next();
|
||||
break;
|
||||
case INTCONST:
|
||||
result=d_new IntConstNode( atoi( toker->text() ) );
|
||||
result=new IntConstNode( atoi( toker->text() ) );
|
||||
toker->next();
|
||||
break;
|
||||
case FLOATCONST:
|
||||
result=d_new FloatConstNode( atof( toker->text() ) );
|
||||
result=new FloatConstNode( atof( toker->text() ) );
|
||||
toker->next();
|
||||
break;
|
||||
case STRINGCONST:
|
||||
t=toker->text();
|
||||
result=d_new StringConstNode( t.substr( 1,t.size()-2 ) );
|
||||
result=new StringConstNode( t.substr( 1,t.size()-2 ) );
|
||||
toker->next();
|
||||
break;
|
||||
case BINCONST:
|
||||
n=0;t=toker->text();
|
||||
for( k=1;k<t.size();++k ) n=(n<<1)|(t[k]=='1');
|
||||
result=d_new IntConstNode( n );
|
||||
result=new IntConstNode( n );
|
||||
toker->next();
|
||||
break;
|
||||
case HEXCONST:
|
||||
n=0;t=toker->text();
|
||||
for( k=1;k<t.size();++k ) n=(n<<4)|( isdigit(t[k]) ? t[k]&0xf : (t[k]&7)+9 );
|
||||
result=d_new IntConstNode( n );
|
||||
result=new IntConstNode( n );
|
||||
toker->next();
|
||||
break;
|
||||
case PI:
|
||||
result=d_new FloatConstNode( 3.1415926535897932384626433832795f );
|
||||
result=new FloatConstNode( 3.1415926535897932384626433832795f );
|
||||
toker->next();break;
|
||||
case BBTRUE:
|
||||
result=d_new IntConstNode( 1 );
|
||||
result=new IntConstNode( 1 );
|
||||
toker->next();break;
|
||||
case BBFALSE:
|
||||
result=d_new IntConstNode( 0 );
|
||||
result=new IntConstNode( 0 );
|
||||
toker->next();break;
|
||||
case IDENT:
|
||||
ident=toker->text();
|
||||
@@ -743,11 +743,11 @@ ExprNode *Parser::parsePrimary( bool opt ){
|
||||
a_ptr<ExprSeqNode> exprs( parseExprSeq() );
|
||||
if( toker->curr()!=')' ) exp( "')'" );
|
||||
toker->next();
|
||||
result=d_new CallNode( ident,tag,exprs.release() );
|
||||
result=new CallNode( ident,tag,exprs.release() );
|
||||
}else{
|
||||
//must be a var
|
||||
VarNode *var=parseVar( ident,tag );
|
||||
result=d_new VarExprNode( var );
|
||||
result=new VarExprNode( var );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -11,7 +11,7 @@ Environ *ProgNode::semant( Environ *e ){
|
||||
|
||||
StmtSeqNode::reset( stmts->file,file_lab );
|
||||
|
||||
a_ptr<Environ> env( d_new Environ( genLabel(),Type::int_type,0,e ) );
|
||||
a_ptr<Environ> env( new Environ( genLabel(),Type::int_type,0,e ) );
|
||||
|
||||
consts->proto( env->decls,env );
|
||||
structs->proto( env->typeDecls,env );
|
||||
@@ -75,7 +75,7 @@ void ProgNode::translate( Codegen *g,const vector<UserFunc> &usrfuncs ){
|
||||
//leave main program
|
||||
g->label( sem_env->funcLabel+"_leave" );
|
||||
t=deleteVars( sem_env );
|
||||
if( g->debug ) t=d_new TNode( IR_SEQ,call( "__bbDebugLeave" ),t );
|
||||
if( g->debug ) t=new TNode( IR_SEQ,call( "__bbDebugLeave" ),t );
|
||||
g->leave( t,0 );
|
||||
|
||||
//structs
|
||||
|
||||
+11
-11
@@ -94,7 +94,7 @@ void DimNode::semant(Environ *e) {
|
||||
} else {
|
||||
if (e->level > 0) ex("Array not found in main program");
|
||||
if (!t) t = Type::int_type;
|
||||
sem_type = d_new ArrayType(t, exprs->size());
|
||||
sem_type = new ArrayType(t, exprs->size());
|
||||
sem_decl = e->decls->insertDecl(ident, sem_type, DECL_ARRAY);
|
||||
e->types.push_back(sem_type);
|
||||
}
|
||||
@@ -255,7 +255,7 @@ void ExitNode::semant(Environ *e) {
|
||||
}
|
||||
|
||||
void ExitNode::translate(Codegen *g) {
|
||||
g->code(d_new TNode(IR_JUMP, 0, 0, sem_brk));
|
||||
g->code(new TNode(IR_JUMP, 0, 0, sem_brk));
|
||||
}
|
||||
|
||||
/////////////////////
|
||||
@@ -340,7 +340,7 @@ void ForNode::translate(Codegen *g) {
|
||||
//execute the step part
|
||||
debug(nextPos, g);
|
||||
int op = ty == Type::int_type ? IR_ADD : IR_FADD;
|
||||
t = d_new TNode(op, var->load(g), stepExpr->translate(g));
|
||||
t = new TNode(op, var->load(g), stepExpr->translate(g));
|
||||
g->code(var->store(g, t));
|
||||
|
||||
//test for loop cond
|
||||
@@ -408,13 +408,13 @@ void ReturnNode::semant(Environ *e) {
|
||||
if (e->level > 0) {
|
||||
if (!expr) {
|
||||
if (e->returnType == Type::float_type) {
|
||||
expr = d_new FloatConstNode(0);
|
||||
expr = new FloatConstNode(0);
|
||||
} else if (e->returnType == Type::string_type) {
|
||||
expr = d_new StringConstNode("");
|
||||
expr = new StringConstNode("");
|
||||
} else if (e->returnType->structType()) {
|
||||
expr = d_new NullNode();
|
||||
expr = new NullNode();
|
||||
} else {
|
||||
expr = d_new IntConstNode(0);
|
||||
expr = new IntConstNode(0);
|
||||
}
|
||||
}
|
||||
expr = expr->semant(e);
|
||||
@@ -425,16 +425,16 @@ void ReturnNode::semant(Environ *e) {
|
||||
|
||||
void ReturnNode::translate(Codegen *g) {
|
||||
if (!expr) {
|
||||
g->code(d_new TNode(IR_RET, 0, 0));
|
||||
g->code(new TNode(IR_RET, 0, 0));
|
||||
return;
|
||||
}
|
||||
|
||||
TNode *t = expr->translate(g);
|
||||
|
||||
if (expr->sem_type == Type::float_type) {
|
||||
g->code(d_new TNode(IR_FRETURN, t, 0, returnLabel));
|
||||
g->code(new TNode(IR_FRETURN, t, 0, returnLabel));
|
||||
} else {
|
||||
g->code(d_new TNode(IR_RETURN, t, 0, returnLabel));
|
||||
g->code(new TNode(IR_RETURN, t, 0, returnLabel));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -494,7 +494,7 @@ void SelectNode::semant(Environ *e) {
|
||||
|
||||
//we need a temp var
|
||||
Decl *d = e->decls->insertDecl(genLabel(), expr->sem_type, DECL_LOCAL);
|
||||
sem_temp = d_new DeclVarNode(d);
|
||||
sem_temp = new DeclVarNode(d);
|
||||
|
||||
for (int k = 0; k < cases.size(); ++k) {
|
||||
CaseNode *c = cases[k];
|
||||
|
||||
@@ -149,7 +149,7 @@ static gxChannel *allocSoundChannel( int n ){
|
||||
for( int k=0;k<soundChannels.size();++k ){
|
||||
chan=soundChannels[next_chan];
|
||||
if( !chan ){
|
||||
chan=soundChannels[next_chan]=d_new SoundChannel();
|
||||
chan=soundChannels[next_chan]=new SoundChannel();
|
||||
channels.push_back(chan);
|
||||
}else if( chan->isPlaying() ){
|
||||
chan=0;
|
||||
@@ -162,7 +162,7 @@ static gxChannel *allocSoundChannel( int n ){
|
||||
next_chan=soundChannels.size();
|
||||
soundChannels.resize(soundChannels.size()*2);
|
||||
for( int k=next_chan;k<soundChannels.size();++k ) soundChannels[k]=0;
|
||||
chan=soundChannels[next_chan++]=d_new SoundChannel();
|
||||
chan=soundChannels[next_chan++]=new SoundChannel();
|
||||
channels.push_back( chan );
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ runtime(r){
|
||||
soundChannels.resize( 4096 );
|
||||
for( int k=0;k<4096;++k ) soundChannels[k]=0;
|
||||
|
||||
cdChannel=d_new CDChannel();
|
||||
cdChannel=new CDChannel();
|
||||
channels.push_back( cdChannel );
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ gxSound *gxAudio::loadSound( const string &f,bool use3d ){
|
||||
FSOUND_SAMPLE *sample=FSOUND_Sample_Load( FSOUND_FREE,f.c_str(),flags,0,0 );
|
||||
if( !sample ) return 0;
|
||||
|
||||
gxSound *sound=d_new gxSound( this,sample );
|
||||
gxSound *sound=new gxSound( this,sample );
|
||||
sound_set.insert( sound );
|
||||
return sound;
|
||||
}
|
||||
@@ -268,11 +268,11 @@ gxChannel *gxAudio::playFile( const string &t,bool use_3d ){
|
||||
f.find( ".asf" )!=string::npos ){
|
||||
FSOUND_STREAM *stream=FSOUND_Stream_Open( f.c_str(),use_3d,0,0 );
|
||||
if( !stream ) return 0;
|
||||
chan=d_new StreamChannel( stream );
|
||||
chan=new StreamChannel( stream );
|
||||
}else{
|
||||
FMUSIC_MODULE *module=FMUSIC_LoadSong( f.c_str() );
|
||||
if( !module ) return 0;
|
||||
chan=d_new MusicChannel( module );
|
||||
chan=new MusicChannel( module );
|
||||
}
|
||||
channels.push_back( chan );
|
||||
songs[f]=chan;
|
||||
|
||||
@@ -528,11 +528,11 @@ bool gxCanvas::collide(int x1, int y1, const gxCanvas *i2, int x2, int y2, bool
|
||||
if (solid) return true;
|
||||
|
||||
if (!cm_mask) {
|
||||
cm_mask = d_new unsigned[cm_pitch*clip_rect.bottom];
|
||||
cm_mask = new unsigned[cm_pitch*clip_rect.bottom];
|
||||
updateBitMask(clip_rect);
|
||||
}
|
||||
if (!i2->cm_mask) {
|
||||
i2->cm_mask = d_new unsigned[i2->cm_pitch*i2->clip_rect.bottom];
|
||||
i2->cm_mask = new unsigned[i2->cm_pitch*i2->clip_rect.bottom];
|
||||
i2->updateBitMask(i2->clip_rect);
|
||||
}
|
||||
|
||||
@@ -616,7 +616,7 @@ bool gxCanvas::rect_collide(int x1, int y1, int x2, int y2, int w2, int h2, bool
|
||||
ir.bottom = r1.bottom < r2.bottom ? r1.bottom : r2.bottom;
|
||||
|
||||
if (!cm_mask) {
|
||||
cm_mask = d_new unsigned[cm_pitch*clip_rect.bottom];
|
||||
cm_mask = new unsigned[cm_pitch*clip_rect.bottom];
|
||||
updateBitMask(clip_rect);
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ gxDir *gxFileSystem::openDir( const std::string &name,int flags ){
|
||||
WIN32_FIND_DATA f;
|
||||
HANDLE h=FindFirstFile( t.c_str(),&f );
|
||||
if( h!=INVALID_HANDLE_VALUE ){
|
||||
gxDir *d=d_new gxDir( h,f );
|
||||
gxDir *d=new gxDir( h,f );
|
||||
dir_set.insert( d );
|
||||
return d;
|
||||
}
|
||||
|
||||
+12
-12
@@ -10,8 +10,8 @@ gxGraphics::gxGraphics(gxRuntime *rt, IDirectDraw7 *dd, IDirectDrawSurface7 *fs,
|
||||
|
||||
dirDraw->QueryInterface(IID_IDirectDraw, (void**)&ds_dirDraw);
|
||||
|
||||
front_canvas = d_new gxCanvas(this, fs, 0);
|
||||
back_canvas = d_new gxCanvas(this, bs, 0);
|
||||
front_canvas = new gxCanvas(this, fs, 0);
|
||||
back_canvas = new gxCanvas(this, bs, 0);
|
||||
|
||||
front_canvas->cls();
|
||||
back_canvas->cls();
|
||||
@@ -170,7 +170,7 @@ gxMovie *gxGraphics::openMovie(const string &file, int flags) {
|
||||
delete path;
|
||||
|
||||
if (n == S_OK) {
|
||||
gxMovie *movie = d_new gxMovie(this, iam_stream);
|
||||
gxMovie *movie = new gxMovie(this, iam_stream);
|
||||
movie_set.insert(movie);
|
||||
return movie;
|
||||
}
|
||||
@@ -192,7 +192,7 @@ void gxGraphics::closeMovie(gxMovie *m) {
|
||||
gxCanvas *gxGraphics::createCanvas(int w, int h, int flags) {
|
||||
ddSurf *s = ddUtil::createSurface(w, h, flags, this);
|
||||
if (!s) return 0;
|
||||
gxCanvas *c = d_new gxCanvas(this, s, flags);
|
||||
gxCanvas *c = new gxCanvas(this, s, flags);
|
||||
canvas_set.insert(c);
|
||||
c->cls();
|
||||
return c;
|
||||
@@ -201,7 +201,7 @@ gxCanvas *gxGraphics::createCanvas(int w, int h, int flags) {
|
||||
gxCanvas *gxGraphics::loadCanvas(const string &f, int flags) {
|
||||
ddSurf *s = ddUtil::loadSurface(f, flags, this);
|
||||
if (!s) return 0;
|
||||
gxCanvas *c = d_new gxCanvas(this, s, flags);
|
||||
gxCanvas *c = new gxCanvas(this, s, flags);
|
||||
canvas_set.insert(c);
|
||||
return c;
|
||||
}
|
||||
@@ -275,9 +275,9 @@ gxFont *gxGraphics::loadFont(const string &f, int height, int flags) {
|
||||
|
||||
int first = tm.tmFirstChar, last = tm.tmLastChar;
|
||||
int sz = last - first + 1;
|
||||
int *offs = d_new int[sz];
|
||||
int *widths = d_new int[sz];
|
||||
int *as = d_new int[sz];
|
||||
int *offs = new int[sz];
|
||||
int *widths = new int[sz];
|
||||
int *as = new int[sz];
|
||||
|
||||
//calc size of canvas to hold font.
|
||||
int x = 0, y = 0, max_x = 0;
|
||||
@@ -333,7 +333,7 @@ gxFont *gxGraphics::loadFont(const string &f, int height, int flags) {
|
||||
delete[] as;
|
||||
|
||||
c->backup();
|
||||
gxFont *font = d_new gxFont(this, c, tm.tmMaxCharWidth, height, first, last + 1, tm.tmDefaultChar, offs, widths);
|
||||
gxFont *font = new gxFont(this, c, tm.tmMaxCharWidth, height, first, last + 1, tm.tmDefaultChar, offs, widths);
|
||||
font_set.insert(font);
|
||||
|
||||
//restore font smoothing
|
||||
@@ -545,7 +545,7 @@ gxScene *gxGraphics::createScene(int flags) {
|
||||
string ts = "ZBuffer Bit Depth:" + itoa(zbuffFmt.dwZBufferBitDepth);
|
||||
gx_runtime->debugLog(ts.c_str());
|
||||
#endif
|
||||
gxScene *scene = d_new gxScene(this, back_canvas);
|
||||
gxScene *scene = new gxScene(this, back_canvas);
|
||||
scene_set.insert(scene);
|
||||
|
||||
dummy_mesh = createMesh(8, 12, 0);
|
||||
@@ -596,8 +596,8 @@ gxMesh *gxGraphics::createMesh(int max_verts, int max_tris, int flags) {
|
||||
|
||||
IDirect3DVertexBuffer7 *buff;
|
||||
if (dir3d->CreateVertexBuffer(&desc, &buff, 0) < 0) return 0;
|
||||
WORD *indices = d_new WORD[max_tris * 3];
|
||||
gxMesh *mesh = d_new gxMesh(this, buff, indices, max_verts, max_tris);
|
||||
WORD *indices = new WORD[max_tris * 3];
|
||||
gxMesh *mesh = new gxMesh(this, buff, indices, max_verts, max_tris);
|
||||
mesh_set.insert(mesh);
|
||||
return mesh;
|
||||
}
|
||||
|
||||
@@ -145,14 +145,14 @@ static Keyboard *createKeyboard(gxInput *input) {
|
||||
dword.diph.dwHow = DIPH_DEVICE;
|
||||
dword.dwData = 32;
|
||||
if (dev->SetProperty(DIPROP_BUFFERSIZE, &dword.diph) >= 0) {
|
||||
return d_new Keyboard(input, dev);
|
||||
return new Keyboard(input, dev);
|
||||
} else {
|
||||
// input->runtime->debugInfo( "keyboard: SetProperty failed" );
|
||||
}
|
||||
} else {
|
||||
// input->runtime->debugInfo( "keyboard: SetDataFormat failed" );
|
||||
}
|
||||
return d_new Keyboard(input, dev);
|
||||
return new Keyboard(input, dev);
|
||||
|
||||
} else {
|
||||
input->runtime->debugInfo("keyboard: SetCooperativeLevel failed");
|
||||
@@ -170,11 +170,11 @@ static Mouse *createMouse(gxInput *input) {
|
||||
if (dev->SetCooperativeLevel(input->runtime->hwnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE) >= 0) {
|
||||
|
||||
if (dev->SetDataFormat(&c_dfDIMouse) >= 0) {
|
||||
return d_new Mouse(input, dev);
|
||||
return new Mouse(input, dev);
|
||||
} else {
|
||||
// input->runtime->debugInfo( "mouse: SetDataFormat failed" );
|
||||
}
|
||||
return d_new Mouse(input, dev);
|
||||
return new Mouse(input, dev);
|
||||
|
||||
} else {
|
||||
input->runtime->debugInfo("mouse: SetCooperativeLevel failed");
|
||||
@@ -192,7 +192,7 @@ static Joystick *createJoystick(gxInput *input, LPCDIDEVICEINSTANCE devinst) {
|
||||
if (dev->SetCooperativeLevel(input->runtime->hwnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE) >= 0) {
|
||||
if (dev->SetDataFormat(&c_dfDIJoystick) >= 0) {
|
||||
int t = ((devinst->dwDevType >> 8) & 0xff) == DI8DEVCLASS_GAMECTRL ? 1 : 2;
|
||||
return d_new Joystick(input, dev, t);
|
||||
return new Joystick(input, dev, t);
|
||||
}
|
||||
}
|
||||
dev->Release();
|
||||
|
||||
@@ -77,7 +77,7 @@ void gxMesh::backup(){
|
||||
|
||||
dxVertex *verts;
|
||||
if( vertex_buff->Lock( DDLOCK_READONLY|DDLOCK_WAIT,(void**)&verts,0 )>=0 ){
|
||||
backup_verts=d_new dxVertex[ max_verts ];
|
||||
backup_verts=new dxVertex[ max_verts ];
|
||||
memcpy( backup_verts,verts,sizeof(dxVertex)*max_verts );
|
||||
vertex_buff->Unlock();
|
||||
}
|
||||
|
||||
+11
-11
@@ -95,7 +95,7 @@ gxRuntime *gxRuntime::openRuntime(HINSTANCE hinst, const string &cmd_line, Debug
|
||||
|
||||
UpdateWindow(hwnd);
|
||||
|
||||
runtime = d_new gxRuntime(hinst, cmd_line, hwnd);
|
||||
runtime = new gxRuntime(hinst, cmd_line, hwnd);
|
||||
return runtime;
|
||||
}
|
||||
|
||||
@@ -676,7 +676,7 @@ gxAudio *gxRuntime::openAudio(int flags) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
audio = d_new gxAudio(this);
|
||||
audio = new gxAudio(this);
|
||||
return audio;
|
||||
}
|
||||
|
||||
@@ -694,7 +694,7 @@ gxInput *gxRuntime::openInput(int flags) {
|
||||
LPDIRECTINPUT8 di;
|
||||
if (DirectInput8Create(hinst, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&di, NULL) >= 0) {
|
||||
//if (DirectInput8Create(hinst, DIRECTINPUT_VERSION, (void**)&di, NULL) >= 0) {
|
||||
input = d_new gxInput(this, di);
|
||||
input = new gxInput(this, di);
|
||||
acquireInput();
|
||||
} else {
|
||||
debugInfo("Create DirectInput failed");
|
||||
@@ -807,7 +807,7 @@ gxGraphics *gxRuntime::openWindowedGraphics(int w, int h, int d, bool d3d) {
|
||||
primSurf = ps;
|
||||
mod_cnt = 0;
|
||||
fs->AddRef();
|
||||
return d_new gxGraphics(this, dd, fs, fs, d3d);
|
||||
return new gxGraphics(this, dd, fs, fs, d3d);
|
||||
}
|
||||
fs->Release();
|
||||
}
|
||||
@@ -846,7 +846,7 @@ gxGraphics *gxRuntime::openExclusiveGraphics(int w, int h, int d, bool d3d) {
|
||||
DDSCAPS2 caps = { sizeof caps };
|
||||
caps.dwCaps = DDSCAPS_BACKBUFFER;
|
||||
if (ps->GetAttachedSurface(&caps, &bs) >= 0) {
|
||||
return d_new gxGraphics(this, dd, ps, bs, d3d);
|
||||
return new gxGraphics(this, dd, ps, bs, d3d);
|
||||
}
|
||||
ps->Release();
|
||||
}
|
||||
@@ -960,7 +960,7 @@ bool gxRuntime::graphicsLost() {
|
||||
gxFileSystem *gxRuntime::openFileSystem(int flags) {
|
||||
if (fileSystem) return 0;
|
||||
|
||||
fileSystem = d_new gxFileSystem();
|
||||
fileSystem = new gxFileSystem();
|
||||
return fileSystem;
|
||||
}
|
||||
|
||||
@@ -977,7 +977,7 @@ void gxRuntime::closeFileSystem(gxFileSystem *f) {
|
||||
static HRESULT WINAPI enumMode(DDSURFACEDESC2 *desc, void *context) {
|
||||
int dp = desc->ddpfPixelFormat.dwRGBBitCount;
|
||||
if (dp == 16 || dp == 24 || dp == 32) {
|
||||
gxRuntime::GfxMode *m = d_new gxRuntime::GfxMode;
|
||||
gxRuntime::GfxMode *m = new gxRuntime::GfxMode;
|
||||
m->desc = *desc;
|
||||
gxRuntime::GfxDriver *d = (gxRuntime::GfxDriver*)context;
|
||||
d->modes.push_back(m);
|
||||
@@ -1009,9 +1009,9 @@ static BOOL WINAPI enumDriver(GUID FAR *guid, LPSTR desc, LPSTR name, LPVOID con
|
||||
dd->GetDisplayMode(&desktop_desc);
|
||||
}
|
||||
|
||||
gxRuntime::GfxDriver *d = d_new gxRuntime::GfxDriver;
|
||||
gxRuntime::GfxDriver *d = new gxRuntime::GfxDriver;
|
||||
|
||||
d->guid = guid ? d_new GUID(*guid) : 0;
|
||||
d->guid = guid ? new GUID(*guid) : 0;
|
||||
d->name = desc;//string( name )+" "+string( desc );
|
||||
|
||||
memset(&d->d3d_desc, 0, sizeof(d->d3d_desc));
|
||||
@@ -1097,7 +1097,7 @@ void gxRuntime::windowedModeInfo(int *c) {
|
||||
}
|
||||
|
||||
gxTimer *gxRuntime::createTimer(int hertz) {
|
||||
gxTimer *t = d_new gxTimer(this, hertz);
|
||||
gxTimer *t = new gxTimer(this, hertz);
|
||||
timers.insert(t);
|
||||
return t;
|
||||
}
|
||||
@@ -1164,7 +1164,7 @@ int gxRuntime::callDll(const std::string &dll, const std::string &func, const vo
|
||||
if (lib_it == libs.end()) {
|
||||
HINSTANCE h = LoadLibrary(dll.c_str());
|
||||
if (!h) return 0;
|
||||
gxDll *t = d_new gxDll;
|
||||
gxDll *t = new gxDll;
|
||||
t->hinst = h;
|
||||
lib_it = libs.insert(make_pair(dll, t)).first;
|
||||
}
|
||||
|
||||
@@ -605,7 +605,7 @@ void gxScene::end(){
|
||||
}
|
||||
|
||||
gxLight *gxScene::createLight( int flags ){
|
||||
gxLight *l=d_new gxLight( this,flags );
|
||||
gxLight *l=new gxLight( this,flags );
|
||||
_allLights.insert(l);
|
||||
return l;
|
||||
}
|
||||
|
||||
+4
-4
@@ -46,7 +46,7 @@ static void check(Mem *m) {
|
||||
MessageBox(GetDesktopWindow(), "mem_check: pre_tag!='DNEW'", "Memory error", MB_OK | MB_ICONWARNING);
|
||||
if (m->tag == 'NDWE') {
|
||||
string t = "Probable double delete";
|
||||
t += "- d_new file: " + string(m->file) + " line:" + itoa(m->line);
|
||||
t += "- new file: " + string(m->file) + " line:" + itoa(m->line);
|
||||
MessageBox(GetDesktopWindow(), t.c_str(), "Memory error", MB_OK | MB_ICONWARNING);
|
||||
}
|
||||
ExitProcess(0);
|
||||
@@ -54,7 +54,7 @@ static void check(Mem *m) {
|
||||
int *t = (int*)((char*)(m + 1) + m->size);
|
||||
if (*t != 'dnew') {
|
||||
MessageBox(GetDesktopWindow(), "mem_check: post_tag!='dnew'", "Memory error", MB_OK | MB_ICONWARNING);
|
||||
string t = "Probable memory overwrite - d_new file: " + string(m->file) + " line:" + itoa(m->line);
|
||||
string t = "Probable memory overwrite - new file: " + string(m->file) + " line:" + itoa(m->line);
|
||||
MessageBox(GetDesktopWindow(), t.c_str(), "Memory error", MB_OK | MB_ICONWARNING);
|
||||
ExitProcess(0);
|
||||
}
|
||||
@@ -317,7 +317,7 @@ string filenamefile(const string &t) {
|
||||
const int MIN_SIZE = 256;
|
||||
|
||||
qstreambuf::qstreambuf() {
|
||||
buf = d_new char[MIN_SIZE];
|
||||
buf = new char[MIN_SIZE];
|
||||
setg(buf, buf, buf);
|
||||
setp(buf, buf, buf + MIN_SIZE);
|
||||
}
|
||||
@@ -349,7 +349,7 @@ qstreambuf::int_type qstreambuf::overflow(qstreambuf::int_type c) {
|
||||
if (pptr() == epptr()) {
|
||||
int sz = size();
|
||||
int n_sz = sz * 2; if (n_sz < MIN_SIZE) n_sz = MIN_SIZE;
|
||||
char *n_buf = d_new char[n_sz];
|
||||
char *n_buf = new char[n_sz];
|
||||
memcpy(n_buf, gptr(), sz);
|
||||
delete buf; buf = n_buf;
|
||||
setg(buf, buf, buf + sz);
|
||||
|
||||
+2
-20
@@ -9,24 +9,6 @@
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
|
||||
#ifdef MEMDEBUG
|
||||
|
||||
void * _cdecl operator new( size_t size );
|
||||
void * _cdecl operator new[]( size_t size );
|
||||
void * _cdecl operator new( size_t size,const char *file,int line );
|
||||
void * _cdecl operator new[]( size_t size,const char *file,int line );
|
||||
void _cdecl operator delete( void *q );
|
||||
void _cdecl operator delete[]( void *q );
|
||||
void _cdecl operator delete( void *q,const char *file,int line );
|
||||
void _cdecl operator delete[]( void *q,const char *file,int line );
|
||||
#define d_new new( __FILE__,__LINE__ )
|
||||
|
||||
#else
|
||||
|
||||
#define d_new new
|
||||
|
||||
#endif
|
||||
|
||||
void trackmem( bool enable );
|
||||
void checkmem( std::ostream &out );
|
||||
|
||||
@@ -87,9 +69,9 @@ public:
|
||||
pool():free(0){}
|
||||
pointer allocate( size_type n,const void *){
|
||||
clog<<"Allocating "<<n<<endl;
|
||||
if( n>1 ) return d_new T[n];
|
||||
if( n>1 ) return new T[n];
|
||||
if( !free ){
|
||||
free=(T*)d_new char[sizeof(T)*N];
|
||||
free=(T*)new char[sizeof(T)*N];
|
||||
for( int k=0;k<N-1;++k ) *(T**)(free+k)=free+k+1;
|
||||
*(T**)(free+N-1)=0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user