<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://gsys.info/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://gsys.info/feed.php">
        <title>Genesys notes:func</title>
        <description></description>
        <link>http://gsys.info/</link>
        <image rdf:resource="http://gsys.info/lib/tpl/genesys/images/favicon.ico" />
       <dc:date>2026-05-01T22:43:45+02:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:adapter&amp;rev=1469195490&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:assert&amp;rev=1582721458&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:autofunc&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:caller&amp;rev=1657817891&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:comfort&amp;rev=1631869977&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:connotation&amp;rev=1657817311&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:debug&amp;rev=1652948485&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:declaration&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:enhance&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:factory&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:fail&amp;rev=1648636061&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:fix&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:forward&amp;rev=1563529628&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:guard&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:infix&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:inline&amp;rev=1609167067&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:interfacefac&amp;rev=1717399407&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:lazy&amp;rev=1550581630&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:move&amp;rev=1471520562&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:precall&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:start&amp;rev=1616793989&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:template&amp;rev=1553867646&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:unimplemented&amp;rev=1432920408&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:use&amp;rev=1560938025&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:virtualthistype&amp;rev=1674139432&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:workflow&amp;rev=1615195575&amp;do=diff"/>
                <rdf:li rdf:resource="http://gsys.info/doku.php?id=notes:func:xmlconstruct&amp;rev=1432920408&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://gsys.info/lib/tpl/genesys/images/favicon.ico">
        <title>Genesys</title>
        <link>http://gsys.info/</link>
        <url>http://gsys.info/lib/tpl/genesys/images/favicon.ico</url>
    </image>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:adapter&amp;rev=1469195490&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-07-22T15:51:30+02:00</dc:date>
        <title>notes:func:adapter</title>
        <link>http://gsys.info/doku.php?id=notes:func:adapter&amp;rev=1469195490&amp;do=diff</link>
        <description>Adapter

Ein Adapter ist ein Codestück, was vergleichbar mit einem Workflow ist, da er über zwei Wege bedient wird. Gewissermaßen ein Cast in zwei Richtungen

