Home | Develop | Download | Contact
JsonElement.hpp
1/*
2 * JsonElement.hpp
3 *
4 * Copyright 2022 Fernando Pujaico Rivera <fernando.pujaico.rivera@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 * MA 02110-1301, USA.
20 *
21 */
22
23#ifndef __JSON_ELEMENT_HPP__
24#define __JSON_ELEMENT_HPP__
25
26
36#include <iostream>
37#include <string>
38#include <vector>
39
40namespace Pds{
41
42class Json;
43
52{
53private:
54
56 std::string Type;
57
59 void* Data;
60
61public:
62
79
90 JsonElement( bool Boolean);
91
102 JsonElement( int Integer);
103
114 JsonElement(unsigned int Integer);
115
126 JsonElement(long int Integer);
127
138 JsonElement(double Real);
139
150 JsonElement(std::string String);
151
162 JsonElement(const char *String);
163
174 JsonElement(const Pds::Json &JSon);
175
186 JsonElement(const std::vector<bool> &ArrayB);
187
198 JsonElement(const std::vector<int> &ArrayI);
199
210 JsonElement(const std::vector<long int> &ArrayI);
211
222 JsonElement(const std::vector<double> &ArrayR);
223
234 JsonElement(const std::vector<std::string> &ArrayS);
235
246 JsonElement(const std::vector<Pds::Json> &ArrayJ);
247
259
261
267public:
268
279 bool IsEmpty(void) const;
280
285public:
310 std::string GetType(void) const;
311
317 void* GetDataPtr(void) const;
318
325 bool &GetBoolean(void) const;
326
333 long int &GetInteger(void) const;
334
341 double &GetReal(void) const;
342
349 std::string &GetString(void) const;
350
357 Pds::Json &GetJson(void) const;
358
359
366 std::vector<bool> &GetArrayB(void) const;
367
374 std::vector<long int> &GetArrayI(void) const;
375
382 std::vector<double> &GetArrayR(void) const;
383
390 std::vector<std::string> &GetArrayS(void) const;
391
398 std::vector<Pds::Json> &GetArrayJ(void) const;
403public:
404
414 void MakeEmpty();
415
428 bool Copy(const Pds::JsonElement &Je);
429
453
458public:
459
460
484 static std::string TypeOfString(const std::string &elstr);
485
486 // La función asume que el dato esta formateado conforme su tipo
487 // \warning Es obligatorio usar antes TypeOfString()
488 static Pds::JsonElement LoadFromStringOfType(const std::string &type,const std::string &data);
493public:
494
495
507 void Print(bool last=true,unsigned int Ntabs=0) const;
508
516 std::string ToString(bool last,unsigned int Ntabs) const;
517
524 std::string ToString(unsigned int Ntabs=0) const;
525
530};
531
532}
533
534
554 std::ostream& operator<<(std::ostream &out,const Pds::JsonElement &Je);
555
566#endif
La clase tipo Pds::JsonElement . Esta clase genera un elemento de una estructura Json....
Definition: JsonElement.hpp:52
std::string Type
Definition: JsonElement.hpp:56
La clase tipo Pds::Json . Esta clase genera una estructura capaz de almacenar datos del formato Json....
Definition: Json.hpp:63
Pds::Json & GetJson(void) const
Retorna una referencia al dato "Json" del elemento de tipo Json.
JsonElement(double Real)
Crea un objeto de tipo Pds::JsonElement.
std::string ToString(bool last, unsigned int Ntabs) const
Retorna un std::string con texto en formato JsonElement.
std::string GetType(void) const
Retorna el tipo del elemento de tipo Json.
void * GetDataPtr(void) const
Retorna un puntero al dato del elemento de tipo Json.
std::string ToString(unsigned int Ntabs=0) const
Retorna un std::string con texto en formato JsonElement.
std::ostream & operator<<(std::ostream &out, const Pds::JsonElement &Je)
Retorna el contenido del elemento.
std::vector< Pds::Json > & GetArrayJ(void) const
Retorna una referencia al dato "ArrayJ" del elemento de tipo Json.
JsonElement(const Pds::JsonElement &Je)
Crea un objeto de tipo Pds::JsonElement a partir de otro Pds::JsonElement.
std::vector< std::string > & GetArrayS(void) const
Retorna una referencia al dato "ArrayS" del elemento de tipo Json.
bool & GetBoolean(void) const
Retorna una referencia al dato "Boolean" del elemento de tipo Json.
double & GetReal(void) const
Retorna una referencia al dato "Real" del elemento de tipo Json.
JsonElement(int Integer)
Crea un objeto de tipo Pds::JsonElement.
JsonElement(const std::vector< Pds::Json > &ArrayJ)
Crea un objeto de tipo Pds::JsonElement.
static std::string TypeOfString(const std::string &elstr)
Retorna un std::string indicando o tipo de dato en elstr.
bool IsEmpty(void) const
Verifica si el objeto JsonElement es nulo.
JsonElement(bool Boolean)
Crea un objeto de tipo Pds::JsonElement.
JsonElement()
Crea un objeto de tipo Pds::JsonElement vacio.
std::string & GetString(void) const
Retorna una referencia al dato "String" del elemento de tipo Json.
JsonElement(unsigned int Integer)
Crea un objeto de tipo Pds::JsonElement.
void Print(bool last=true, unsigned int Ntabs=0) const
Retorna un std::string con texto en formato JsonElement.
bool Copy(const Pds::JsonElement &Je)
Copia en si mismo (A), el contenido de un objeto Je. Este método es similar a usar el operador = ....
JsonElement(const Pds::Json &JSon)
Crea un objeto de tipo Pds::JsonElement.
JsonElement(const char *String)
Crea un objeto de tipo Pds::JsonElement.
JsonElement(std::string String)
Crea un objeto de tipo Pds::JsonElement.
std::vector< double > & GetArrayR(void) const
Retorna una referencia al dato "ArrayR" del elemento de tipo Json.
JsonElement(long int Integer)
Crea un objeto de tipo Pds::JsonElement.
std::vector< bool > & GetArrayB(void) const
Retorna una referencia al dato "ArrayB" del elemento de tipo Json.
Pds::JsonElement & operator=(const Pds::JsonElement &Je)
Copia en si mismo (A), un objeto Je. Este operador es similar al método Copy(). No importa el tamaño ...
JsonElement(const std::vector< int > &ArrayI)
Crea un objeto de tipo Pds::JsonElement.
JsonElement(const std::vector< std::string > &ArrayS)
Crea un objeto de tipo Pds::JsonElement.
JsonElement(const std::vector< long int > &ArrayI)
Crea un objeto de tipo Pds::JsonElement.
JsonElement(const std::vector< bool > &ArrayB)
Crea un objeto de tipo Pds::JsonElement.
static Pds::JsonElement LoadFromStringOfType(const std::string &type, const std::string &data)
JsonElement(const std::vector< double > &ArrayR)
Crea un objeto de tipo Pds::JsonElement.
long int & GetInteger(void) const
Retorna una referencia al dato "Integer" del elemento de tipo Json.
std::vector< long int > & GetArrayI(void) const
Retorna una referencia al dato "ArrayI" del elemento de tipo Json.
void MakeEmpty()
Libera los datos internos del objeto y lo convierte en uno nulo.
Nombre de espacio para Pds (Procesamiento Digital de Senales)
Definition: AbstractRV.hpp:42

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed