hxwinver.cpp

来自「symbian 下的helix player源代码」· C++ 代码 · 共 1,014 行 · 第 1/3 页

CPP
1,014
字号
        {
            rVersionInfo.dwMachineType = HX_MACHINE_TOOSLOW;
        }
        if (dwWinFlags & WF_CPU486)
        {
#ifdef _WIN16
            //=-=w16.3 Is586() asserts pentium.obj; must be fixed; #ifdefed to TRUE
            int nVerGreaterThan486 = TRUE;
#else
            int nVerGreaterThan486 = Is586();
#endif
            switch(nVerGreaterThan486)
            {
               case 0:  rVersionInfo.dwMachineType = HX_MACHINE_486;     break;
               case 1:  rVersionInfo.dwMachineType = HX_MACHINE_586;     break;
               case 2:  rVersionInfo.dwMachineType = HX_MACHINE_686;     break;
               default: rVersionInfo.dwMachineType = HX_MACHINE_UNKNOWN; break;
            }
        }
        if (dwWinFlags & WF_80x87)
        {
            rVersionInfo.bFPUAvailable = TRUE;
        }
#endif
    }


////////// END WINDOWS SPECIFIC //////////

////////// START MACINTOSH SPECIFIC CODE//////////
#elif defined(_MACINTOSH) || defined(_MAC_UNIX)


#if defined(_CARBON) || defined(_MAC_UNIX)
    rVersionInfo.dwPlatformId  = HX_PLATFORM_MACOT;
    rVersionInfo.dwMachineType = HX_MACHINE_PPC;
    rVersionInfo.bFPUAvailable = FALSE;
#else
    if (HasOpenTransport())
        rVersionInfo.dwPlatformId  = HX_PLATFORM_MACOT;
    else
        rVersionInfo.dwPlatformId  = HX_PLATFORM_MACTCP;

    if (IsPPC())
        rVersionInfo.dwMachineType = HX_MACHINE_PPC;
    else
        rVersionInfo.dwMachineType = HX_MACHINE_68K;
    rVersionInfo.bFPUAvailable = HasFPU();
#endif
    GetMacSystemVersion(&rVersionInfo.wMajorVersion,
                        &rVersionInfo.wMinorVersion,
                        &rVersionInfo.wReleaseVersion);


////////// END MACINTOSH SPECIFIC CODE////////////
#elif defined(_UNIX)

    struct utsname osInfo;   // structure to hold uname info
    if (uname(&osInfo) != -1)
    {
        double nVersionNum = atof(osInfo.release);  // version number
        char *pPeriod = NULL;
        rVersionInfo.wMajorVersion = (UINT16)nVersionNum;
        if (pPeriod = strchr(osInfo.release,'.'))
            rVersionInfo.wMinorVersion = atoi(pPeriod+1);

        // CODE FOR LINUX
#ifdef _LINUX
        // These are defaults, they are not 100% correct but they shouldn't be needed
        rVersionInfo.dwPlatformId = HX_PLATFORM_LINUX;
        rVersionInfo.dwMachineType = HX_MACHINE_586;

        // CODE FOR SOLARIS
#elif _SOLARIS
        // These are defaults, they are not 100% correct but they shouldn't be needed
        rVersionInfo.dwPlatformId = HX_PLATFORM_SOLARIS;
        rVersionInfo.dwMachineType = HX_MACHINE_SPARC;

        // do platform mapping
        if (!strcasecmp("SunOS",osInfo.sysname))
        {
            if (nVersionNum > 5.0)
                rVersionInfo.dwPlatformId = HX_PLATFORM_SOLARIS;
            else
                rVersionInfo.dwPlatformId = HX_PLATFORM_SUNOS;
        }

        // do machine mapping
        if (!strcasecmp("sun4m",osInfo.machine))
            rVersionInfo.dwMachineType = HX_MACHINE_SPARC;

        // CODE FOR IRIX
#elif _IRIX
        rVersionInfo.dwPlatformId = HX_PLATFORM_IRIX;
        rVersionInfo.dwMachineType = HX_MACHINE_MIPS;

        // CODE FOR SUNOS
#elif _SUNOS
        // These are defaults, they are not 100% correct but they shouldn't be needed
        rVersionInfo.dwPlatformId = HX_PLATFORM_SUNOS;
        rVersionInfo.dwMachineType = HX_MACHINE_SPARC;

        // do platform mapping
        if (!strcasecmp("SunOS",osInfo.sysname))
        {
            if (nVersionNum > 5.0)
                rVersionInfo.dwPlatformId = HX_PLATFORM_SOLARIS;
            else
                rVersionInfo.dwPlatformId = HX_PLATFORM_SUNOS;
        }

        // do machine mapping
        if (!strcasecmp("sun4m",osInfo.machine))
            rVersionInfo.dwMachineType = HX_MACHINE_SPARC;

#else
        rVersionInfo.dwPlatformId = HX_PLATFORM_UNKNOWN;
        rVersionInfo.dwMachineType = HX_MACHINE_UNKNOWN;
#endif

    }
    rVersionInfo.bFPUAvailable = TRUE;

////////// END UNIX SPECIFIC CODE////////////
#elif defined(_SYMBIAN)
    
    rVersionInfo.dwPlatformId  = HX_PLATFORM_SYMBIAN;
#ifdef __WINS__    
    rVersionInfo.dwMachineType = HX_MACHINE_SYMEMULATOR;
