Skip to content

Commit

Permalink
fix Array
Browse files Browse the repository at this point in the history
  • Loading branch information
WalterBright committed Jul 18, 2011
1 parent 3e4fd90 commit 8858214
Show file tree
Hide file tree
Showing 10 changed files with 89 additions and 91 deletions.
56 changes: 28 additions & 28 deletions src/arraytypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,60 +18,60 @@

#include "root.h"

typedef Array<struct TemplateParameter> TemplateParameters;
typedef ArrayBase<struct TemplateParameter> TemplateParameters;

typedef Array<struct Expression> Expressions;
typedef ArrayBase<struct Expression> Expressions;

typedef Array<struct Statement> Statements;
typedef ArrayBase<struct Statement> Statements;

typedef Array<struct BaseClass> BaseClasses;
typedef ArrayBase<struct BaseClass> BaseClasses;

typedef Array<struct ClassDeclaration> ClassDeclarations;
typedef ArrayBase<struct ClassDeclaration> ClassDeclarations;

typedef Array<struct Dsymbol> Dsymbols;
typedef ArrayBase<struct Dsymbol> Dsymbols;

typedef Array<struct Object> Objects;
typedef ArrayBase<struct Object> Objects;

typedef Array<struct FuncDeclaration> FuncDeclarations;
typedef ArrayBase<struct FuncDeclaration> FuncDeclarations;

typedef Array<struct Parameter> Parameters;
typedef ArrayBase<struct Parameter> Parameters;

typedef Array<struct Identifier> Identifiers;
typedef ArrayBase<struct Identifier> Identifiers;

typedef Array<struct Initializer> Initializers;
typedef ArrayBase<struct Initializer> Initializers;

typedef Array<struct VarDeclaration> VarDeclarations;
typedef ArrayBase<struct VarDeclaration> VarDeclarations;

typedef Array<struct Type> Types;
typedef ArrayBase<struct Type> Types;

typedef Array<struct ScopeDsymbol> ScopeDsymbols;
typedef ArrayBase<struct ScopeDsymbol> ScopeDsymbols;

typedef Array<struct Catch> Catches;
typedef ArrayBase<struct Catch> Catches;

typedef Array<struct StaticDtorDeclaration> StaticDtorDeclarations;
typedef ArrayBase<struct StaticDtorDeclaration> StaticDtorDeclarations;

typedef Array<struct SharedStaticDtorDeclaration> SharedStaticDtorDeclarations;
typedef ArrayBase<struct SharedStaticDtorDeclaration> SharedStaticDtorDeclarations;

typedef Array<struct AliasDeclaration> AliasDeclarations;
typedef ArrayBase<struct AliasDeclaration> AliasDeclarations;

typedef Array<struct Module> Modules;
typedef ArrayBase<struct Module> Modules;

typedef Array<struct File> Files;
typedef ArrayBase<struct File> Files;

typedef Array<struct CaseStatement> CaseStatements;
typedef ArrayBase<struct CaseStatement> CaseStatements;

typedef Array<struct CompoundStatement> CompoundStatements;
typedef ArrayBase<struct CompoundStatement> CompoundStatements;

typedef Array<struct GotoCaseStatement> GotoCaseStatements;
typedef ArrayBase<struct GotoCaseStatement> GotoCaseStatements;

typedef Array<struct TemplateInstance> TemplateInstances;
typedef ArrayBase<struct TemplateInstance> TemplateInstances;

typedef Array<char> Strings;
//typedef ArrayBase<char> Strings;

typedef Array<void> Voids;
typedef ArrayBase<void> Voids;

typedef Array<struct block> Blocks;
typedef ArrayBase<struct block> Blocks;

typedef Array<struct Symbol> Symbols;
typedef ArrayBase<struct Symbol> Symbols;

#endif
2 changes: 1 addition & 1 deletion src/doc.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ struct MacroSection : Section
void write(DocComment *dc, Scope *sc, Dsymbol *s, OutBuffer *buf);
};

typedef Array<Section> Sections;
typedef ArrayBase<Section> Sections;

