Je viens de croiser les tampons de protocole de Google. Il semble être la solution pour une application backend C++ que j'écris. Le problème est que je ne peux pas sembler trouver quelque chose concernant les types de vecteurs. La documentation mentionne les types répétés, mais je n'arrive pas à trouver quelque chose.Comment écrire ces classes en utilisant protobuf de Google?
Et si j'ont ces ensemble de classes:
class UnifiedBinaryHeader
{
public:
UnifiedBinaryHeader();
void Serialize(std::ostream& output) const;
void Deserialize(std::istream& input);
private:
wxString m_name;
wxDateTime m_time;
};
struct UnifiedBinaryRow
{
wxDateTime date;
float value;
UnifiedBinaryRow()
{
value= 0;
}
void Serialize(std::ostream& output) const;
void Deserialize(std::istream& input);
};
class UnifiedBinaryRowCollection
{
private:
typedef std::vector<UnifiedBinaryRow> UnifiedBinaryRowVector;
public:
typedef UnifiedBinaryRowVector::iterator iterator;
typedef UnifiedBinaryRowVector::const_iterator const_iterator;
UnifiedBinaryRowCollection();
iterator begin();
const_iterator begin() const;
iterator end();
const_iterator end() const;
UnifiedBinaryRowCollection& AddRow(const UnifiedBinaryRow& row);
size_t NumRows() const;
private:
UnifiedBinaryRowVector m_rows;
};
class UnifiedBinaryFormat
{
public:
UnifiedBinaryFormat();
UnifiedBinaryHeader& Header();
const UnifiedBinaryHeader& Header() const;
UnifiedBinaryFormat& Header(UnifiedBinaryHeader& header);
UnifiedBinaryRowCollection& Rows();
const UnifiedBinaryRowCollection& Rows() const;
UnifiedBinaryFormat& Rows(const UnifiedBinaryRowCollection& rows);
void Serialize(std::ostream& output) const;
void Deserialize(std::istream& input);
private:
UnifiedBinaryHeader m_header;
UnifiedBinaryRowCollection m_rows;
};
Comment puis-je écrire un fichier .proto pour ces classes, car je me sers beaucoup de membres qui sont des vecteurs. Toute aide pour "porter" ces classes dans un fichier .proto que je peux utiliser sera très appréciée.
Ok, je pense que je comprends ce que vous dites (je doutais lors de la publication de mes cours). Cependant, si vous prenez les "comportements" (c'est-à-dire la sérialisation/désérialisation, etc.) des classes ci-dessus, je suis sûr que vous serez d'accord qu'il s'agit simplement de "conteneurs". La question dégénère alors en comment puis-je "porter" une classe C++ qui contient un vecteur d'autres classes C++ (qui peuvent elles-mêmes être imbriquées) dans un fichier .proto? –
Voici le tutoriel C++: http://code.google.com/intl/fr/apis/protocolbuffers/docs/cpptutorial.html, vous pouvez noter 2 choses: il est parfaitement possible d'imbriquer les messages les uns dans les autres et les 'répétés 'mot-clé permet d'émuler le comportement des conteneurs. –
Je vais lire les docs à nouveau et voir si je peux obtenir un exemple rapide pour travailler. Incidemment, –