Sprung zum Seitenende Struktur Themen A...Z Titel << >>

CXI-Basis-Programmierreferenz / Version 2 / Datenspeicherung / CxiVariable (Operatorschreibweise) /

class CxiVariable

[C++] class CxiVariable
[S1:BASIS] Die Klasse CxiVariable wird selten direkt verwendet. Sie dient in erster Linie als Zwischenstufe für die Operatorschreibweise zum Zugriff auf Variablen in CxiNode- und CxiTree-Objekten.

Der operator [] von CxiNode liefert ein solches CxiVariable-Objekt. Mit diesem sind nun zwei Arten von Operationen möglich:

Wird CxiVariable als RValue (lesend) verwendet, erfolgt automatisch eine Konvertierung in long int, CxiString oder CxiCargoFunc.

Wird CxiVariable als LValue (schreibend) verwendet, wird die Variable im CxiNode durch den zugewiesenen Wert ersetzt.
[Baustelle] Die folgende Übersicht zeigt die verfügbaren Operatoren, dabei sind
b1, b2, ... CxiNode- oder CxiTree-Datenbehälter,
v1, v2, ... Variablennamen,
s1, s2, ... beliebige Ausdrücke, die Zeichenketten liefern,
n1, n2, ... beliebige Ausdrücke, die numerische Werte liefern,
f1, f2, ... beliebige Ausdrücke, die CxiCargoFunc-Zeiger liefern.

Rechts ist jeweils die gleichwertige Funktionsschreibweise angegeben.

Numerische Typen:

b1 [v1] = n1                  b1.SetNum (v1, n1)

b2 [v2] = b1 [v1]             b2.CopyVarFrom (v2, b1, v1)

! b1 [v1]                     (b1.GetAsNum (v1) == 0)

n1 = b1 [v1]                  n1 = b1.GetAsNum (v1)
n1 = + b1 [v1]                n1 = + b1.GetAsNum (v1)
n1 = - b1 [v1]                n1 = - b1.GetAsNum (v1)

n1 = b2 [v2] + b1 [v1]        n1 = b2.GetAsNum (v2) + b1.GetAsNum (v1)
n1 = b2 [v2] - b1 [v1]        n1 = b2.GetAsNum (v2) - b1.GetAsNum (v1)
n1 = b2 [v2] * b1 [v1]        n1 = b2.GetAsNum (v2) * b1.GetAsNum (v1)
n1 = b2 [v2] / b1 [v1]        n1 = b2.GetAsNum (v2) / b1.GetAsNum (v1)

n1 += b2 [v2]                 n1 += b2.GetAsNum (v2)
b1 [v1] += b2 [v2]            b1.SetNum (v1, b1.GetAsNum (v1) + b2.GetAsNum (v2))
b1 [v1] += 2                  b1.SetNum (v1, b1.GetAsNum (v1) + 2)
b1 [v1] ++                    b1.SetNum (v1, b1.GetAsNum (v1) + 1)
                       u.s.w. für -=, *=, /=, --

Kombinationen sind möglich, z.B.
b5[v5] += b2[v2] * 3 + b1[v1] / 40
          - (b4[v4] = ++b2[v2] * (10 - b1[v1]) - b3[v3])


Zeichenketten-Typen:

b1 [v1] = s1                  b1.SetStr (v1, s1)

b2 [v2] = b1 [v1]             b2.CopyVarFrom (v2, b1, v1)

s1 = b1 [v1]                  s1 = b1.GetAsStr (v1)
s1 = b1 [v1] [n1]             s1 = b1.GetAsStr (v1, n1)
                              (n1 ist der Index in einer Stringliste)

s1 = b2 [v2] [n2] & b1 [v1]   s1 = b2.GetAsStr (v2, n2) & b1.GetAsStr (v1)
s1 &= b2 [v2] [n2] & "\n"     s1 &= b2.GetAsStr (v2, n2) & "\n"
                              (Stringverkettung)


Funktionszeiger-Typ:

b1 [v1] = f1                  b1.SetFun (v1, f1)

b2 [v2] = b1 [v1]             b2.CopyVarFrom (v2, b1, v1)

f1 = b1 [v1]                  f1 = b1.GetFun (v1)

n2 = b1 [v1] ()               n2 = b1.CallFun (v1, 0)
n2 = b1 [v1] (n1)             n2 = b1.CallFun (v1, n1)
                              (Aufruf der Funktion)

Deklaration:

class CxiVariable
{
public:
  CxiVariable (CxiNode& pobj, CxiName pvar);
  CxiVariable (CxiNode& pobj, CxiShort pvar);
  CxiVariable (const CxiVariable& v);
  CxiVariable& operator = (const CxiVariable& v);

  CxiVariable& operator = (long int i);
  operator long int () const;
  int operator ! () const;
  long int operator + () const;
  long int operator - () const;
  long int operator + (long int i) const;
  long int operator - (long int i) const;
  long int operator * (long int i) const;
  long int operator / (long int i) const;
  friend long int operator + (long int i, const CxiVariable& v);
  friend long int operator - (long int i, const CxiVariable& v);
  friend long int operator * (long int i, const CxiVariable& v);
  CxiVariable& operator += (long int i);
  CxiVariable& operator -= (long int i);
  CxiVariable& operator *= (long int i);
  CxiVariable& operator /= (long int i);
  CxiVariable& operator ++ ();
  CxiVariable& operator -- ();
  void operator ++ (int);
  void operator -- (int);

  CxiVariable& operator = (const CxiString& s);
  CxiVariable& operator = (const char *s);
  operator CxiString () const;
  CxiString operator [] (int index) const;
  CxiString operator & (CxiString s) const;
  CxiString operator & (const char *s) const;
  friend CxiString operator & (CxiString s, const CxiVariable& v);
  friend CxiString operator & (const char *s, const CxiVariable& v);
  CxiVariable& operator &= (CxiString s);
  CxiVariable& operator &= (const char *s);

  CxiVariable& operator = (CxiCargoFunc f);
  long int operator () (CxiLong cargo);
  long int operator () ();
};


[i] CXI-Basis-Programmierreferenz
Version 2.10 72 (1014-001), erstellt am 15. April 2000
Textseite 285 von 855, Thema 8462 (CxiVariable)
[c] Copyright (c) 1996-2000 by TeraConnect GmbH

Sprung zum Seitenanfang Struktur Themen A...Z Titel << >>