/[cuyo]/cuyo/src/variable.cpp
ViewVC logotype

Diff of /cuyo/src/variable.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.13 by caeles, Wed May 11 23:11:17 2005 UTC revision 1.14 by caeles, Sun Nov 27 18:59:27 2005 UTC
# Line 21  Line 21 
21  #include "blop.h"  #include "blop.h"
22  #include "cuyointl.h"  #include "cuyointl.h"
23  #include "fehler.h"  #include "fehler.h"
24    #include "ort.h"
25    
26    
27  /** Erzeugt eine Müll-Variable. Wird verwendet, wenn es einen Fehler  /** Erzeugt eine Müll-Variable. Wird verwendet, wenn es einen Fehler
# Line 35  Variable::Variable(): Line 36  Variable::Variable():
36    
37  Variable::Variable(//__String datna, int znr,  Variable::Variable(//__String datna, int znr,
38                     VarDefinition * d,                     VarDefinition * d,
39                     int dx, int dy /*= 0*/):                     Ort * ort):
40    //mDateiName(datna), mZeilenNr(znr),    //mDateiName(datna), mZeilenNr(znr),
41    mDeklaration(d), mDX(dx), mDY(dy) {    mDeklaration(d), mOrt(ort) {
42        
43  }  }
44    
45    
46    
47  __String Variable::toString() const {  Variable::~Variable() {
48    __String ret;    if (mOrt) delete mOrt;
49    if (mDX == variable_global) {  };
     ret.sprintf("%s@", getName().data());  
   } else if (mDX == variable_lokal) {  
     ret.sprintf("%s", getName().data());  
   } else {  
     ret.sprintf("%s@(%d,%d)", getName().data(), mDX, mDY);  
   }  
   return ret;  
 /*  __String ret2;  
   ret2.sprintf("%s (%s:%d)", ret.data(), mDateiName.data(), mZeilenNr);  
   return ret2;*/  
 }  
   
50    
51    
52    
53    __String Variable::toString() const {
54      __String ret, ret1;
55    
56  /** Liefert die absoluten Koordinaten, so wie sie intern gebraucht    if (mOrt)
57      werden (also ggf. gespiegelt und Hex-bereinigt). (y wird von      ret1 = mOrt->toString();
58      getDX() zwar nicht gebraucht, aber so sieht's schöner aus.) */    else
59  int Variable::getX(int x, int /*y*/) const {      ret1.sprintf("%s","");
60    return x + mDX;    ret.sprintf(_("%s%s"), getName().data(), ret1.data());
61  }    return ret;
   
 int Variable::getY(int x, int y) const {  
   /* Hier findet das Spiegeln der relativen Variablenkoordinaten  
      für den Himmel-Level statt. (User will y nach unten eingeben;  
      intern ist im Himmel-Level aber y nach oben.) */  
   y += (ld->mSpiegeln ? -mDY : mDY);  
   
   /* Und jetzt ggf. die Anpassung an die Hex-Koordinaten.  
      Intern sind die relativen Koordinaten bei ungeradem dx so gespeichert,  
      dass dy = 0 leicht schräg nach oben bedeutet. D. h. Für die graden  
      Spalten stimmts, für die ungeraden muss noch verschoben werden.  
   */  
   if (ld->mSechseck) {  
     if ((x & 1) && (mDX & 1))  // Oder: x & mDX & 1...  
       y--;  
   }  
62    
63    return y;  /*  __String ret2;
64      ret2.sprintf("%s (%s:%d)", ret.data(), mDateiName.data(), mZeilenNr);
65      return ret2;*/
66  }  }
67    
68    
69    
 /** Liefert bei variable_fall 0 oder 1, je nachdem welcher Fall-Blop  
       gemeint ist. Das wurde dem Konstruktor über dy mitgeteilt. */  
 int Variable::getWelcherFall() const {  
   CASSERT(mDX==variable_fall);  
   CASSERT((mDY==0) || (mDY==1));  
   return mDY;  
 }  
70    
71    bool Variable::Ort_hier() const {
72      if (mOrt)
73        return mOrt->hier();
74      else
75        return true;
76    };
77    
78    
79  int Variable::getNummer() const {  int Variable::getNummer() const {
# Line 107  int Variable::getNummer() const { Line 83  int Variable::getNummer() const {
83  }  }
84    
85    
86  int Variable::getOrt() const {  ort_absolut Variable::getOrt(ort_absolut vonhieraus, Blop & fuer_code) const {
87    if (mDX == variable_global || mDX == variable_lokal || mDX == variable_fall)    if (mOrt)
88      return mDX;      return mOrt->berechne(vonhieraus, fuer_code);
89    else    else
90      return variable_relativ;      return vonhieraus;
91  }  }
92    
93    

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26