wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 1

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Need help...
Conversation (Résolue) : Need help...
26-05-2009 14:10:51  Need help... #1
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
Salut a tous, (dsl pour le qwerty)

alors je sais que ca va vous parraitre bizarre comme demande, mais j'ai a ma disposition un code en C que je comprend pas du tout.

Je vous explique :

Je suis en stage en Roumanie, et je dois realiser un editeur de fichiers apelles TAP (Transfered Account Protocol).
Ce sont les operateurs de telephonie qui s'echange ce genre de fichier afin de se transmettre les clients lorsque ces derniers ne sont pas couvert par leur reseau.

Ces fichiers sont codes selon une grammaire qui se nomme ASN1.
Afin de realiser mon editeur je dois decoder ces fichiers.

Pour cela je dispose de routines en C que j'essaye d'incorporer dans mon prog (C++,wxwidget).
Ces routines sont sensees me fournir des outils pour recuperer et modifier les elements des fichiers TAP.

Seulement voila, gros probleme, je capte quedal a ces routines.

Est ce qu'une bonne ame pourrait jeter un coup d'oeil et m'expliquer en deux mots.

voila un exemple de fichier .c et un exemple en suivant de son .h associe

Code cpp:

/*
* Generated by asn1c-0.9.22 (http://lionet.info/asn1c)
* From ASN.1 module "TAP-MM-0311"
*     found in "TAP3.11_MM_ASN1.SPEC.asn1"
*     `asn1c -S/skeletons`
*/

 
#include <asn_internal.h>
 
#include "Recipient.h"
 
int
Recipient_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
            asn_app_constraint_failed_f *ctfailcb, void *app_key) {
    /* Replace with underlying type checker */
    td->check_constraints = asn_DEF_PlmnId.check_constraints;
    return td->check_constraints(td, sptr, ctfailcb, app_key);
}
 
/*
* This type is implemented using PlmnId,
* so here we adjust the DEF accordingly.
*/

static void
Recipient_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
    td->free_struct    = asn_DEF_PlmnId.free_struct;
    td->print_struct   = asn_DEF_PlmnId.print_struct;
    td->ber_decoder    = asn_DEF_PlmnId.ber_decoder;
    td->der_encoder    = asn_DEF_PlmnId.der_encoder;
    td->xer_decoder    = asn_DEF_PlmnId.xer_decoder;
    td->xer_encoder    = asn_DEF_PlmnId.xer_encoder;
    td->uper_decoder   = asn_DEF_PlmnId.uper_decoder;
    td->uper_encoder   = asn_DEF_PlmnId.uper_encoder;
    if(!td->per_constraints)
        td->per_constraints = asn_DEF_PlmnId.per_constraints;
    td->elements       = asn_DEF_PlmnId.elements;
    td->elements_count = asn_DEF_PlmnId.elements_count;
    td->specifics      = asn_DEF_PlmnId.specifics;
}
 
void
Recipient_free(asn_TYPE_descriptor_t *td,
        void *struct_ptr, int contents_only) {
    Recipient_1_inherit_TYPE_descriptor(td);
    td->free_struct(td, struct_ptr, contents_only);
}
 
int
Recipient_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
        int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
    Recipient_1_inherit_TYPE_descriptor(td);
    return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
 
asn_dec_rval_t
Recipient_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
        void **structure, const void *bufptr, size_t size, int tag_mode) {
    Recipient_1_inherit_TYPE_descriptor(td);
    return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
 
asn_enc_rval_t
Recipient_encode_der(asn_TYPE_descriptor_t *td,
        void *structure, int tag_mode, ber_tlv_tag_t tag,
        asn_app_consume_bytes_f *cb, void *app_key) {
    Recipient_1_inherit_TYPE_descriptor(td);
    return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
 
asn_dec_rval_t
Recipient_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
        void **structure, const char *opt_mname, const void *bufptr, size_t size) {
    Recipient_1_inherit_TYPE_descriptor(td);
    return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
 
asn_enc_rval_t
Recipient_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
        int ilevel, enum xer_encoder_flags_e flags,
        asn_app_consume_bytes_f *cb, void *app_key) {
    Recipient_1_inherit_TYPE_descriptor(td);
    return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
 
static ber_tlv_tag_t asn_DEF_Recipient_tags_1[] = {
    (ASN_TAG_CLASS_APPLICATION | (182 << 2)),
    (ASN_TAG_CLASS_APPLICATION | (169 << 2)),
    (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
};
asn_TYPE_descriptor_t asn_DEF_Recipient = {
    "Recipient",
    "Recipient",
    Recipient_free,
    Recipient_print,
    Recipient_constraint,
    Recipient_decode_ber,
    Recipient_encode_der,
    Recipient_decode_xer,
    Recipient_encode_xer,
    0, 0,    /* No PER support, use "-gen-PER" to enable */
    0,    /* Use generic outmost tag fetcher */
    asn_DEF_Recipient_tags_1,
    sizeof(asn_DEF_Recipient_tags_1)
        /sizeof(asn_DEF_Recipient_tags_1[0]) - 2, /* 1 */
    asn_DEF_Recipient_tags_1,    /* Same as above */
    sizeof(asn_DEF_Recipient_tags_1)
        /sizeof(asn_DEF_Recipient_tags_1[0]), /* 3 */
    0,    /* No PER visible constraints */
    0, 0,    /* No members */
    0    /* No specifics */
};
 
 


Code Cpp:

/*
* Generated by asn1c-0.9.22 (http://lionet.info/asn1c)
* From ASN.1 module "TAP-MM-0311"
*     found in "TAP3.11_MM_ASN1.SPEC.asn1"
*     `asn1c -S/skeletons`
*/

 
#ifndef    _Recipient_H_
#define    _Recipient_H_
 
 
#include <asn_application.h>
 
/* Including external dependencies */
#include "PlmnId.h"
 
#ifdef __cplusplus
extern "C" {
#endif
 
/* Recipient */
typedef PlmnId_t     Recipient_t;
 
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_Recipient;
asn_struct_free_f Recipient_free;
asn_struct_print_f Recipient_print;
asn_constr_check_f Recipient_constraint;
ber_type_decoder_f Recipient_decode_ber;
der_type_encoder_f Recipient_encode_der;
xer_type_decoder_f Recipient_decode_xer;
xer_type_encoder_f Recipient_encode_xer;
 
#ifdef __cplusplus
}
#endif
 
#endif    /* _Recipient_H_ */
 



Voila merci d'avance
----------
up?

Dernière modification par maspero (27-05-2009 14:06:43)

14-07-2009 17:08:34  Re: Need help... #2
fabrizio (Membre)
Lieu: france
Inscrit le : 06-04-2008
Messages: 28
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
c'est quelque chose de courant en C pour décrire une interface (classe virtuel pure en C++) on utilise des pointeurs de fonction dans une structure.

Vouloir être de son temps, c'est déjà être dépassé.
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Need help...