#else
    rVersionInfo.dwMachineType = HX_MACHINE_ARM;
#endif
    //XXGFW need to not hard code this.
    rVersionInfo.wMajorVersion   = 6;
    rVersionInfo.wMinorVersion   = 1;
    rVersionInfo.wReleaseVersion = 0;
    rVersionInfo.bFPUAvailable   = FALSE;
    
#elif defined(_OPENWAVE)
    
    rVersionInfo.dwPlatformId  = HX_PLATFORM_OPENWAVE;
#ifdef _OPENWAVE_SIMULATOR
    rVersionInfo.dwMachineType = HX_MACHINE_OWEMULATOR;
#else
    rVersionInfo.dwMachineType = HX_MACHINE_ARM;
#endif

    // XXXSAB need to not hard code this.
    rVersionInfo.wMajorVersion   = 6;
    rVersionInfo.wMinorVersion   = 1;
    rVersionInfo.wReleaseVersion = 0;
    rVersionInfo.bFPUAvailable   = FALSE;
    
#else


#error Add your platform code here!

#endif

    if (lpVersionInfo)
    {
        *lpVersionInfo = rVersionInfo;
    }
    return( rVersionInfo.dwPlatformId );
}


/*
 *      const char* HXGetOSName( ULONG32 nPlatformID)
 *
 *  PARAMETERS:
 *              nPlatformID:    A platformID (defined in hxwinver.h)
 *
 *  DESCRIPTION:
 *              Returns an OS string. Indicates the OS, not the build of
 *      the player.
 *
 *  RETURNS:
 *              pointer to static const buffer containing OS string.
 */
const char* HXGetOSName(ULONG32 nPlatformID)
{
    const char* strResult = NULL;

    switch (nPlatformID)
    {
       case (HX_PLATFORM_WIN16) :
           strResult="Win16";
           break;

       case (HX_PLATFORM_WIN32S) :
           strResult="Win32S";
           break;

       case (HX_PLATFORM_WIN95) :
           strResult="Win95";
           break;

       case (HX_PLATFORM_WIN98) :
           strResult="Win98";
           break;

       case (HX_PLATFORM_WINNT) :
           strResult="WinNT";
           break;

       case (HX_PLATFORM_MACOT) :
           strResult="MacOT";
           break;

       case (HX_PLATFORM_MACTCP) :
           strResult="MacTCP";
           break;

       case (HX_PLATFORM_LINUX) :
           strResult="Linux";
           break;

       case (HX_PLATFORM_SOLARIS) :
           strResult="Solaris";
           break;

       case (HX_PLATFORM_IRIX) :
           strResult="Irix";
           break;

       case (HX_PLATFORM_SUNOS) :
           strResult="SunOS";
           break;

       case (HX_PLATFORM_SYMBIAN):
           strResult="Symbian";
           break;

       case (HX_PLATFORM_UNKNOWN) :
       default:
           strResult="UNK";
           break;
    }

    return(strResult);
}


/*
 *      const char* HXGetMachName(ULONG32 nMachineType)
 *
 *  PARAMETERS:
 *              nMachineType:   A machine ID (defined in hxwinver.h)
 *
 *  DESCRIPTION:
 *              Returns a Machine string. Indicates the installed CPU,
 *      not the build of the player.
 *
 *  RETURNS:
 *              pointer to static const buffer containing Machine string.
 */
const char* HXGetMachName(ULONG32 nMachineType)
{
    const char* pProcName = NULL;

    switch (nMachineType)
    {
       case HX_MACHINE_486:
           pProcName = "486";
           break;

       case HX_MACHINE_586:
           pProcName = "586";
           break;

       case HX_MACHINE_686:
           pProcName = "686";
           break;

       case HX_MACHINE_PPC:
           pProcName = "PPC";
           break;

       case HX_MACHINE_68K:
           pProcName = "68K";
           break;

       case HX_MACHINE_ALPHA:
           pProcName = "Alpha";
           break;

       case HX_MACHINE_MIPS:
           pProcName = "Mips";
           break;

       case HX_MACHINE_SPARC:
           pProcName = "Sparc";
           break;

       case HX_MACHINE_TOOSLOW:
           pProcName = "SLOW";
           break;

       case HX_MACHINE_ARM:
           pProcName = "ARM";
           break;

       case HX_MACHINE_SYMEMULATOR:
           pProcName = "SymbianEmulator";
           break;
 
       case HX_MACHINE_UNKNOWN:
       default:
           pProcName = "UNK";
           break;
    }

    return(pProcName);
}

/*
 *      const char* HXGetVerEncodedName( HXVERSIONINFO* pVersionInfo,
 *                                      const char* pProductName, const char* pProductVer,
 *                                      const char* pDistCode)
 *
 *  PARAMETERS:
 *              pVersionInfo :  A pointer to the version info struct to receive the
 *                                              results.
 *
 *              pProductName :  A pointer to the name of the product like play16 for
 *                                              the 16bit compiled player or plug32 for the 32bit
 *                                              compiled plugin.
 *
 *              pProductVer :   A pointer to the string form of the version of the
 *                                              product like 2.0b3.
 *
 *              pDistCode       :       A pointer to the string form of the version of the
 *                                              distribution code like PN01 for the player.
 *
 *  DESCRIPTION:    

⌨️ 快捷键说明

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