Пример #1
0
/****if* H5Of/h5oopen_by_idx_c
 * NAME
 *  h5oopen_by_idx_c
 * PURPOSE
 *  Calls H5Oopen_by_idx_c
 * INPUTS
 *  loc_id        - A file or group identifier.
 *  group_name    - Name of group, relative to loc_id, in which object is located.
 *  group_namelen - Length of group_name
 *  index_type    - Type of index by which objects are ordered.
 *  order         - Order of iteration within index.
 *  n             - Object to open.
 *  lapl_id       - Link access property list.
 * OUTPUTS
 *   obj_id       - An object identifier for the opened object.
 * RETURNS
 *  0 on success, -1 on failure
 * AUTHOR
 *  M. Scot Breitenfeld
 *  May 17, 2012
 * SOURCE
*/
int_f
nh5oopen_by_idx_c (hid_t_f *loc_id, _fcd  group_name, size_t_f *group_namelen, 
		       int_f *index_type, int_f *order, hsize_t_f *n, hid_t_f *obj_id, hid_t_f *lapl_id)
/******/
{
  char *c_group_name = NULL;     /* Buffer to hold C string */
  int_f ret_value = 0;
  H5_index_t c_index_type;
  H5_iter_order_t c_order;
  
  /*
   * Convert FORTRAN string to C string
   */
  if((c_group_name = HD5f2cstring( group_name, (size_t)*group_namelen)) == NULL)
    HGOTO_DONE(FAIL);

  c_index_type = (H5_index_t)*index_type;
  c_order = (H5_iter_order_t)*order;

  /*
   * Call H5Oopen_by_idx function.
   */
  if((*obj_id =(hid_t_f)H5Oopen_by_idx((hid_t)*loc_id, c_group_name, c_index_type, c_order, (hsize_t)*n, (hid_t)*lapl_id)) < 0)
    HGOTO_DONE(FAIL);

 done:
  if(c_group_name)
    HDfree(c_group_name);
  return ret_value;
}
Пример #2
0
    void DCGroup::getEntriesInternal(H5Handle base, const std::string baseGroup,
            std::string baseName, VisitObjCBType *param)
    throw (DCException)
    {
        H5G_info_t group_info;
        H5Gget_info(base, &group_info);

        for (size_t i = 0; i < group_info.nlinks; ++i)
        {
            std::string currentBaseName = baseName;
            std::string currentEntryName = "";

            H5O_info_t obj_info;
            H5Oget_info_by_idx(base, ".", H5_INDEX_NAME, H5_ITER_INC, i, &obj_info, H5P_DEFAULT);

            if (param->entries)
            {
                ssize_t len_name = H5Lget_name_by_idx(base, ".", H5_INDEX_NAME,
                        H5_ITER_INC, i, NULL, 0, H5P_LINK_ACCESS_DEFAULT);
                char *link_name_c = new char[len_name + 1];
                H5Lget_name_by_idx(base, ".", H5_INDEX_NAME,
                        H5_ITER_INC, i, link_name_c, len_name + 1, H5P_LINK_ACCESS_DEFAULT);

                currentEntryName = std::string(link_name_c) + std::string("/");
                currentBaseName += currentEntryName;
                delete[] link_name_c;
            }

            if (obj_info.type == H5O_TYPE_GROUP)
            {
                hid_t group_id = H5Oopen_by_idx(base, ".", H5_INDEX_NAME, H5_ITER_INC, i, H5P_DEFAULT);
                getEntriesInternal(group_id, baseGroup, currentBaseName, param);
                H5Oclose(group_id);
            }

            if (obj_info.type == H5O_TYPE_DATASET)
            {
                if (param->entries)
                    param->entries[param->count].name = currentEntryName;

                param->count++;
            }
        }
    }
