VF_recallVD_recallVE_recall
VCF_recallVCD_recallVCE_recall
VPF_recallVPD_recallVPE_recall
VI_recallVBI_recallVSI_recallVLI_recallVQI_recall 
VU_recallVUB_recallVUS_recallVUL_recallVUQ_recallVUI_recall
FunktionVektor im Binärformat aus einem Stream einlesen
Syntax C/C++#include <VFstd.h>
int VF_recall( fVector X, ui size, FILE *stream );
C++ VecObj#include <OptiVec.h>
int vector<T>::recall( FILE *stream );
Pascal/Delphiuses VFstd;
function VF_recall( X:fVector; size:UIntSize; var Stream:FILE ): Integer;
CUDA-Funktion C/C++#include <cudaVFstd.h>
int cudaVF_recall( fVector d_X, ui size, FILE *stream );
int cudaVF_recall_buf( fVector d_X, ui size, FILE *stream, fVector h_Wk );
CUDA-Funktion Pascal/Delphiuses VFstd;
function cudaVF_recall( X:fVector; size:UIntSize; var Stream:FILE ): IntBool;
function cudaVF_recall_buf( X:fVector; size:UIntSize; var Stream:FILE; h_Wk:fVector ): IntBool;
Beschreibungsize Elemente werden aus stream im Binärformat eingelesen und in X gespeichert. Der Datentyp beim Auslesen muss derselbe sein wie der bei der Speicherung mittels einer Funktion der VF_store-Familie. Sie können also nicht Daten beispielsweise mit VF_store speichern und mit VD_recall auslesen (anders als bei der Speicherung im ASCII-Format, siehe VF_read).

Die VecObj-Version unterscheidet sich von der "normalen" C/C++-Version darin, dass sie ein Vektor-Objekt und nicht nur die Vektor-Elemente liest: Zuerst wird eine ui gelesen, die die Vektorgröße size setzt, und erst danach die size Elemente, während die "normalen" V?_recall-Funktionen size als bekannt voraussetzen und als Argument übernehmen. Daher kann die VecObj-Funktion recall nur zum Einlesen von Vektoren verwandt werden, die zuvor auch mit der VecObj-Funktion store gespeichert wurden, nicht aber mit einer der "normalen" V?_store-Funktionen.

nur CUDA-Versionen: cudaV?_recall_buf übernimmt einen Host-Vektor h_Wk als zusätzliches Argument. Dieser dient als Pufferspeicher und muss (mindestens) dieselbe Größe haben wie X. Hierdurch wird die interne Bereitstellung von Pufferspeicher bei cudaV?_recall eingespart, so dass cudaV?_recall_buf etwas schneller ist.

Nur GCC und CLang: GCC und CLang (einschließlich BCC32C) erweitern den 10-byte Datentyp long double zu 12 oder 16 bytes im Speicher (12 byte in 32-bit, 16 byte in 64 bit). Um für Kompatibilität zwischen den mit den verschiedenen Compilern erzeugten Dateien zu sorgen, schreiben und lesen die Funktionspaare VE_store / VE_recall, VCE_store / VCE_recall und VPE_store / VPE_recall stets im 10-byte-Format.

Thread-SicherheitVerschiedene Threads können gefahrlos mehrere Funktionen der VF_ / MF_store- und VF_ / MF_recall-Familien gleichzeitig aufrufen, solange sie auf verschiedene Streams zugreifen. Falls sie allerdings auf ein- und denselben Stream zugreifen, müssen unbedingt durch geeignete Maßnahmen (Critical Sections, Mutexes) Race−Conditions verhindert werden.
Fehlerbehandlungwird durch die C-Funktion fread bzw. die Delphi-Funktion BlockRead durchgeführt, auf der VF_recall etc. basieren
Rückgabewert0, wenn fehlerfrei; ansonsten 1. Um mehr Information im Falle eines Fehlers zu erhalten, inspiziere man errno (C/C++) oder IOResult (Delphi).
QuerverweisVF_store,   VF_write,   VF_print,   fwrite,   fread

VectorLib Inhaltsverzeichnis  OptiVec Home