Changeset 1375 for trunk/bindings


Ignore:
Timestamp:
29/10/09 10:59:48 (3 years ago)
Author:
Mark Koennecke
Message:
  • Implemented NXgetpath for C, C++, Java, SWIG and F77, refs #199
  • Python still needs to be done but I think python has an own implementation.
  • I added to the test code: now as they are based on text comparison all of them fail :-(
Location:
trunk/bindings
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/bindings/cpp/NeXusFile.cpp

    r1264 r1375  
    230230    throw Exception(msg.str(), status); 
    231231  } 
     232} 
     233 
     234std::string File::getPath(){ 
     235  char cPath[1024]; 
     236 
     237  memset(cPath,0,1024*sizeof(char)); 
     238  NXstatus status = NXgetpath(this->m_file_id,cPath, 1024); 
     239  if (status != NX_OK) { 
     240    stringstream msg; 
     241    msg << "NXgetpath() failed"; 
     242    throw Exception(msg.str(), status); 
     243  } 
     244  return std::string(cPath); 
    232245} 
    233246 
  • trunk/bindings/cpp/NeXusFile.hpp

    r1263 r1375  
    191191     */ 
    192192    void openGroupPath(const std::string& path); 
     193    /** 
     194     * Get the path into the current file 
     195     * \return A unix like path string pointing to the current  
     196     *         position in the file 
     197     */ 
     198    std::string  getPath(); 
    193199 
    194200    /** 
  • trunk/bindings/f77/napif.f

    r848 r1375  
    121121      CALL EXTRACT_STRING(IPATH, 256, PATH) 
    122122      NXOPENPATH = NXIOPENPATH(FILEID, IPATH) 
     123      END 
     124 
     125      INTEGER FUNCTION NXGETPATH(FILEID, PATH) 
     126      INTEGER FILEID(*),NXIGETPATH, NXIFGETPATH 
     127      CHARACTER*(*) PATH 
     128      INTEGER*1 IPATH(1024) 
     129      INTEGER PLEN 
     130      EXTERNAL NXIFGETPATH 
     131      PLEN = 1024 
     132      NXGETPATH = NXIFGETPATH(FILEID,IPATH,PLEN) 
     133      CALL REPLACE_STRING(PATH,IPATH) 
    123134      END 
    124135 
  • trunk/bindings/f77/napif.inc

    r952 r1375  
    3636C *** large enough to hold an NXhandle structure 
    3737      INTEGER NXHANDLESIZE 
    38       PARAMETER(NXHANDLESIZE=5120) 
     38C      PARAMETER(NXHANDLESIZE=5120) 
     39      PARAMETER(NXHANDLESIZE=9058) 
    3940C *** NXLINKSIZE is (at least) the size of an INTEGER*4 array that can hold 
    4041C *** an NXlink structure: we'll assume 64bit alignment of structure members for safety 
     
    7980     +       NXINITATTRDIR, NXFLUSH, NXCOMPMAKEDATA, NXOPENPATH, 
    8081     +       NXSETNUMBERFORMAT, NXOPENGROUPPATH, NXOPENSOURCEGROUP, 
    81      +       NXMAKENAMEDLINK 
     82     +       NXMAKENAMEDLINK, NXGETPATH 
    8283      LOGICAL NXSAMEID 
    8384      EXTERNAL NXOPEN, NXCLOSE, NXMAKEGROUP, NXOPENGROUP, NXCLOSEGROUP, 
     
    9192     +       NXOPENPATH,NXSETNUMBERFORMAT, NXOPENGROUPPATH, 
    9293     +       NXOPENSOURCEGROUP, NXINQUIREFILE, NXISEXTERNALGROUP,  
    93      +       NXLINKEXTERNAL, NXMAKENAMEDLINK 
     94     +       NXLINKEXTERNAL, NXMAKENAMEDLINK, NXGETPATH 
  • trunk/bindings/idl/NeXusIDL-API.c

    r1224 r1375  
    217217 
    218218  return IDL_GettmpInt(status); 
     219} 
     220/*====================================================================== 
     221 * NXgetpath 
     222 * string = NXgetpath(file_id) 
     223 *======================================================================*/ 
     224static IDL_VPTR NXgetpath_this(int argc, IDL_VPTR *argv) 
     225{ 
     226  int fileid; 
     227  NXhandle hHandle; 
     228  int iHandle, status; 
     229  char path[1024]; 
     230 
     231  if (argc != 1) { 
     232        IDL_Message(IDL_M_NAMED_GENERIC, IDL_MSG_INFO, "One argument expected"); 
     233        return IDL_StrToSTRING("One argument expected"); 
     234        } 
     235 
     236  IDL_ENSURE_SCALAR(argv[0]); 
     237 
     238  fileid = (int)IDL_LongScalar(argv[0]); 
     239 
     240  if(HHCheckIfHandleExists(fileid) == -1) { 
     241        IDL_Message(IDL_M_NAMED_GENERIC, IDL_MSG_INFO, "Unknown file id"); 
     242        return IDL_StrToSTRING("ERROR: Unknown file ID"); 
     243        } 
     244 
     245  hHandle = HHGetPointer(fileid); 
     246  NXMSetError(NULL,idlError); 
     247 
     248  status = NXgetpath(hHandle,path,1024); 
     249  if(status == NX_ERROR){ 
     250        IDL_Message(IDL_M_NAMED_GENERIC, IDL_MSG_INFO, nexusError); 
     251        return IDL_StrToSTRING(nexusError); 
     252  } 
     253   return IDL_StrToSTRING(path); 
    219254} 
    220255 
     
    25492584    { NXsetnumberformat_this, "NXSETNUMBERFORMAT", 0, IDL_MAXPARAMS, 0, 0}, 
    25502585    { NXopenpath_this, "NXOPENPATH", 0, IDL_MAXPARAMS, 0, 0}, 
    2551         { NXopengrouppath_this, "NXOPENGROUPPATH", 0, IDL_MAXPARAMS, 0, 0}, 
     2586    { NXopengrouppath_this, "NXOPENGROUPPATH", 0, IDL_MAXPARAMS, 0, 0}, 
     2587    { NXgetpath_this, "NXGETPATH", 0, IDL_MAXPARAMS, 0, 0}, 
    25522588    { NXmakegroup_this, "NXMAKEGROUP", 0, IDL_MAXPARAMS, 0, 0}, 
    25532589    { NXopengroup_this, "NXOPENGROUP", 0, IDL_MAXPARAMS, 0, 0}, 
  • trunk/bindings/idl/NeXusIDL-API.dlm

    r1153 r1375  
    88FUNCTION        NXOPENPATH 0    IDL_MAXPARAMS 
    99FUNCTION        NXOPENGROUPPATH 0       IDL_MAXPARAMS 
     10FUNCTION        NXGETPATH       0       IDL_MAXPARAMS 
    1011FUNCTION        NXMAKEGROUP 0   IDL_MAXPARAMS 
    1112FUNCTION        NXCLOSEGROUP 0  IDL_MAXPARAMS 
  • trunk/bindings/java/native/NexusFile.c

    r1282 r1375  
    2323 
    2424   Added NXinitattrdir and NXinitgroupdir, Mark Koennecke, October 2009 
     25 
     26   Added NXgetpath, Mark Koennecke, October 2009 
    2527 
    2628   IMPLEMENTATION NOTES 
     
    307309    (*env)->ReleaseStringUTFChars(env,path, nxpath); 
    308310} 
     311/*-----------------------------------------------------------------------*/ 
     312JNIEXPORT jstring JNICALL Java_org_nexusformat_NexusFile_nxgetpath 
     313  (JNIEnv *env, jobject obj, jint handle) 
     314{ 
     315    NXhandle nxhandle; 
     316    int iRet; 
     317    char path[1024]; 
     318 
     319    /* set error handler */ 
     320    NXMSetError(env,JapiError); 
     321 
     322    /* exchange the Java handler to a NXhandle */ 
     323    nxhandle =  (NXhandle)HHGetPointer(handle); 
     324 
     325    iRet = NXgetpath(nxhandle, path,1024); 
     326     
     327    return (*env)->NewStringUTF(env,path); 
     328} 
     329 
    309330/*------------------------------------------------------------------------ 
    310331                     nxclosegroup 
  • trunk/bindings/java/org/nexusformat/NeXusFileInterface.java

    r848 r1375  
    8989    public void opengrouppath(String path) throws  
    9090                           NexusException; 
     91    /** 
     92     * return the current path into the NeXus file in the  
     93     * form of a Unix path string. 
     94     * @return A unix path string 
     95     */ 
     96    public String getpath() throws NexusException; 
    9197    /** 
    9298      * closegroup closes access to the current group and steps down one 
  • trunk/bindings/java/org/nexusformat/NexusFile.java

    r1282 r1375  
    186186    protected native void nxopengrouppath(int handle, String path); 
    187187    protected native void nxclosegroup(int handle); 
     188    protected native String nxgetpath(int handle); 
    188189 
    189190    /**  
     
    246247        nxopengrouppath(handle,path); 
    247248    } 
    248  
     249    /** 
     250     * return the current path into the NeXus file in the  
     251     * form of a Unix path string. 
     252     * @return A unix path string 
     253     */ 
     254    public String getpath() throws NexusException  
     255    { 
     256        if(handle < 0) throw new NexusException("NAPI-ERROR: File not open"); 
     257        return nxgetpath(handle); 
     258    } 
    249259    /** 
    250260      * closegroup closes access to the current group and steps down one 
  • trunk/bindings/swig/nxinter.i

    r952 r1375  
    5757extern int nx_openpath(void *handle, char *path); 
    5858extern int nx_opengrouppath(void *handle, char *path); 
     59extern char *nx_getpath(void *handle); 
    5960extern int nx_closegroup(void *handle); 
    6061extern char *nx_getnextentry(void *handle, char separator); 
  • trunk/bindings/swig/nxinterhelper.c

    r942 r1375  
    114114} 
    115115/*--------------------------------------------------------------------*/ 
     116char *nx_getpath(void *handle){ 
     117  int status; 
     118  NXhandle hfil; 
     119  char path[1024]; 
     120 
     121  hfil = (NXhandle)handle; 
     122  status = NXgetpath(hfil,path,1024); 
     123  if(status == NX_OK){ 
     124    return strdup(path); 
     125  } else { 
     126    return strdup("Error in NXgetpath"); 
     127  } 
     128} 
     129/*--------------------------------------------------------------------*/ 
    116130int nx_closegroup(void *handle){ 
    117131  int status; 
  • trunk/bindings/swig/nxinterhelper.h

    r942 r1375  
    2323int nx_opengrouppath(void *handle, char *path); 
    2424int nx_openpath(void *handle, char *path); 
     25extern char *nx_getpath(void *handle); 
    2526int nx_closegroup(void *handle); 
    2627char *nx_getnextentry(void *handle, char separator); 
Note: See TracChangeset for help on using the changeset viewer.