Hallo!
Habe ein etwas spezielles Anliegen und hoffe, dass einer von euch vielleicht eine Lösung/einen Lösungshinweis dazu hat.
Man kann auch in C objektorientiert programmieren (ja, in C++ wärs einfacher, aber das ist hier leider keine Option). Leider bietet C diese Funktionalität nicht von Haus aus an, daher muss man sich das Ganze selbst zusammenbauen (Beispiel für Interessierte: unten).
Damit ich das nicht für jedes Programm von Hand machen muss, will ich ein Perlprogramm haben, dass die entsprechenden C-Sourcefiles als Argument geliefert bekommt und die 'Übersetzung' des Pseudo-Objektorientierten-Codes in echten C-Code übernimmt.
Weiß einer von euch, ob es sowas schon irgendwo gibt? Oder muss ich es selbst schreiben?
Jedwege Hilfe willkommen...
Erweiterte OO-Funktionalität wie Vererbung usw. ist nicht notwendig.
MfG,
thewolf
-------
Codebeispiel in C:
Main:
Pseudo-Code, der von Hand geschrieben und per Perlprogramm übersetzt werden soll:
So soll die Implementierung in echtem C aussehen, nachdem das Perlprogramm preprocessed hat:
Habe ein etwas spezielles Anliegen und hoffe, dass einer von euch vielleicht eine Lösung/einen Lösungshinweis dazu hat.
Man kann auch in C objektorientiert programmieren (ja, in C++ wärs einfacher, aber das ist hier leider keine Option). Leider bietet C diese Funktionalität nicht von Haus aus an, daher muss man sich das Ganze selbst zusammenbauen (Beispiel für Interessierte: unten).
Damit ich das nicht für jedes Programm von Hand machen muss, will ich ein Perlprogramm haben, dass die entsprechenden C-Sourcefiles als Argument geliefert bekommt und die 'Übersetzung' des Pseudo-Objektorientierten-Codes in echten C-Code übernimmt.
Weiß einer von euch, ob es sowas schon irgendwo gibt? Oder muss ich es selbst schreiben?
Jedwege Hilfe willkommen...
Erweiterte OO-Funktionalität wie Vererbung usw. ist nicht notwendig.
MfG,
thewolf
-------
Codebeispiel in C:
Main:
Code:
int main( void )
{
testklasse* t;
t = S0testklasseOBJC();
t->setI( t, 12 );
t->getI( t );
return 0;
}
Pseudo-Code, der von Hand geschrieben und per Perlprogramm übersetzt werden soll:
Code:
CLASS testklasse {
PRIVATE:
int i;
PUBLIC:
void setI( int i );
int getI();
testklasse();
};
void testklasse::setI( int i )
{
THIS->i = i;
}
int testklasse::getI()
{
return THIS->i;
}
testklasse::testklasse()
{
THIS->i = 0;
}
So soll die Implementierung in echtem C aussehen, nachdem das Perlprogramm preprocessed hat:
Code:
typedef struct OBJCtestklasse testklasse;
struct sOBJCtestklasse {
int i;
void ( *setI )( testklasse*, int );
int ( *getI )( testklasse* );
};
void setI( testklasse* THIS, int i )
{
THIS->i = i;
}
int getI( testklasse* THIS )
{
return THIS->i;
}
testklasse* S0testklasseOBJC()
{
testklasse* THIS = ( testklasse* )malloc( sizeof( sOBJCtestklasse ) );
if( !THIS )
return THIS;
this->setI = setI;
this->getI = getI;
THIS->i = 0;
return THIS;
}
mir kommt das alles sehr bekannt vor was du erzählst, ich bilde mir ein das wir sowas mal in der schule früher brauchten aber an den namen des programms kann ich mich daweil leider nicht erinnern.