Folgendes Problem:


    bool IndexPolygon::completeHullPolygons( const Array&lt;IndexPolygon&gt;&amp; faces,
                                             Array&lt;IndexHalfEdge&gt;&amp; halfEdges,
                                             Array&lt;std::pair&lt;std::size_t, std::size_t&gt;&gt;* nonUniques,
                                             Array&lt;std::size_t…</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:assert&amp;rev=1582721458&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-02-26T13:50:58+02:00</dc:date>
        <title>notes:func:assert</title>
        <link>http://gsys.info/doku.php?id=notes:func:assert&amp;rev=1582721458&amp;do=diff</link>
        <description>assert / Contracts

Entsprechend wie bei Java überlegen, dass assert einem if entspricht, was ggfs. ein „fail“ auslöst.

&lt;https://dbs.cs.uni-duesseldorf.de/lehre/docs/java/javabuch/html/k100044.html&gt;



func( par is int ptr )
{
  assert par != nullptr || [fail] ArgumentIsNull;   // fail kann weggelassen werden
  // assert par != nullptr || throw ArgumentIsNullException;
  
  ...
  
  return;
}</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:autofunc&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:func:autofunc</title>
        <link>http://gsys.info/doku.php?id=notes:func:autofunc&amp;rev=1432920408&amp;do=diff</link>
        <description>Auto-Func

Das entspricht gewissermaßen schon einem Template und könnte auch den Weg darstellen, der zukünftig mit Templates gegangen werden könnte.

Ziel dieser Seite ist allerdings lokal Anweisungen abzukürzen. Folgendes Problem:


    HBITMAP bmNew            = reinterpret_cast&lt; HBITMAP &gt;( Dicad::Exports::imgGetBitmap( false /* small icons */, DkImg::Icon::New ));
    HBITMAP bmOpen           = reinterpret_cast&lt; HBITMAP &gt;( Dicad::Exports::imgGetBitmap( false /* small icons */, DkImg::Icon::Op…</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:caller&amp;rev=1657817891&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-14T18:58:11+02:00</dc:date>
        <title>notes:func:caller</title>
        <link>http://gsys.info/doku.php?id=notes:func:caller&amp;rev=1657817891&amp;do=diff</link>
        <description>caller

caller ist vergleichbar mit this, beschreibt aber nicht das Objekt, dessen Methode gerufen wurde, sondern das Objekt, das diese Funktion rief.
Caller kann also eine statische Funktion, aber auch eine Methode sein und wird - wie this - automatisch übergeben.
Caller kann gewisse Eigenschaften besitzen, abgeleitete Objekte eignen sich also ebenso als Caller. Caller kann optional sein.</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:comfort&amp;rev=1631869977&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-17T11:12:57+02:00</dc:date>
        <title>notes:func:comfort</title>
        <link>http://gsys.info/doku.php?id=notes:func:comfort&amp;rev=1631869977&amp;do=diff</link>
        <description>comforts

comforts kennzeichnet Methoden, die eigentlich Redundant wären, aber Zugriffe vereinfachen. 


Vector class
{
  point() comforts Point( this );
}


Hier könnte man auch Point(this) aufrufen. comforts erklärt, dass diese Methode keine Funktion darstellt, also nicht den Konstruktor redundant ersetzt, sondern nur den Konstruktor rufen darf, bzw. eine Kette von .-Operatoren enthält, die die Funktion beschreibt, die die eigentliche Arbeit macht, so dass hier eben keine redundante Variante e…</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:connotation&amp;rev=1657817311&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-14T18:48:31+02:00</dc:date>
        <title>notes:func:connotation</title>
        <link>http://gsys.info/doku.php?id=notes:func:connotation&amp;rev=1657817311&amp;do=diff</link>
        <description>connotation

Eine connotation ist eine Funktion, die sich vor oder nach die gerufene Funktion setzt.

Das Problem:


    void RenderComposite::updateBbox( const DkGeo::Bbox3d&amp; bbox )
    {
        _bbox += bbox;

        if ( _parent )
            _parent-&gt;updateBbox( bbox );
    }</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:debug&amp;rev=1652948485&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-19T10:21:25+02:00</dc:date>
        <title>notes:func:debug</title>
        <link>http://gsys.info/doku.php?id=notes:func:debug&amp;rev=1652948485&amp;do=diff</link>
        <description>Debug-Parameter

sind ganz normale Funktionsparameter, die aber nur in einer Debug-Version übergeben werden.


fib is code( a is int, debug(level is int) )
{
  if( a &lt;= 1 ) return 1;
  
  debug print &quot;Level: &quot; + level;
  
  return fib( a-1, a-2, debug(level + 1) );
}</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:declaration&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:func:declaration</title>
        <link>http://gsys.info/doku.php?id=notes:func:declaration&amp;rev=1432920408&amp;do=diff</link>
        <description>Aufbau von Deklarationen

bisher:


int i;
float f;
code( int; int s1, int s2 ) add : s1+s2;


Die Überlegung war, den Namen für die Lesbarkeit nach vorne zu ziehen. Mit is könnte eine öffentliche Ableitung beschrieben sein.


i as int;
f as float;
add( int s1, s2 ) as int;
twoResults( int id ) as ( left, right as int );</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:enhance&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:func:enhance</title>
        <link>http://gsys.info/doku.php?id=notes:func:enhance&amp;rev=1432920408&amp;do=diff</link>
        <description>enhance

Enhance erweitert die Funktionalität von Objekten, kann aber keine zusätzlichen Member einführen.


Person contains
{
  Vorname, Nachname as String;
  
  construct( Vorname, Nachname );
};
// Klasse fertig.
&lt;/code cpp&gt;

enhance kann nun Person erweitern:

&lt;code cpp&gt;
enhance Person
{
  operator $ -&gt; string : Vorname + &quot; &quot; + Nachname;
  SayHello is code := print &quot;Hello, &quot;, Vorname;
};</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:factory&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:func:factory</title>
        <link>http://gsys.info/doku.php?id=notes:func:factory&amp;rev=1432920408&amp;do=diff</link>
        <description>factory

Eine Factory ist ein Stück code, ähnlich einer Funktion oder Methode, die etwas produziert. Bei einer Klasse kann eine Factory ein Construktor für Subklassen sein.


t is Tier ptr : new Tier( &quot;Katze&quot; ); // wenn es eine factory Tier( tiertype is string ) gibt</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:fail&amp;rev=1648636061&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-30T12:27:41+02:00</dc:date>
        <title>notes:func:fail</title>
        <link>http://gsys.info/doku.php?id=notes:func:fail&amp;rev=1648636061&amp;do=diff</link>
        <description>fail

fail erklärt einen Funktionscall als fehlgeschlagen.


doSomething( a is int ) :=
{
  if( a == 0 ) fail InvalidNumber;
}


Im Falle einer zwangsläufigen Rückgabevariablen (out) wäre diese aber noch nicht belegt.


&lt;code cpp&gt;
doSomething( a is int, b is int out ) :=
{
  body
  {
  if( a == 0 ) fail InvalidNumber;
  
  /* Algorithm */
  
    succeed; //optional 
  }
  
  on fail( value )
  {
    b = 0;
    log &quot;failed with &quot;+value\.fullName(); // value ist ein Objekt vom Typ global.doSomethi…</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:fix&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:func:fix</title>
        <link>http://gsys.info/doku.php?id=notes:func:fix&amp;rev=1432920408&amp;do=diff</link>
        <description>fix

ist ein Befehl, der eine Überarbeitung signalisiert. Im Prinzip ist es ein #ifdef, aber beide Varianten werden geprüft, so dass in beiden Fällen gültiger Code entstehen muss.

Er hat drei Parameter: den Namen des Fixes, ein Userpseudonym (oder null) und einen Text als Erklärung</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:forward&amp;rev=1563529628&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-07-19T11:47:08+02:00</dc:date>
        <title>notes:func:forward</title>
        <link>http://gsys.info/doku.php?id=notes:func:forward&amp;rev=1563529628&amp;do=diff</link>
        <description>Forward bei Funktionsparametern

Ein Forward bei Funktionsparametern dient dazu, Daten per Copy by Value gar nicht erst auf den Stack zu kopieren, um es dann weiter zu kopieren, sondern es direkt an die passende Position setzen zu lassen. Bei Funktionen, die zu einer</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:guard&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:func:guard</title>
        <link>http://gsys.info/doku.php?id=notes:func:guard&amp;rev=1432920408&amp;do=diff</link>
        <description>guard

Mit Ifc::Error schrieb ich eine Fehlerklasse, die einfache Fehlerbeschreibungen mit einer Ortsangabe übernehmen kann, sowie Listen von Fehlern verwalten kann.
Das Makro IFCGUARD sichert ab, dass eine Funktion erfolgreich gelaufen ist und falls nicht, wird der Fehler an die jeweils höherliegende Funktion weitergeleitet.</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:infix&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:func:infix</title>
        <link>http://gsys.info/doku.php?id=notes:func:infix&amp;rev=1432920408&amp;do=diff</link>
        <description>Infix

Abgeleitet von C++: &lt;http://pfultz2.com/blog/2015/02/01/adding-in-operator/&gt;

In C++:


auto plus = infix([](int x, int y)
{
    return x + y;
});

auto three = 1 &lt;plus&gt; 2;


Als Vereinfachung zu operator( int x, „plus“, int y ).

In Genesys bitte ohne spitze klammern:


plus is infix( int x, int y ) : x+y;

tree = 1 plus 2;</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:inline&amp;rev=1609167067&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-28T15:51:07+02:00</dc:date>
        <title>notes:func:inline</title>
        <link>http://gsys.info/doku.php?id=notes:func:inline&amp;rev=1609167067&amp;do=diff</link>
        <description>inline


# log.g
log is inline( msg is string ) :=
{
  logimpl( system.file, system.line, system.date, system.time, system.funcname, msg );
}

logimpl is code( SourcePath, SourceLine, Date, Time, SourceFuncName, msg is string )
{
  print(&quot;[&quot;, Date$, &quot;-&quot;, Time$, &quot;] in File &quot;, SourcePath$, &quot; in &quot;, $SourceFuncName, &quot; at line &quot;, SourceLine$, &quot;: &quot;, msg;
}

# main.g
main is code :=
{
  log( &quot;Programmstart&quot; );
}</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:interfacefac&amp;rev=1717399407&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-06-03T09:23:27+02:00</dc:date>
        <title>notes:func:interfacefac</title>
        <link>http://gsys.info/doku.php?id=notes:func:interfacefac&amp;rev=1717399407&amp;do=diff</link>
        <description>Interface als Factory

Interfaces beschreiben Fähigkeiten, die ein Datentypen besitzen muss.

Nimmt man einen Container, so kann man Ansprüche oder Prioritäten an den Container stellen, die er erfüllen muss. Beispielsweise Indexable, Iterable, PriorityRead, Insertable, NonRelocatable.
Datentypen können Addierbar (Pointer), Selbst-Multiplizierbar (ergibt bei Pointern keinen Sinn), Integer-Multiplizierbar sein. Sie könnten Integer und/oder Nativ sein.
Der Compiler kann dann anhand der Liste gewüns…</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:lazy&amp;rev=1550581630&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-02-19T14:07:10+02:00</dc:date>
        <title>notes:func:lazy</title>
        <link>http://gsys.info/doku.php?id=notes:func:lazy&amp;rev=1550581630&amp;do=diff</link>
        <description>Lazy-Parameter

Folgende Funktion


void func( bool write, int what )
{
  if( write )
    printf( &quot;%d\n&quot;, what );
}


wird gerufen mit

func( false, doComplexMath(a,b) );

Hier wird eine extrem aufwendige Funktion gerufen, die möglicherweise gar nicht benötigt wird.
Zum einen könnte man hier prüfen, dass</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:move&amp;rev=1471520562&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-08-18T13:42:42+02:00</dc:date>
        <title>notes:func:move</title>
        <link>http://gsys.info/doku.php?id=notes:func:move&amp;rev=1471520562&amp;do=diff</link>
        <description>Move-Konstruction

Nehmen wir ein Array, dass einen Wert zuweisen soll.

array += Data( 4711 );

Die Data-Klasse wird eventuell sehr aufwendig erzeugt. Hier ist std::move aus c++ schon sehr schön, aber vielleicht beinhaltet die Klasse noch viele weitere Zeiger etc, die alle einzeln kopiert werden müssen und das eventuell auch über eine ganze Reihe von Elementen.</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:precall&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:func:precall</title>
        <link>http://gsys.info/doku.php?id=notes:func:precall&amp;rev=1432920408&amp;do=diff</link>
        <description>(inline) pre-call

Vor einem Funktionsaufruf func gibt es ja func::pre.

Ich möchte, dass es möglich ist, eine weitere func::pre zusätzlich zu definieren, die entscheidet, ob ein Funktionsaufruf überhaupt stattfinden soll, also eine pre condition, die inline gesetzt wird.</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:start&amp;rev=1616793989&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-26T22:26:29+02:00</dc:date>
        <title>notes:func:start</title>
        <link>http://gsys.info/doku.php?id=notes:func:start&amp;rev=1616793989&amp;do=diff</link>
        <description>Funktionsdeklaration

Aktuell:

add is code( a,b as int ) := return a+b;

Ziel:

add( a, b as int ) = a+b;
f(x) = 2x+1;


Annahme: eine Funktion benötigt keine Klammern, sondern Argumente können per Komma oder Leerzeichen getrennt sein:

print &quot;Hallo Welt&quot;;
v = vector 1 2 3;  // ruft vector::construct( a... )</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:template&amp;rev=1553867646&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-03-29T14:54:06+02:00</dc:date>
        <title>notes:func:template</title>
        <link>http://gsys.info/doku.php?id=notes:func:template&amp;rev=1553867646&amp;do=diff</link>
        <description>template-Funktionen

Grundsätzlich: Eine Funktiondeklaration mit unbekannten Identifiern ist eine Template-Funktion, sofern keine Values übergeben werden.


i = 4711 as int;

f(x) = 2*x;    // template
f(x,y) = x+y;  // template;
f(x,i) = x+i;  // template von code(int, x)
f(x,1) = x+1;  // fehler: x ist nicht bekannt, 1 ruft eine Funktion
f(x+y) = x+y;  // Fehler: x, y nicht bekannt, um x+y auszurechnen
f(i) = 2*i;    // Ambivalent: Funktionsaufruf, falls f(int) existiert da i bekannt ist. Entw…</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:unimplemented&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:func:unimplemented</title>
        <link>http://gsys.info/doku.php?id=notes:func:unimplemented&amp;rev=1432920408&amp;do=diff</link>
        <description>unimplemented

...ist ähnlich Null ein besonderer Marker und als Rückgabewert gedacht, wenn Funktionen noch nicht implementiert sind, um sich von false bzw. null zu unterscheiden, bzw. im Quelltext suchbar zu sein.


getValue is code( a, b, c is int ) as bool
{
  if( a == 0 )
    return false;            // false meint false
    
  if( b == 1 ) 
    return true;
  
  return unimplemented;      // liefert false, aber hier muss noch was gemacht werden.
}</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:use&amp;rev=1560938025&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-06-19T11:53:45+02:00</dc:date>
        <title>notes:func:use</title>
        <link>http://gsys.info/doku.php?id=notes:func:use&amp;rev=1560938025&amp;do=diff</link>
        <description>use innerhalb einer Funtion

use vor einem Scope kopiert Variablen in den Scope und blendet andere Variablen für diesen Scope aus.
Damit entsteht eine anonyme Funktion, die unabhängig vom umgebenden Code ist und implizit gerufen wird.
Sinn der Sache ist, dass sichergestellt wird, dass dieser Scope keine nicht aufgeführten Variablen modifiziert.
Der Block kann also auch nachträglich eingefügt werden, um zu gucken, welche Variablen in dem Bereich genutzt
werden.
Variablen, die verändert werden sol…</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:virtualthistype&amp;rev=1674139432&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-01-19T15:43:52+02:00</dc:date>
        <title>notes:func:virtualthistype</title>
        <link>http://gsys.info/doku.php?id=notes:func:virtualthistype&amp;rev=1674139432&amp;do=diff</link>
        <description>virtual thistype

 Wie kann man in Enitity beliebig viele equals Methoden schaffen, die allel false liefern,
außer, wenn Entity e auch ein DimensionEntety ist.


class Entity
{
    bool equals( Entity const &amp; )
    {

    }

    //virtual bool equals( Entity sub const &amp; )           //  &lt;- das müsste das Ziel sein
    //        else return false;

    //virtual bool equals( Entity sub const &amp; ) : false;  //  &lt;- das müsste das Ziel sein

    template&lt; typename T &gt;
    bool equals( T const &amp; )
    …</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:workflow&amp;rev=1615195575&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-08T10:26:15+02:00</dc:date>
        <title>notes:func:workflow</title>
        <link>http://gsys.info/doku.php?id=notes:func:workflow&amp;rev=1615195575&amp;do=diff</link>
        <description>Workflow

Ein Workflow beschreibt einen RAII-Ablauf, sobald ein Fehler passiert, wird der Workflow-Stack wieder abgebaut, so dass alle Resourcen wieder geschlossen werden


workflow
  file = open( &quot;c:\temp&quot; ),
  mem = malloc( file.size ),
  file &gt;&gt; mem;
  puts mem;</description>
    </item>
    <item rdf:about="http://gsys.info/doku.php?id=notes:func:xmlconstruct&amp;rev=1432920408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-29T19:26:48+02:00</dc:date>
        <title>notes:func:xmlconstruct</title>
        <link>http://gsys.info/doku.php?id=notes:func:xmlconstruct&amp;rev=1432920408&amp;do=diff</link>
        <description>XML Notation für Konstruktoren

Der Datentyp 'node' ist ein XML-Knoten, er ist entweder Wurzel, Knoten oder Blatt. Um ihn zu konstruieren sollte ein Parent übergeben werden; Nodes, die unterhalb eines anderen Nodes konstruiert werden sind automatisch Kinder des Nodes.</description>
    </item>
</rdf:RDF>
