Changeset 1797 for trunk


Ignore:
Timestamp:
16/01/12 10:06:47 (4 months ago)
Author:
Freddie Akeroyd
Message:
  • Fix issue of only writing links to output HDF5 files
  • Also speed up conversion to definition by using NXgetslab/NXputslab

Refs #320,#321

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/applications/NXconvert/nxconvert_common.cpp

    r1790 r1797  
    150150        return NX_ERROR; 
    151151   } 
    152    if (nx_format != NXACC_CREATE && nx_format != NXACC_CREATE4) 
    153    { 
    154152/* now create any required links */ 
    155153       for(size_t i=0; i<links_to_make.size(); i++) 
     
    177175            } 
    178176        } 
    179    } 
    180177/* Close the input and output files */ 
    181178   if (NXclose (&outId) != NX_OK) 
     
    190187{  
    191188   
    192    int status, dataType, dataRank, dataDimensions[NX_MAXRANK];      
     189   int i, status, dataType, dataRank, dataDimensions[NX_MAXRANK];      
     190   static const int slab_start[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 
     191   static const int MAX_DEF_ARRAY_ELEMENTS_PER_DIM = 3; /* doesn't work yet - only 1 element is written */ 
    193192   NXname name, nxclass; 
    194193   void *dataBuffer; 
     
    211210            { 
    212211                if (NXgetinfo (inId, &dataRank, dataDimensions, &dataType) != NX_OK) return NX_ERROR; 
    213                 if (NXmalloc (&dataBuffer, dataRank, dataDimensions, dataType) != NX_OK) return NX_ERROR; 
    214                 if (NXgetdata (inId, dataBuffer)  != NX_OK) return NX_ERROR; 
    215212                if (NXmakedata (outId, name, dataType, dataRank, dataDimensions) != NX_OK) return NX_ERROR; 
    216213                if (NXopendata (outId, name) != NX_OK) return NX_ERROR; 
     214                if ( is_definition && (dataType != NX_CHAR) ) 
     215                { 
     216                    for(i=0; i<dataRank; ++i) 
     217                    { 
     218                        if (dataDimensions[i] > MAX_DEF_ARRAY_ELEMENTS_PER_DIM) 
     219                        { 
     220                            dataDimensions[i] = MAX_DEF_ARRAY_ELEMENTS_PER_DIM; 
     221                        } 
     222                    } 
     223                    if (NXmalloc (&dataBuffer, dataRank, dataDimensions, dataType) != NX_OK) return NX_ERROR; 
     224                    if (NXgetslab (inId, dataBuffer, slab_start, dataDimensions)  != NX_OK) return NX_ERROR; 
     225                    if (NXputslab (outId, dataBuffer, slab_start, dataDimensions) != NX_OK) return NX_ERROR; 
     226                } 
     227                else 
     228                { 
     229                    if (NXmalloc (&dataBuffer, dataRank, dataDimensions, dataType) != NX_OK) return NX_ERROR; 
     230                    if (NXgetdata (inId, dataBuffer)  != NX_OK) return NX_ERROR; 
     231                    if (NXputdata (outId, dataBuffer) != NX_OK) return NX_ERROR; 
     232                } 
    217233                if (WriteAttributes (is_definition, 0) != NX_OK) return NX_ERROR; 
    218                 if (NXputdata (outId, dataBuffer) != NX_OK) return NX_ERROR; 
     234                if (NXclosedata (outId) != NX_OK) return NX_ERROR; 
    219235                if (NXfree((void**)&dataBuffer) != NX_OK) return NX_ERROR; 
    220                 if (NXclosedata (outId) != NX_OK) return NX_ERROR; 
    221236                remove_path(name); 
    222237            } 
  • trunk/include/napi.h

    r1792 r1797  
    593593   * \ingroup c_readwrite 
    594594   */ 
    595 extern  NXstatus  NXgetslab(NXhandle handle, void* data, int start[], int size[]); 
     595extern  NXstatus  NXgetslab(NXhandle handle, void* data, const int start[], const int size[]); 
    596596 
    597597 
     
    773773   * \ingroup c_memory 
    774774   */  
    775 extern  NXstatus  NXmalloc(void** data, int rank, int dimensions[], int datatype); 
     775extern  NXstatus  NXmalloc(void** data, int rank, const int dimensions[], int datatype); 
    776776 
    777777  /** 
    778778   * @copydoc NXmalloc() 
    779779   */  
    780 extern  NXstatus  NXmalloc64(void** data, int rank, int64_t dimensions[], int datatype); 
     780extern  NXstatus  NXmalloc64(void** data, int rank, const int64_t dimensions[], int datatype); 
    781781 
    782782 
  • trunk/src/napi.c

    r1792 r1797  
    10921092   
    10931093  NXstatus  NXmalloc (void** data, int rank,  
    1094                                    int dimensions[], int datatype) 
     1094                                   const int dimensions[], int datatype) 
    10951095  { 
    10961096          int status; 
     
    11021102 
    11031103  NXstatus  NXmalloc64 (void** data, int rank,  
    1104                                    int64_t dimensions[], int datatype) 
     1104                                   const int64_t dimensions[], int datatype) 
    11051105  { 
    11061106    int i; 
     
    12931293 
    12941294  NXstatus  NXgetslab (NXhandle fid, void *data,  
    1295                                     int iStart[], int iSize[]) 
     1295                                    const int iStart[], const int iSize[]) 
    12961296  { 
    12971297          int i, iType, rank; 
Note: See TracChangeset for help on using the changeset viewer.