Deutsch
SDK-Helfer/ Tools

XPDB: Einheitlicher Standard für Projekt-Datenbanken

 

Sebastian
König
Hallo zusammen,

einer spontanen Idee folgend habe ich vor ein paar Tagen mit der Arbeit an einem neuen Projekt begonnen: Ein Parser, der die Struktur eines (X)Profan-Projekts (d.h. eingebundene Include-, Header-, und Unit-Dateien, enthaltene Prozeduren usw.) in einer Datenbank speichert. Diese Datenbank soll dann in eine Datei geschrieben werden - und genau an dieser Stelle liegt der Grund für mein Posting hier:

Ich würde für das Format dieser Dateien gern einen einheitlichen Standard schaffen. Und da ich diesen natürlich nicht allein bestimmen möchte (auch wenn diese Praxis in der IT-Branche nicht unüblich ist ), würde ich das Format gern hier diskutieren (einige konkrete Vorstellungen habe ich schon, aber dazu später mehr).

Erstmal meine Hauptfrage: Was haltet ihr grundsätzlich von dem Vorhaben, einen solchen Standard zu schaffen?

Und speziell an iF: XPSE schreibt ja für Units ja schon einige Infos in .def-Dateien. Wärst Du bereit, hier zusätzlich das neue Format zu unterstützen?

Geplant ist das Projekt, das ich vorläufig XPDB genannt habe (für XProfan Program Database - gefällt mir eigentlich ganz gut, könnte sich aber, wenn jemandem noch etwas besseres einfallen sollte, noch ändern, um nicht unnötig zur Inflation der 4-Buchstaben-XP-Namen beizutragen ) vornehmlich als Software Development Kit, also als Basis für weitere Projekte. So soll es auf jeden Fall eine DLL geben, die auch in XProfan bequem nutzbar ist, und bei Interesse kann ich auch gern statische Bibliotheken zur Nutzung mit C/C++- oder Assembler-Codes zur Verfügung stellen. Auch ein rudimentärer GUI-Browser für die Strukturen soll Teil des Pakets werden. Aber da hier wirklich nicht der Schwerpunkt von meiner Seite aus liegen soll, wäre ein schöner Browser mit vielen Features ein erster Vorschlag für ein Projekt, das jemand in XProfan schreiben könnte...

So, das genügt erstmal - ich freue mich auf Meinungen und Anregungen zu dem Thema!

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
10.09.2007  
 



Auch wenn für XProfan unüblich - so wäre XML wohl das Passenste. Ich erinnere mich (für und in) XProfan auch schon einen XML-Parser geschrieben zu haben - nur an die Performance vermag ich mich nicht zu erinnern.

Vlt. wäre ein simples TXT ala:

  
root
_file_typ_item
_file_typ_item_additionalInfos

einfacher zu handhaben.

XPDB klingt gut, und natürlich kann ich mir vorstellen das XPSE ein XPDBF nutzt, aber auch XIDE für den Projektexplorer.
 
11.09.2007  
 




Sebastian
König
Hallo,

garnicht so einfach, sich von einem Linux-System aus mit Iceweasel einzuloggen... mein FastLogin-Link funktionierte irgendwie nicht, sodass ich mir erst ein neues Passwort besorgen musste...

iF
Auch wenn für XProfan unüblich - so wäre XML wohl das Passenste. Ich erinnere mich (für und in) XProfan auch schon einen XML-Parser geschrieben zu haben - nur an die Performance vermag ich mich nicht zu erinnern.


XML war in der Tat auch mein erster Gedanke und die aktuelle XPDB-Arbeitsversion erzeugt die Ausgabe schon in diesem Format (ich wollte nur in meinem ersten Posting zu dem Thema noch nicht zu sehr ins Detail gehen und erstmal allgemeine Meinungen zu dem Thema einholen...). Wenn ich nachher zuhause bin, werde ich mal eine Beispiel-Ausgabe, wie ich sie mir bis jetzt vorstelle, posten. Die Geschwindigkeit des Parsers sollte kein Problem sein, denke ich. Außerdem wird eine Funktion zum Einlesen der Dateien auch Teil des Projekts sein, sodass es garnicht unbedingt nötig sein wird, einen eigenen Parser zu schreiben (aber natürlich möglich, da das Format ja offengelegt und gut dokumentiert werden soll).

