Changeset 3902 for to-imperative


Ignore:
Timestamp:
Sep 10, 2008, 9:27:11 PM (12 years ago)
Author:
orlov
Message:
  • Some bug-fixes.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/opents/samples/trefal.hh

    r3901 r3902  
    1313class GExpr;
    1414class Term;
     15class GlobalExprs;
    1516
    1617class TExpr : public ts::TVar<Expr>
     
    8586
    8687    GExpr & operator+ (const Term& t) {
    87         int old_size = size;
     88        size_t old_size = size;
    8889        Term* old_terms = terms;
    8990
     
    9192        terms = new Term[size];
    9293
    93         for (int i = 0; i < old_size; i++)
     94        for (unsigned i = 0; i < old_size; i++)
    9495            *(terms++) = *(old_terms++);
    9596        *terms = t;
    9697
    9798        delete old_terms;
    98         return this;
     99        return *this;
    99100    }
    100101
    101102    GExpr & operator+ (const GExpr& x) {
    102         int old_size = size;
     103        size_t old_size = size;
    103104        Term* old_terms = terms;
    104105
     
    106107        terms = new Term[size];
    107108
    108         for (int i = 0; i < old_size; i++)
     109        for (unsigned i = 0; i < old_size; i++)
    109110            *(terms++) = *(old_terms++);
    110111        Term* new_terms = x.terms;
    111         for (int i = 0; i < x.size; i++)
     112        for (unsigned i = 0; i < x.size; i++)
    112113            *(terms++) = *(new_terms++);
    113114
    114115        delete old_terms;
    115         return this;
    116     }
    117 
    118     GExpr & operator() () {
    119         Term t;
    120         t.init_const(global_exprs.add_global_expr(this));
    121         return new GExpr(t);
    122     }
     116        return *this;
     117    }
     118
     119    GExpr operator() () const;
    123120
    124121    void clear() {
     
    126123    }
    127124};
    128 
    129 extern GlobalExprs global_exprs;
    130125
    131126class GlobalExprs {
     
    134129
    135130    public:
    136         GExpr exprs[];
     131        GExpr* exprs;
    137132
    138133        GlobalExprs () : size (8), free_idx(0), exprs(new GExpr[8]) {}
     
    142137        }
    143138
    144         int add_global_expr (const GExpr & expr) {
     139        int add_global_expr (const GExpr& expr) {
    145140            if (free_idx == size) {
    146141                GExpr* old_exprs = exprs;
     
    154149        }
    155150};
     151
     152extern GlobalExprs global_exprs;
     153
     154GExpr GExpr::operator() () const
     155{
     156    Term t;
     157    t.init_const(global_exprs.add_global_expr(*this));
     158    return GExpr(t);
     159}
    156160
    157161class Expr : private ts::TExtData
Note: See TracChangeset for help on using the changeset viewer.