changeset 1888:e5c6b5071990

*** empty log message ***
author baghdadi <baghdadi>
date Thu, 28 Oct 2004 17:54:08 +0000
parents 22f2cfa11696
children eddefa153e2b
files libsrc2/doc/minc_20.tex libsrc2/label.c libsrc2/minc2.h libsrc2/test/label-test.c
diffstat 4 files changed, 71 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libsrc2/doc/minc_20.tex
+++ b/libsrc2/doc/minc_20.tex
@@ -116,6 +116,9 @@
 WED OCT 27/2004 Leila\\*
 * Correct the order of parameters in range functions
 
+THU OCT 28/2004 Leila\\*
+* Added an extra function to retrive the number of defined labels
+
 \section{Introduction}
 
 
@@ -1942,7 +1945,7 @@
 MI_NOERROR on success, MI_ERROR on failure.
 \end{verbatim}
 
-\section{LABEL FUNCTIONS (3)}
+\section{LABEL FUNCTIONS (4)}
 \subsection{midefine\_label}
 \begin{verbatim}
 NAME
@@ -2021,6 +2024,29 @@
 MI_NOERROR on success, MI_ERROR on failure.
 \end{verbatim}
 
+\subsection{miget\_number\_of\_defined\_labels}
+\begin{verbatim}
+
+NAME
+
+miget_number_of_defined_labels - Retrive the number of defined labels
+
+SYNOPSIS
+
+#include <minc2.h>
+
+int miget_number_of_defined_labels ( mihandle_t      volume, 
+                                     int             *number_of_labels );
+
+DESCRIPTION
+
+This function returns the number of defined labels, if any, or zero otherwise.
+
+RETURN VALUE
+
+MI_NOERROR on success, MI_ERROR on failure.
+\end{verbatim}
+
 \section{RECORD FUNCTIONS (4)}
 \subsection{miget\_record\_name}
 \begin{verbatim}
--- a/libsrc2/label.c
+++ b/libsrc2/label.c
@@ -159,3 +159,32 @@
     return (MI_NOERROR);
 }
 
+int
+miget_number_of_defined_labels(mihandle_t volume, int *number_of_labels)
+{
+  int result;
+ 
+  if (volume == NULL) {
+    return (MI_ERROR);
+  }
+  if (volume->volume_class != MI_CLASS_LABEL) {
+    return (MI_ERROR);
+  }
+
+  if (volume->mtype_id <= 0) {
+    return (MI_ERROR);
+  }
+
+  H5E_BEGIN_TRY {
+    result = H5Tget_nmembers(volume->mtype_id);
+  } H5E_END_TRY;
+
+  if (result < 0) {
+    return (MI_ERROR);
+  }
+  else {
+    *number_of_labels = result;
+  }
+    
+  return (MI_NOERROR);
+}
--- a/libsrc2/minc2.h
+++ b/libsrc2/minc2.h
@@ -498,6 +498,7 @@
 extern int midefine_label(mihandle_t volume, int value, const char *name);
 extern int miget_label_name(mihandle_t volume, int value, char **name);
 extern int miget_label_value(mihandle_t volume, const char *name, int *value);
+extern int miget_number_of_defined_labels(mihandle_t volume, int *number_of_labels);
 
 #ifdef __cplusplus
 }
--- a/libsrc2/test/label-test.c
+++ b/libsrc2/test/label-test.c
@@ -34,6 +34,13 @@
 	return (-1);
     }
 
+    result = miget_number_of_defined_labels(hvol,&value);
+    if (result != MI_NOERROR) {
+	TESTRPT("Invalid return from miget_label_name", result);
+    }
+    else {
+      printf(" %d \n", value);
+    }
     /* Now test some stuff... */
 
     midefine_label(hvol, 0, "Black");
@@ -42,7 +49,13 @@
     midefine_label(hvol, 0xff0000, "Red");
     midefine_label(hvol, 0x00ff00, "Blue");
     midefine_label(hvol, 0x0000ff, "Green");
-
+    result = miget_number_of_defined_labels(hvol,&value);
+    if (result != MI_NOERROR) {
+	TESTRPT("Invalid return from miget_label_name", result);
+    }
+    else {
+      printf(" %d \n", value);
+    }
     result = miget_label_name(hvol, 0, &name);
     if (result != MI_NOERROR) {
 	TESTRPT("Invalid return from miget_label_name", result);