GCC 4.4

GCC 4.4 kommt bald, und hat schon einige Unterstützung für den nächsten C++ Standard, erfreulicherweise auch Proposal 1984: deducing the type of variable from its initializer expression. Damit ist folgendes möglich:

for (auto it = x.begin(); it != x.end(); ++it) ...

(Apropos for loop, leider noch keine Unterstützung für den range based for loop.)

No comment »

Code Analysis and Refactoring with CDT

Doug Schäfers Slides vom Eclipse Summit Europe sind nun online verfügbar. Für uns Insider natürlich nicht viel neues, aber es ist doch schön, wenn jemand unsere Arbeit präsentiert. Irgendwie cool :-) Ausserdem hats sogar Code von mir in der Präsentation:

Super, was? So, und nun “spread the word on what can be done and how”, wie Doug auf der letzten Folie aufruft.

3 comments »

Anzeichen des Wahnsinns

Ein Zeichen vertippt:

Und trotz allem mag ich die Sprache sehr.

2 comments »

Neues im Ganymede CDT

Gibts bei Emanuel.

No comment »

CDT C++ Refactorings in Ganymede!

Jawohl, es ist soweit, heute wurde unser letzter grosser Patch angenommen. Folgendes Menu wird also jedermann Ende Juni im neusten CDT-Release vorfinden:

Zudem haben die Committer-Abstimmungen für Emanuel Graf heute begonnen, 5 Stimmen hat er schon — ich denke man darf bereits gratulieren :-)

So, und wer jetzt glaubt reklamieren zu müssen, ja, Implement Method und Generate Getters and Setters sind keine Refactorings, aber es lohnt sich (noch) nicht, für zwei Einträge ein Top-Level Source-Menu einzuführen.

6 comments »

CDT C++ Refactoring Plug-In in Ganymede?

Am letzten Mittwoch haben wir einen grossen Schritt getan und die notwendigen Patches für den C++ Refactoring-Support für CDT fertiggestellt.

Der Gesamtumfang der Patches beträgt knapp 24000 Zeilen, wobei schlussendlich nur ein einziges Refactoring (Extract Constant) inbegriffen ist, der Rest dient als Basis für weitere Refactorings, welche in nächster Zeit folgen werden, und umfasst Dinge wie Source-Transformationen, Code re-writing, Kommentarbehandlung, und natürlich ganz viele Tests. Wir hoffen, damit (endlich) den Sprung zu schaffen und ein offizieller Teil des CDT zu werden. Langfristiges Ziel ist natürlich, selbst Committer zu werden, allerdings ist das nicht so einfach wie man meinen könnte (in dieser Hinsicht unterscheidet sich Eclipse von den meisten anderen Open-Source Projekten die ich kenne). Jetzt können wir nur noch hoffen, dass wir möglichst rasch durch das IP-Review kommen und unser Code schnell im CVS landet (das Arbeiten mit gepatchten Quellen auf die man nicht committen kann ist nicht besonders spassig :/ ).

Wer das ganze genauer mitverfolgen will, sollte sich bei den beiden relevanten Bug-Reports anhängen, oder gleich bei unserem Trac.

5 comments »

Sprachquiz

Kurze Frage, in welcher Programmiersprache ist das wohl geschrieben:
a->Foo = b->Foo;

Read all »

8 comments »

C++ kriegt Lambda-Ausdrücke

Während einer Diskussion im IFS heute kamen wir auf Features im neuen C++-Standard zu sprechen, vor allem wegen Templates und den neuen Concept Maps (im Prinzip eine Möglichkeit, um Templates zu prüfen, ob sie gewisse Voraussetzungen erfüllen. Soll vor allem endlich anständige Fehlermeldungen in diesem Bereich bringen.). Ich wusste zwar immerhin, dass bald ein neuer Standard erscheint, aber was der genau beinhaltet war mir auch noch nicht klar. Heute Abend beim lesen des entsprechenden Wikipedia Artikels habe ich noch was viel cooleres gefunden: Lambda functions and expressions! Und dazu passend natürlich auch Closures. Auf die Schnelle ist mir nichts besseres eingefallen, deshalb verwende ich einfach das Wikipedia-Beispiel:
vector<int> liste;
int total = 0;
for_each(liste.begin(), liste.end(), <>(int x; &total) (total += x));

Cool, nicht? Ist zwar noch nicht ganz so elegant wie in Ruby, aber doch nicht übel.
[2, 5].inject(0) {|sum, i| sum += i} # => 7

Jetzt könnte man noch eine Wette abschliessen, wann Java nachzieht. Schliesslich kann C# es auch…

Und ja, mit Boost hat man eigentlich bereits Lambda-Ausdrücke, die Nachteile werden im C++0x Proposal auch diskutiert.

2 comments »

C++ Refactoring Plug-in for CDT: Milestone 1 released

Es ist so weit, nach einigen Monaten Entwicklungszeit haben wir heute den ersten Milestone vom C++ Refactoring-Plug-In fürs CDT erreicht und veröffentlicht. Am einfachsten ist es wohl, einfach ein Eclipse 3.3 mit CDT zu nehmen und dann über die Update Site unser Plug-In zu installieren.

Also, einfach mal ausprobieren und uns bitte Bugs melden :-) . Aber bitte gnädig sein, es ist erst Milestone 1.

Auf ausdrücklichen Wunsch von Emanuel soll ich hier noch erwähnen: Er ist der Chef!

5 comments »

Implement Method für CDT

Seit bald drei Wochen arbeite ich auch am CDT Refactoring Plug-In mit und habe meinen ersten Task abgeschlossen, und zwar ‘Implement Method’. Das ist zwar kein Refactoring, aber trotzdem sehr nützlich. Es geht darum, aus einer Methodendeklaration die entsprechende Implementation zu erstellen. Man muss also nicht mehr den Methodennamen kopieren, ins .cpp File wechseln, einfügen und anpassen, sondern erledigt dies mit einem Tastendruck (ok, 3 Tasten).

Am besten einfach mal den Screencast den ich gemacht habe anschauen um alle Features zu sehen.

Der erste Release ist schon Ende nächster Woche, ab dann wird es auch einen Download für CDT 4.0 geben.

No comment »