universal get_arcs() for all interger type sizes


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@21 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/RELATIVE-OID.c b/skeletons/RELATIVE-OID.c
index 4fdad3d..37f557d 100644
--- a/skeletons/RELATIVE-OID.c
+++ b/skeletons/RELATIVE-OID.c
@@ -62,10 +62,10 @@
 
 
 int
-RELATIVE_OID_get_arcs_l(RELATIVE_OID_t *roid,
-	unsigned long *arcs, int arcs_slots) {
-	unsigned long arc_value;
-	int cur_arc = 0;
+RELATIVE_OID_get_arcs(RELATIVE_OID_t *roid,
+	void *arcs, unsigned int arc_type_size, unsigned int arc_slots) {
+	void *arcs_end = arcs + (arc_slots * arc_type_size);
+	int num_arcs = 0;
 	int startn = 0;
 	int i;
 
@@ -79,17 +79,20 @@
 		if((b & 0x80))			/* Continuation expected */
 			continue;
 
-		if(cur_arc < arcs_slots) {
-			if(OBJECT_IDENTIFIER_get_arc_l(&roid->buf[startn],
-					i - startn + 1, 0, &arc_value))
+		if(arcs < arcs_end) {
+			if(OBJECT_IDENTIFIER_get_single_arc(
+				&roid->buf[startn],
+					i - startn + 1, 0,
+					arcs, arc_type_size))
 				return -1;
-			arcs[cur_arc++] = arc_value;
+			arcs += arc_type_size;
+			num_arcs++;
 		}
 
 		startn = i + 1;
 	}
 
-	return cur_arc;
+	return num_arcs;
 }
 
 int