1 /*- 2 * Copyright (c) 2003, 2004 Lev Walkin <vlm@lionet.info>. All rights reserved. 3 * Redistribution and modifications are permitted subject to BSD license. 4 */ 5 #include "asn1/asn1c/asn_internal.h" 6 #include "asn1/asn1c/asn_SEQUENCE_OF.h" 7 8 typedef A_SEQUENCE_OF(void) asn_sequence; 9 10 void asn_sequence_del(void * asn_sequence_of_x,int number,int _do_free)11asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) { 12 asn_sequence *as = (asn_sequence *)asn_sequence_of_x; 13 14 if(as) { 15 void *ptr; 16 int n; 17 18 if(number < 0 || number >= as->count) 19 return; /* Nothing to delete */ 20 21 if(_do_free && as->free) { 22 ptr = as->array[number]; 23 } else { 24 ptr = 0; 25 } 26 27 /* 28 * Shift all elements to the left to hide the gap. 29 */ 30 --as->count; 31 for(n = number; n < as->count; n++) 32 as->array[n] = as->array[n+1]; 33 34 /* 35 * Invoke the third-party function only when the state 36 * of the parent structure is consistent. 37 */ 38 if(ptr) as->free(ptr); 39 } 40 } 41 42