You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by ma...@apache.org on 2010/04/04 17:35:09 UTC

svn commit: r930704 - in /hadoop/avro/trunk: CHANGES.txt lang/c/src/avro.h lang/c/src/datum.c

Author: massie
Date: Sun Apr  4 15:35:08 2010
New Revision: 930704

URL: http://svn.apache.org/viewvc?rev=930704&view=rev
Log:
AVRO-501. missing function in C api to access array elements after decoding an array. Contributed by Bruce Mitchener.

Modified:
    hadoop/avro/trunk/CHANGES.txt
    hadoop/avro/trunk/lang/c/src/avro.h
    hadoop/avro/trunk/lang/c/src/datum.c

Modified: hadoop/avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/CHANGES.txt?rev=930704&r1=930703&r2=930704&view=diff
==============================================================================
--- hadoop/avro/trunk/CHANGES.txt (original)
+++ hadoop/avro/trunk/CHANGES.txt Sun Apr  4 15:35:08 2010
@@ -13,6 +13,9 @@ Avro 1.4.0 (unreleased)
 
     AVRO-491. Doing doubles and floats better in the ruby impl. (jmhodges)
 
+    AVRO-501. missing function in C api to access array elements after 
+    decoding an array. (Bruce Mitchener via massie)
+
   BUG FIXES
     AVRO-461. Skipping primitives in the ruby side (jmhodges)
 

Modified: hadoop/avro/trunk/lang/c/src/avro.h
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/c/src/avro.h?rev=930704&r1=930703&r2=930704&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/c/src/avro.h (original)
+++ hadoop/avro/trunk/lang/c/src/avro.h Sun Apr  4 15:35:08 2010
@@ -209,6 +209,7 @@ int avro_record_get(const avro_datum_t r
 		    avro_datum_t * value);
 int avro_map_get(const avro_datum_t datum, const char *key,
 		 avro_datum_t * value);
+int avro_array_get(const avro_datum_t datum, int64_t index, avro_datum_t * value);
 
 /* setters */
 int avro_string_set(avro_datum_t datum, const char *p);

Modified: hadoop/avro/trunk/lang/c/src/datum.c
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/c/src/datum.c?rev=930704&r1=930703&r2=930704&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/c/src/datum.c (original)
+++ hadoop/avro/trunk/lang/c/src/datum.c Sun Apr  4 15:35:08 2010
@@ -686,6 +686,23 @@ avro_datum_t avro_array(void)
 }
 
 int
+avro_array_get(const avro_datum_t array_datum, int64_t index, avro_datum_t * value)
+{
+    union {
+        st_data_t data;
+        avro_datum_t datum;
+    } val;
+	if (is_avro_datum(array_datum) && is_avro_array(array_datum)) {
+        const struct avro_array_datum_t * array = avro_datum_to_array(array_datum);
+        if (st_lookup(array->els, index, &val.data)) {
+            *value = val.datum;
+            return 0;
+        }
+    }
+    return EINVAL;
+}
+
+int
 avro_array_append_datum(const avro_datum_t array_datum,
 			const avro_datum_t datum)
 {