1 // Project MULTIPR, IOLS WP1.2.1 - EDF/CS
2 // Partitioning/decimation module for the SALOME v3.2 platform
5 * \file MULTIPR_Utils.hxx
7 * \brief Some useful miscellaneous tools.
9 * \author Olivier LE ROUX - CS, Virtual Reality Dpt
14 #ifndef MULTIPR_UTILS_HXX
15 #define MULTIPR_UTILS_HXX
31 * Removes all the pChar at the end of the string.
32 * \param pStr any valid C string ending with the char '\0'.
33 * \param pChar any char; SPACE by default.
34 * \return the same string where the ending spaces have been removed.
36 void trim(char* pStr, char pChar=' ');
40 * Returns true iff the given string starts by prefix.
41 * \param pStr any valid C string ending with the char '\0'.
42 * \param pStrPrefix any valid C string ending with the char '\0'.
43 * \return true iff the given string starts by prefix.
45 bool startsWith(const char* pStr, const char* pStrPrefix);
49 * Removes the extension (suffix) of a filename.
50 * Example: removeExtension("agregat100grains_12pas.med", ".med") -> "agregat100grains_12pas"
51 * \param pPilename any valid C string ending with the char '\0'.
52 * \param pExtension any valid C string ending with the char '\0'.
53 * \return the filename without extension.
55 std::string removeExtension(const char* pFilename, const char* pExtension);
59 * Returns the name of the file, excluding the path.
60 * Example: getFilenameWithoutPath("/home/data/agregat100grains_12pas.med") -> "agregat100grains_12pas.med"
61 * \param pPilename any valid C string ending with the char '\0'.
62 * \return the name of the file, excluding the path.
64 std::string getFilenameWithoutPath(const char* pFilename);
68 * Returns the path of the filename (which may be relative or absolute).
69 * Example: getPath("/home/data/agregat100grains_12pas.med") -> "/home/data/"
70 * \param pPilename any valid C string ending with the char '\0'.
71 * \return the path of the filename (which may be relative or absolute).
73 std::string getPath(const char* pFilename);
77 * Copies the given file into a directory.
78 * \param pFilename file to be copied.
79 * \param pDestDir destination directory.
81 void copyFile(const char* pFilename, const char* pDestDir);
85 * Prints all the elements of a 2D array.
86 * \param pData all the data (should contain pNumberOfElements * pDimOfElements values)
87 * \param pNumElt number of elements to display.
88 * \param pDimElt Dimension of elements.
89 * \param pPrefix string to display before each element.
92 const med_float* pData,
99 * Converts any float value to a string (remove unecessary 0).
100 * \param mV any float value.
102 std::string realToString(med_float mV);
106 * Returns the name of all meshes contained in a sequential MED file.
107 * \param pMEDfilename name of any valid sequential MED file; must not be NULL.
108 * \return a list of mesh names.
109 * \throw NullArgumentException if pMEDfilename is NULL.
110 * \throw IOException if any other error occurs while reading MED file.
112 std::vector<std::string> getListMeshes(const char* pMEDfilename);
116 * For each scalar field in a sequential MED file, returns its name and the related number of iterations.
117 * Do not returns info about vectorial fields (because, currently, decimation can only be performed on scalar fields).
118 * \param pMEDfilename name of any valid sequential MED file; must not be NULL.
119 * \return a list of (name, #iterations).
120 * \throw NullArgumentException if pMEDfilename is NULL.
121 * \throw IOException if any other error occurs while reading MED file.
123 std::vector<std::pair<std::string, int> > getListScalarFields(const char* pMEDfilename);
125 } // namespace MULTIPR
128 #endif // MULTIPR_UTILS_HXX