Пример #3
0
/*
 * Class:     hdf_hdf5lib_H5
 * Method:    _H5Oopen_by_idx
 * Signature: (JLjava/lang/String;IIJJ)J;
 */
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Oopen_1by_1idx
    (JNIEnv *env, jclass clss, jlong loc_id, jstring name,
        jint index_field, jint order, jlong link_n, jlong lapl_id)
{
    hid_t       retVal = -1;
    const char *oName;

    PIN_JAVA_STRING(name, oName);
    if (oName != NULL) {
        retVal = H5Oopen_by_idx((hid_t)loc_id, oName, (H5_index_t)index_field, (H5_iter_order_t)order, (hsize_t)link_n, (hid_t)lapl_id );

        UNPIN_JAVA_STRING(name, oName);

        if (retVal < 0)
            h5libraryError(env);
    }

    return (jlong)retVal;
} /* end Java_hdf_hdf5lib_H5__1H5Oopen_1by_1idx */
Пример #4
0
/*
 * Class:     hdf_hdf5lib_H5
 * Method:    _H5Oopen_by_idx
 * Signature: (JLjava/lang/String;IIJJ)J;
 */
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Oopen_1by_1idx
    (JNIEnv *env, jclass clss, jlong loc_id, jstring name,
        jint index_field, jint order, jlong link_n, jlong lapl_id)
{
    const char *grpName = NULL;
    hid_t       retVal = H5I_INVALID_HID;

    UNUSED(clss);

    if (NULL == name)
        H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Oopen_by_idx: object name is NULL");

    PIN_JAVA_STRING(ENVONLY, name, grpName, NULL, "H5Oopen_by_idx: object name not pinned");

    if ((retVal = H5Oopen_by_idx((hid_t)loc_id, grpName, (H5_index_t)index_field, (H5_iter_order_t)order, (hsize_t)link_n, (hid_t)lapl_id)) < 0)
        H5_LIBRARY_ERROR(ENVONLY);

done:
    if (grpName)
        UNPIN_JAVA_STRING(ENVONLY, name, grpName);

    return (jlong)retVal;
} /* end Java_hdf_hdf5lib_H5__1H5Oopen_1by_1idx */
Пример #5
0
SWIGEXPORT hid_t JNICALL Java_permafrost_hdf_libhdf_ObjectLibExtensionJNI_JHOopen_1by_1idx(
	JNIEnv *jenv, 
	jclass jcls, 
	jint loc_id, 
	jstring group_name,
	jint idx_type, 
	jint order, 
	jlong n, 
	jint lapl_id, 
	jintArray type, 
	jobjectArray name
	) {
		jint sz = 0;
		char* pGroupName = NULL;
		hid_t obj_id = -1;
		jint jiType;
		char* pName = NULL;
		char* tmpName = NULL;
		const int szName = 64;
		int lenName = 0;
		jstring jname;

		if (!group_name) {
			SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, "Null group name.");
			return (-1);
		} else if (!type) {
			SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, "Null type array.");
			return (-1);
		} else if (!name) {
			SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, "Null object name array.");
			return (-1);
		}
		sz = (*jenv)->GetArrayLength(jenv, type);
		if (sz < 1) {
			SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, "Zero-length type array.");
			return (-1);
		}
		sz = (*jenv)->GetArrayLength(jenv, name);
		if (sz < 1) {
			SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, "Zero-length object name array.");
			return (-1);
		}

		pGroupName = (char *)(*jenv)->GetStringUTFChars(jenv, group_name, 0);
		if (!pGroupName) return -1;
		
		obj_id = H5Oopen_by_idx(
			(hid_t)loc_id, 
			pGroupName, 
			(H5_index_t) idx_type, 
			(H5_iter_order_t) order,
			(hsize_t) n, 
			(hid_t) lapl_id
			);

		if (pGroupName) (*jenv)->ReleaseStringUTFChars(jenv, group_name, (const char *) pGroupName);
		if (obj_id <= 0) return (obj_id);

		jiType = (jint) H5Iget_type(obj_id);
		(*jenv)->SetIntArrayRegion(jenv, type, 0, 1, &jiType);

		pName = (char*) calloc(szName, sizeof(char));
		lenName = H5Iget_name(obj_id, pName, szName-1);
		if (lenName >= szName) {
			char* tmpName = (char*) realloc(pName, sizeof(char)*lenName+1);
			if (!tmpName) {
				free(pName);
				pName = NULL;
				H5Oclose(loc_id);
				return (-1);
			}
			pName = tmpName;
			lenName = H5Iget_name(obj_id, pName, lenName);
		}
		jname = (*jenv)->NewStringUTF(jenv, pName);
		(*jenv)->SetObjectArrayElement(jenv, name, 0, jname);
		
		free(pName);
		
		return (obj_id);
}