• Bi-Ruei, Chiu's avatar
    Fix the problem when ActualParameter to parameterized type is a Type · d64be68b
    Bi-Ruei, Chiu authored
    When ActualParameter to a parameterized type is a Type, commit
    59b9e705 will produce C struct types using ActualParameter,
    which are conflict with the C struct types for these Types themselves.
    
    For example, the following typedef has duplicate definition of
    UCI_OnPUSCH_t :
    
    typedef struct UCI_OnPUSCH {
    	UCI_OnPUSCH_PR present;
    	union UCI_OnPUSCH_u {
    		NULL_t	 release;
    		UCI_OnPUSCH_t	 setup;
    	} choice;
    
    	/* Context for parsing across buffer boundaries */
    	asn_struct_ctx_t _asn_ctx;
    } UCI_OnPUSCH_t;
    
    With this commit, if ActualParameter is a Type, then prefix it
    with Parameterized Type name.
    
    typedef struct SetupRelease_UCI_OnPUSCH {
    	SetupRelease_UCI_OnPUSCH_PR present;
    	union SetupRelease_UCI_OnPUSCH_u {
    		NULL_t	 release;
    		UCI_OnPUSCH_t	 setup;
    	} choice;
    
    	/* Context for parsing across buffer boundaries */
    	asn_struct_ctx_t _asn_ctx;
    } SetupRelease_UCI_OnPUSCH_t;
    
    As for ActualParameter is ObjectSet, used in S1AP ... etc, it doesn't
    prefix generated typedefs for keeping names shorter.
    
    This commit can replace item 3 of
    
    https://github.com/vlm/asn1c/issues/282#issuecomment-390838895
    
    which solve part of #282.
    d64be68b
asn1fix_param.c 6.52 KB