iF
XPDB klingt gut, und natürlich kann ich mir vorstellen das XPSE ein XPDBF nutzt, aber auch XIDE für den Projektexplorer.

Ja, mir gefällt der Name auch! Wenn auch die XIDE das Format nutzen würde, wäre das natürlich super!

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.09.2007  
 




H.Brill
Ja, XML wäre auch für mich passend, da dieses Format auch sehr bekannt ist.
Gerade für diejenigen (auch ich), die mit mehreren Programmiersprachen
arbeiten, bietet sich das an.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
11.09.2007  
 




Sebastian
König
So, hier also wie versprochen mehr Informationen:

Wie schon erwähnt, ist die Speicherung im XML-Format die von mir favourisierte und auch bereits implementierte Variante. Ein mit der aktuellen XPDB-Version erzeugtes Beispiel habe ich unten angehängt (tatsächlich werden auch schon Informationen zu Prozeduren gespeichert, aber das habe ich zur besseren Übersichtlichkeit hier mal weggelassen...)

Wahrscheinlich ist der Code so schon sehr einfach zu verstehen, aber trotzdem ein paar Anmerkungen:
  1. Jedes gespeicherte Element ist ein object - das ergab sich ganz direkt aus meiner internen Klassen-Hierarchie.
  2. Um was genau es sich handelt, steht im Attribut type, so gilt zum Beispiel 1=Include-Datei, 2=Header usw.
  3. Was in name steht ist im Grunde beliebig, sollte sich aber in der Regel automatisch aus dem analysierten Code ergeben
  4. Das Attribut id sollte innerhalb jeder Datei eindeutig sein.
Neben der Voraussetzung, dass es sich um gültiges und wohlgeformtes XML handeln muss, würde ich zusätzlich folgende Bedingungen an den Aufbau vorschlagen:
  • Die Attribute type, id und name sind Pflichtangaben für jedes Objekt, die Angabe parent im Grunde auch, nur nicht für die Hauptdatei des analysierten Codes
  • Objekte, auf die sich irgendwo bezogen wird (zum Beispiel im parent-Attribut), müssen in der Datei VOR der Referenzierung stehen. (Damit wird vermieden, dass man den Code per Multi-Pass-Verfahren parsen oder Referenzen später ermitteln muss. In der Regel sollte die Bedingung bei der sequentiellen Analyse eines Projekts automatisch erfüllt sein, aber zur Not könnte man es auch ohne großen Aufwand beim Speichern der XML-Datei sicherstellen.)
  • Die ID-Zählung muss innerhalb jeder Datei bei 1 beginnen. (Das erleichtert ggf. das Zusammenfügen von Datenbanken.)
Zusätzlich zu den (Pflicht-)Attributen, die direkt im < object > -Tag stehen, können abhängig vom Typ auch weitere Informationen gespeichert werden; ich nenne diese dann Werte. Ein Beispiel wäre level für Include-Dateien, das die Verschachtelungstiefe angibt. Auch hier könnte man abhängig vom Typ Pflichtangaben verlangen.

Generell finde ich, dass so wenige Angaben wie möglich zur Pflicht erklärt werden sollten, um die Verwendungsmöglichkeiten der Datenbank-Dateien sehr allgemein bleiben. Wenn man zum Beispiel einfach nur die von einer Unit exportierten Prozeduren beschreiben möchte, ist das Attribut line sicher nicht allzu sinnvoll...

Ok, soviel erstmal zu meinen bisherigen Gedanken... gibt es dazu soweit Meinungen, Anregungen oder Einsprüche?

MfG

Sebastian
Mit XPDB erzeugter Beispiel-Code:
KompilierenMarkierenSeparieren
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.09.2007  
 



Feste Pfadangaben in einem XPDBF? Es fehlt auch ein Parameter URL, somit könnte man projektabhängige Dateien beschreiben welche lokal garnicht auf Platte sind - bzw. Includes und Units beschreiben welche vom Importer halt erst geladen würden... (hatte ich für XIDE eh angeplant)
 
11.09.2007  
 



Nachtrag: Ich würde auch gleich nach dem Header nicht mit den Objekten beginnen, hier fehlt eine weitere Kapselung.
 
11.09.2007  
 




Michael
Wodrich
Sieht gut aus und ist verständlich.

Nicht so wie die Delphi und VB Projektdateien, wo man nicht mal MIT Handbuch durchsteigt.

