⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sbcachemisc.hpp

📁 OSB-PIK-OpenVXI-3.0.0源代码 “中国XML论坛 - 专业的XML技术讨论区--XML在语音技术中的应用”
💻 HPP
字号:
 /****************License************************************************  *  * Copyright 2000-2003.  ScanSoft, Inc.      *  * Use of this software is subject to notices and obligations set forth   * in the SpeechWorks Public License - Software Version 1.2 which is   * included with this software.   *  * ScanSoft is a registered trademark of ScanSoft, Inc., and OpenSpeech,   * SpeechWorks and the SpeechWorks logo are registered trademarks or   * trademarks of SpeechWorks International, Inc. in the United States   * and other countries.  *  ***********************************************************************/  // -----1=0-------2=0-------3=0-------4=0-------5=0-------6=0-------7=0-------8  #ifndef _SBCACHE_MISC_H__ #define _SBCACHE_MISC_H__  #include <string>                // For STL string and wstring classes #include <sys/types.h>  #include <sys/stat.h>            // For stat( )  #include "VXIcache.h"            // For VXIcacheResult #include "SBinetLogger.hpp"      // For SBinetLogger #include "SBcacheLog.h"          // For logging defines #include "SBtrdMutex.hpp"        // For SBtrd[...]Mutex #include "SBtrdRefCount.hpp"     // For SBtrdRefCount  // String types typedef std::string SBcacheNString; typedef std::basic_string<VXIchar> SBcacheString;  // Mutex for the cache typedef SBtrdMutex SBcacheMutex; typedef SBtrdReaderWriterMutex SBcacheReaderWriterMutex; typedef SBtrdMutexPool SBcacheMutexPool; typedef SBtrdRefCount SBcacheRefCount;  // Key for the cache typedef SBcacheString SBcacheKey;  // Path for a cache entry class SBcachePath { public:   static const char PATH_SEPARATOR;  public:   // Constructors and destructor   SBcachePath( ) : _path(), _baseLen(0) { }   SBcachePath (const SBcacheNString &base, const SBcacheNString &relative) :     _path(base + PATH_SEPARATOR + relative), _baseLen(base.length( )) { }   virtual ~SBcachePath( ) { }   bool operator == (const SBcachePath& p) const { return _path == p._path; }   bool operator != (const SBcachePath& p) const { return _path != p._path; }    // Create the directory tree for the path   VXIcacheResult CreateDirectories( ) const;    // Clear the path   void Clear( ) { _baseLen = 0; _path = ""; }    // Accessors   SBcacheNString::size_type length( ) const { return _path.length( ); }   const SBcacheNString & str( ) const { return _path; }   const char * const c_str( ) const { return _path.c_str( ); }  private:   SBcacheNString::size_type  _baseLen;   SBcacheNString             _path; };   // VXIcacheStream base class definition, read/write access to an entry struct VXIcacheStream : public SBinetLogger { public:   // Constructor and destructor   VXIcacheStream (VXIlogInterface      *log,  		  VXIunsigned           diagTagBase, 		  const SBcacheString  &moduleName, 		  const SBcacheKey     &key) :      SBinetLogger(MODULE_SBCACHE, log, diagTagBase), _moduleName(moduleName),     _key(key) { }   virtual ~VXIcacheStream( ) { }    // Read and write   virtual VXIcacheResult Read (VXIbyte          *buffer, 			       VXIulong          buflen, 			       VXIulong         *nread) = 0;    virtual VXIcacheResult Write (const VXIbyte   *buffer, 				VXIulong         buflen, 				VXIulong        *nwritten) = 0;    // Close   virtual VXIcacheResult Close(bool invalidate) = 0;    // Get the key name   const SBcacheKey &GetKey( ) const { return _key; }    // Get the module name   const SBcacheString &GetModuleName( ) const { return _moduleName; }  private:   SBcacheString _moduleName;   SBcacheKey    _key; };   #ifdef WIN32 #define WIN32_LEAN_AND_MEAN #include <windows.h>             // for CreateDirectory( )  typedef struct _stat SBcacheStatInfo; inline bool SBcacheStat(const SBcacheNString &path,  			SBcacheStatInfo *statInfo) {   return (_stat (path.c_str( ), statInfo) == 0 ? true : false); }  inline bool SBcacheIsDir(const SBcacheStatInfo &statInfo) { #ifdef _S_ISDIR   return (_S_ISDIR(statInfo->st_mode) ? true : false); #else   return ((statInfo.st_mode & _S_IFDIR) ? true : false); #endif }  inline bool SBcacheMkdir(const SBcacheNString &path) {   return (CreateDirectory (path.c_str( ), NULL) ? true : false); }  #else /* ! WIN32 */  typedef struct stat SBcacheStatInfo; inline bool SBcacheStat(const SBcacheNString &path,  			SBcacheStatInfo *statInfo) {   return (stat (path.c_str( ), statInfo) == 0 ? true : false); }  inline bool SBcacheIsDir(const SBcacheStatInfo &statInfo) { #ifdef S_ISDIR   return (S_ISDIR(statInfo.st_mode) ? true : false); #else   return ((statInfo.st_mode & S_IFDIR) ? true : false); #endif }  #ifdef S_IRWXU #define SBCACHE_DIR_MASK (S_IRWXU|S_IRWXG|S_IRWXO) #else #edfine SBCACHE_DIR_MASK 777 #endif  inline bool SBcacheMkdir(const SBcacheNString &path) {   return (mkdir (path.c_str( ), SBCACHE_DIR_MASK) == 0 ? true : false); }  #endif /* WIN32 */  #endif /* include guard */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -