X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=libasn1compiler%2Fasn1c_lang.c;fp=libasn1compiler%2Fasn1c_lang.c;h=fa07540a08929a235742144bc3f1c0b3c4d463d1;hb=70ee6fc793ec8e828067a3569849b6c216054497;hp=0000000000000000000000000000000000000000;hpb=59f84608ec15c016958a6e0e0ddd813f376c0925;p=com%2Fasn1c.git diff --git a/libasn1compiler/asn1c_lang.c b/libasn1compiler/asn1c_lang.c new file mode 100644 index 0000000..fa07540 --- /dev/null +++ b/libasn1compiler/asn1c_lang.c @@ -0,0 +1,32 @@ +#include "asn1c_internal.h" +#include "asn1c_C.h" + +asn1_language_map_t asn1_lang_map[AMT_EXPR_META_MAX][ASN_EXPR_TYPE_MAX]; + +int +asn1c_with_language(asn1c_target_language_e lang) { + asn1_language_map_t *lptr; + int lsize; + if(lang != ASN1C_LANGUAGE_C) { + errno = EINVAL; + return -1; + } + + lptr = asn1_lang_C; + lsize = sizeof(asn1_lang_C)/sizeof(asn1_lang_C[0]); + + memset(asn1_lang_map, 0, sizeof(asn1_lang_map)); + + for(; lsize && lptr->expr_match; lsize--, lptr++) { + assert(lptr->meta_match > 0); + assert(lptr->meta_match < AMT_EXPR_META_MAX); + assert(lptr->expr_match > 0); + assert(lptr->expr_match < ASN_EXPR_TYPE_MAX); + + asn1_lang_map[lptr->meta_match][lptr->expr_match] + = *lptr; + } + + return 0; +} +