Icon Ressource

[C] CSV Parser 1.4

get_by_index() prüft die Indizes ob sie im gültigen Bereich liegen, bevor der Pointer auf das Datenfeld zurückgegeben wird. Somit ist das Verhalten konsistent zu get_by_name().

Außerdem: mehr const. Das Array von Spaltennamen wird nun bereits durch die parse_csv() Funktion erzeugt, was logischer ist. Somit können Parameter weiterer Funktionen als Pointer auf const deklariert werden, was ebenfalls logischer und intuitiver ist.
Ut supra - Vereinfachung der Macro Definition von field_to_num.

Darüber hinaus:
Auch wenn die Lib in C und für C geschrieben ist, lässt sie sich auch in einen C++ Code einbinden. Um in diesem Fall ein Minimum an RAII gewährleisten zu können, ist das csv_deleter Objekt implementiert, damit der von parse_csv() zurückgegebene Wert in einen Smart Pointer (z.B. std::unique_ptr<csv_t, csv_deleter_t>) gewrappt werden kann. Speicher wird so automatisch freigegeben, sobald das Pointerobjekt out-of-scope geht.
Solange lediglich die größte Anzahl an Datenfeldern bekannt ist, ist es nicht möglich zu wissen, ob die Anzahl in jedem Datensatz gleich ist. Das erzeugt ggf. einen Mehraufwand beim Zugriff auf tabulare Daten. Um das zu vermeiden, ist es nun durch nur einen Vergleich zwischen dem minFields und maxFields Member möglich festzustellen ob es nötig ist die Anzahl für jeden Datensatz erneut zu prüfen.
  • Konvertierung von Dezimaltrennzeichen und Tausendertrennzeichen aus dem lokalen in das von C erwartete Format.
  • Vereinfachte numerische Konvertierung durch Zusammenfassung von Neuformatierung und Aufruf der passenden Konvertierungsfunktion.
  • Fehlende const Deklaration für Headernamen ergänzt.
  • Weitere explizite Type-Casts hinzugefügt.
Oben Unten