Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    re6cee92 r6ea87486  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Wed Jun 28 15:27:00 2017
    13 // Update Count     : 1019
     12// Last Modified On : Fri Jul 14 16:55:00 2017
     13// Update Count     : 1020
    1414//
    1515
     
    253253        newnode->type->aggregate.fields = fields;
    254254        newnode->type->aggregate.body = body;
     255        newnode->type->aggregate.tagged = false;
     256        newnode->type->aggregate.parent = nullptr;
    255257        return newnode;
    256258} // DeclarationNode::newAggregate
     
    273275        return newnode;
    274276} // DeclarationNode::newEnumConstant
     277
     278DeclarationNode * DeclarationNode::newTreeStruct( Aggregate kind, const string * name, const string * parent, ExpressionNode * actuals, DeclarationNode * fields, bool body ) {
     279        assert( name );
     280        DeclarationNode * newnode = new DeclarationNode;
     281        newnode->type = new TypeData( TypeData::Aggregate );
     282        newnode->type->aggregate.kind = kind;
     283        newnode->type->aggregate.name = name;
     284        newnode->type->aggregate.actuals = actuals;
     285        newnode->type->aggregate.fields = fields;
     286        newnode->type->aggregate.body = body;
     287        newnode->type->aggregate.tagged = true;
     288        newnode->type->aggregate.parent = parent;
     289        return newnode;
     290} // DeclarationNode::newTreeStruct
    275291
    276292DeclarationNode * DeclarationNode::newName( string * name ) {
     
    329345} // DeclarationNode::newTypeDecl
    330346
    331 DeclarationNode * DeclarationNode::newPointer( DeclarationNode * qualifiers, OperKinds kind ) {
    332         DeclarationNode * newnode = new DeclarationNode;
    333         newnode->type = new TypeData( kind == OperKinds::PointTo ? TypeData::Pointer : TypeData::Reference );
     347DeclarationNode * DeclarationNode::newPointer( DeclarationNode * qualifiers ) {
     348        DeclarationNode * newnode = new DeclarationNode;
     349        newnode->type = new TypeData( TypeData::Pointer );
    334350        if ( qualifiers ) {
    335351                return newnode->addQualifiers( qualifiers );
     
    748764DeclarationNode * DeclarationNode::addPointer( DeclarationNode * p ) {
    749765        if ( p ) {
    750                 assert( p->type->kind == TypeData::Pointer || TypeData::Reference );
     766                assert( p->type->kind == TypeData::Pointer );
    751767                setBase( p->type );
    752768                p->type = nullptr;
     
    770786DeclarationNode * DeclarationNode::addNewPointer( DeclarationNode * p ) {
    771787        if ( p ) {
    772                 assert( p->type->kind == TypeData::Pointer || p->type->kind == TypeData::Reference );
     788                assert( p->type->kind == TypeData::Pointer );
    773789                if ( type ) {
    774790                        switch ( type->kind ) {
Note: See TracChangeset for help on using the changeset viewer.