struct DocComment
{
Expand Down
2 changes: 1 addition & 1 deletion src/e2ir.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
static char __file__[] = __FILE__; /* for tassert.h */
#include "tassert.h"

typedef Array<elem> Elems;
typedef ArrayBase<elem> Elems;

elem *addressElem(elem *e, Type *t);
elem *array_toPtr(Type *t, elem *e);
Expand Down
4 changes: 2 additions & 2 deletions src/lib.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ struct ObjSymbol

#include "arraytypes.h"

typedef Array<ObjModule> ObjModules;
typedef Array<ObjSymbol> ObjSymbols;
typedef ArrayBase<ObjModule> ObjModules;
typedef ArrayBase<ObjSymbol> ObjSymbols;

struct Library
{
Expand Down
6 changes: 3 additions & 3 deletions src/mars.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@ void unittests();
struct OutBuffer;

// Can't include arraytypes.h here, need to declare these directly.
template <typename TYPE> struct Array;
typedef Array<struct Identifier> Identifiers;
typedef Array<char> Strings;
template <typename TYPE> struct ArrayBase;
typedef ArrayBase<struct Identifier> Identifiers;
typedef ArrayBase<char> Strings;

// Put command line switches in here
struct Param
Expand Down
40 changes: 20 additions & 20 deletions src/root/array.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,30 +46,30 @@

/********************************* Array ****************************/

ArrayBase::ArrayBase()
Array::Array()
{
data = SMALLARRAYCAP ? &smallarray[0] : NULL;
dim = 0;
allocdim = SMALLARRAYCAP;
}

ArrayBase::~ArrayBase()
Array::~Array()
{
if (data != &smallarray[0])
mem.free(data);
}

void ArrayBase::mark()
void Array::mark()
{ unsigned u;

mem.mark(data);
for (u = 0; u < dim; u++)
mem.mark(data[u]); // BUG: what if arrays of Object's?
}

void ArrayBase::reserve(unsigned nentries)
void Array::reserve(unsigned nentries)
{
//printf("ArrayBase::reserve: dim = %d, allocdim = %d, nentries = %d\n", dim, allocdim, nentries);
//printf("Array::reserve: dim = %d, allocdim = %d, nentries = %d\n", dim, allocdim, nentries);
if (allocdim - dim < nentries)
{
if (allocdim == 0)
Expand All @@ -96,7 +96,7 @@ void ArrayBase::reserve(unsigned nentries)
}
}

void ArrayBase::setDim(unsigned newdim)
void Array::setDim(unsigned newdim)
{
if (dim < newdim)
{
Expand All @@ -105,7 +105,7 @@ void ArrayBase::setDim(unsigned newdim)
dim = newdim;
}

void ArrayBase::fixDim()
void Array::fixDim()
{
if (dim != allocdim)
{
Expand All @@ -123,26 +123,26 @@ void ArrayBase::fixDim()
}
}

void ArrayBase::push(void *ptr)
void Array::push(void *ptr)
{
reserve(1);
data[dim++] = ptr;
}

void *ArrayBase::pop()
void *Array::pop()
{
return data[--dim];
}

void ArrayBase::shift(void *ptr)
void Array::shift(void *ptr)
{
reserve(1);
memmove(data + 1, data, dim * sizeof(*data));
data[0] = ptr;
dim++;
}

void ArrayBase::insert(unsigned index, void *ptr)
void Array::insert(unsigned index, void *ptr)
{
reserve(1);
memmove(data + index + 1, data + index, (dim - index) * sizeof(*data));
Expand All @@ -151,7 +151,7 @@ void ArrayBase::insert(unsigned index, void *ptr)
}


void ArrayBase::insert(unsigned index, ArrayBase *a)
void Array::insert(unsigned index, Array *a)
{
if (a)
{ unsigned d;
Expand All @@ -170,19 +170,19 @@ void ArrayBase::insert(unsigned index, ArrayBase *a)
* Append array a to this array.
*/

void ArrayBase::append(ArrayBase *a)
void Array::append(Array *a)
{
insert(dim, a);
}

void ArrayBase::remove(unsigned i)
void Array::remove(unsigned i)
{
if (dim - i - 1)
memmove(data + i, data + i + 1, (dim - i - 1) * sizeof(data[0]));
dim--;
}

char *ArrayBase::toChars()
char *Array::toChars()
{
unsigned len;
unsigned u;
Expand Down Expand Up @@ -214,12 +214,12 @@ char *ArrayBase::toChars()
return str;
}

void ArrayBase::zero()
void Array::zero()
{
memset(data,0,dim * sizeof(data[0]));
}

void *ArrayBase::tos()
void *Array::tos()
{
return dim ? data[dim - 1] : NULL;
}
Expand All @@ -236,17 +236,17 @@ int
return ox->compare(oy);
}

void ArrayBase::sort()
void Array::sort()
{
if (dim)
{
qsort(data, dim, sizeof(Object *), Array_sort_compare);
}
}

ArrayBase *ArrayBase::copy()
Array *Array::copy()
{
ArrayBase *a = new ArrayBase();
Array *a = new Array();

a->setDim(dim);
memcpy(a->data, data, dim * sizeof(void *));
Expand Down
4 changes: 1 addition & 3 deletions src/root/root.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

// Copyright (c) 1999-2010 by Digital Mars
// Copyright (c) 1999-2011 by Digital Mars
// All Rights Reserved
// written by Walter Bright
// http://www.digitalmars.com
Expand Down Expand Up @@ -46,8 +46,6 @@
#include "dchar.h"
#include "rmem.h"

#include "../arraytypes.h"

#if 0 //__SC__ //def DEBUG
extern "C" void __cdecl _assert(void *e, void *f, unsigned line)
{
Expand Down
Loading

0 comments on commit 8858214

Please sign in to comment.