XML-NotePad freut sich auch über das Format.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
11.09.2007  
 




Frank
Abbing
Kannst du bitte mal genauer erklären, wofür diese Dateien am Ende sinnvoll sind?
 
11.09.2007  
 




Sebastian
König
Die bisherige Zustimmung zum XML-Format freut mich erstmal!

iF
Feste Pfadangaben in einem XPDBF? Es fehlt auch ein Parameter URL, somit könnte man projektabhängige Dateien beschreiben welche lokal garnicht auf Platte sind - bzw. Includes und Units beschreiben welche vom Importer halt erst geladen würden... (hatte ich für XIDE eh angeplant)


Das mit den Pfadangaben habe ich erstmal vorläufig so gemacht... ist wahrscheinlich wirklich nicht immer sinnvoll. Ich könnte mir gut vorstellen, hier durch eine Angabe im Header (absolute,relative,none) mehrere Möglichkeiten zuzulassen.

Auch eine optional URL-Angabe im Header ist eine gute Idee.

iF
Nachtrag: Ich würde auch gleich nach dem Header nicht mit den Objekten beginnen, hier fehlt eine weitere Kapselung.


Stimmt - werde ich einbauen.

EDIT: Was stimmt denn hier mit den Zitaten nicht?
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.09.2007  
 



Die URL bezog sich eher auf ein Dateiobjekt.

Mit den Quotes ist alles IO, Du hattest nur hinter einem Quote (und vor dem Gleichzeichen) ein Freizeichen mit eingebaut, und [quote = blub] gibt es nicht was iFBB im Bezug aufs Quote zum Abschalten zwang.

@Frank: Ich könnte Dir eine solche XML geben - Du öffnest diese in XIDE - XIDE läd und ordnet alle Dateien des Projektes an die richtige Stelle. Solch eine Datei beschreibt z.B. Aufenthaltsorte von Projektzugehörigen Dateien und Einstellungen. Das müssen wir XIDE zwar noch beibringen, aber ich denke vom ASM-Core her gibts da nichts neues hinzuzufügen - soll heissen - alles über Plgs möglich.

Ich hatte ja so oder so vor genau diese Funktionalität in die XIDE hineinzukatapultieren - Stichworte Projekt-Assistent/Explorer - vlt. nimmt Sebastian uns dabei etwas Arbeit ab. (vorausgesetzt sein Parser zuckt nicht bei XPSE-Codes und versteht diese ebenso wie normale XCodes.)
 
11.09.2007  
 




Sebastian
König
Frank Abbing
Kannst du bitte mal genauer erklären, wofür diese Dateien am Ende sinnvoll sind?


Zum Beispiel zur Beschreibung von Unit-Inhalten. Zugegeben, hier gibt es schon das bereits erwähnte .def-Format vom XPSE, aber ein flexibles, allgemein unterstütztes Format halte ich irgendwie für eine gute Idee.

Mein ursprünglicher Plan war, einfach einen Browser für die Struktur von XProfan-Projekten zu schreiben - als ich darauf kam, dass man die ermittelten Informationen auch speichern können sollte (um nicht immer den ganzen Code parsen zu müssen), verlagerte ich den Schwerpunkt des Projekts auf das Dateiformat. Irgendwie gefiel mir die Idee... Die ist natürlich nicht neu! Ein bischen wurde ich auch von den Browse-Informationen, die mein Visual C++ generiert, inspiriert.

Das bringt mich gleich zum nächsten Punkt, den auch iF schon angesprochen hat: XIDE könnte das Format nutzen, um Informationen zu Projekten zu speichern. Beim Öffnen eines Projekts könnte dann sehr schnell die Struktur eingelesen werden, ohne dass der ganze Code einmal gelesen werden muss. Bei Änderungen muss dann nur die Datenbank im Speicher aktualisiert werden und beim Schließen des Projekts wird alles wieder in die Datei geschrieben. Voraussetzung für diese Anwendung ist natürlich, dass ein solcher Projekt-Browser Teil der IDE sein soll... (Informationen dazu gibt es ja bisher kaum)

Auch Zusatzprogramme wie zum Beispiel Debugger könnten vielleicht von einer solchen Projekt-Datenbank profitieren...
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.09.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

33.510 Betrachtungen

Unbenanntvor 0 min.
Gast.081529.08.2024
Sven Bader07.08.2021
Michael W.03.04.2021
iF01.11.2020
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie