Probleme de comprehension de code... :D

Signaler
Messages postés
2
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
27 mai 2009
-
Messages postés
2
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
27 mai 2009
-
Salut a tous,


j'espere que vous pourrez me filer un coup de main, parce que je galere salement.

Je dois concevoir un petit editeur qui recupere les donnees dans un
fichier TAP ( transfert acount protocol) pour cela j'ai a ma
disposition des grammaires dites "ASN1" qui permettent de decoder ce
fichier..

Jai donc une ribambelle de routine (.c et .h) qui me permettent de sortir les informations des fichiers TAP.


Probleme, je debute et je comprend rien a ce que ca raconte... :/


Est ce quelquun pourrait prendre le temps de m'en expliquer 1 svp


VOICI UN .C

/*
 * 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

#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 */
};

ET LE .H ASSOCIE

/*
 * 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

/* 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_ */

2 réponses

Messages postés
238
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
29 septembre 2011

Salut,
je ne sais pas si c'est vraiment utile de comprendre tout ce code !!
Il n'est pas préférable de juste savoir ce que fait "globalement" les fonctions des routines pour les utiliser?
Parfois, c'est vraiment compliqué de chercher à comprendre plutôt que de les utiliser !

The possible meet the impossible to become the possimpible !!
Messages postés
2
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
27 mai 2009

Le probleme c'est que je ne vois pas comment comprendre le fonctionnement global de ces routines sans comprendre le code en lui meme.

Merci quand meme.