TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
InputCommBuffer.h
1/****************************************************************************
2* Copyright (c) 2022, CEA
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9*
10* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
11* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
12* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*
14*****************************************************************************/
15#ifndef InputCommBuffer_included
16#define InputCommBuffer_included
17#include <Entree.h>
18#include <sstream>
20using std::istringstream;
21/*! @brief : Classe outil utilisee exclusivement par Schema_Comm.
22 *
23 * C'est une classe
24 * derivee de Entree dont le stream est de type istringstream (les donnees
25 * lues par operator>> sont prises dans un buffer).
26 * On utilise la classe comme suit:
27 * (1) on reserve un buffer d'une certaine taille avec
28 * char * buf = input_comm_buffer.reserve_buffer(taille);
29 * (2) on remplit le buffer avec des donnees:
30 * for (i=0; i<taille; i++)
31 * buf[i] = .....;
32 * (3) on cree un stream a partir du buffer:
33 * input_comm_buffer.create_stream();
34 * (4) on peut ensuite lire les donnees a travers l'operateur>>:
35 * input_comm_buffer >> x >> y >> chaine >> ... ;
36 * (5) quand on a fini de lire avec operateur>> on fait
37 * input_comm_buffer.clear();
38 * et on peut refaire (1)
39 *
40 */
41
42class InputCommBuffer : public Entree
43{
44public:
46 ~InputCommBuffer() override;
47 // Specifie la taille du buffer et renvoie son adresse.
48 // L'utilisateur doit ensuite y mettre les donnees (tout le buffer
49 // doit etre rempli).
50 char * reserve_buffer(int bufsize);
52 // On cree le stream de lecture a partir du buffer.
53 void create_stream();
54 void clear();
55private:
56 istringstream * stream_;
57 char * buffer_;
58 int size_;
59 int memorysize_; // memorysize_ >= size_
60};
61#endif
Entree()
Definition Entree.cpp:24
char * reserve_buffer(int bufsize)
~InputCommBuffer() override
void create_stream_from_output_stream(OutputCommBuffer &)
: Classe outil utilisee exclusivement par Schema_Comm.