// BasicFunc.cpp: implementation of the CBasicFunc class.
//
//////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include "BasicFunc.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CBasicFunc::CBasicFunc()
{
}
CBasicFunc::~CBasicFunc()
{
}
bool CBasicFunc::XIsGraph(char c)
{
return (c < 0 ||isgraph(c));
}
bool CBasicFunc::XIsSectionGraph( char c )
{
return (c < 0 ||(isgraph(c) && c != '[' && c != ']'));
}
bool CBasicFunc::IsHeadEquals(const char *lpszLeft, const char *lpszRight)
{
bool bRet = false;
const char *szStart = strstr(lpszLeft, lpszRight);
const char *szSStart = (char*)lpszLeft, *szEStart = NULL;
if (szStart != NULL)
{
szEStart = szStart + strlen(lpszRight);
for (;szSStart < szStart;szSStart ++)
{
if (XIsGraph(*szSStart) && *szSStart != '[')
{
return false;
}
}
for (;(*szEStart) != '\0'&&(*szEStart) != '=' && (*szEStart) != ':'; szEStart ++)
{
if (XIsGraph(*szEStart) && *szEStart != ']')
{
return false;
}
}
bRet = true;
}
return bRet;
}
bool CBasicFunc::IsHeadChar(const char *lpszLine,char cHead, char **pHead)
{
char *strStart = (char*)lpszLine;
*pHead = NULL;
for (; !XIsGraph(*strStart); strStart ++)
{
}
if (XIsGraph(*strStart))
{
*pHead = strStart;
}
return *strStart == cHead;
}
int CBasicFunc::TrimString(char *szDest, int nLen, char *szSrc)
{
//Remove All Invisible chars.
int nRet = 0, nDestIndex = 0;
char *szTempStart = szSrc, *szTempEnd = szSrc + strlen(szSrc) - 1;
//forward
for (;!XIsGraph(*szTempStart);szTempStart ++);
//afterward
for (;!XIsGraph(*szTempEnd);*szTempEnd = '\0', szTempEnd --);
//take out the data
if (szTempEnd >= szTempStart)
{
if (nLen > szTempEnd - szTempStart + 1)
{
nLen = szTempEnd - szTempStart + 1;
}else nLen --;
if (szDest != NULL)
{
memcpy(szDest, szTempStart, nLen);
}
}
return nRet;
}
int CBasicFunc::TrimStringWithoutCopy(char *szSrc)
{
char *strStart = szSrc, *strEnd = szSrc + strlen(szSrc) - 1, *strTemp = szSrc;
for (; !XIsGraph(*strEnd); *strEnd = '\0', strEnd--);
for (; !XIsGraph(*strStart); strStart ++);
for (; strStart <= strEnd; *strTemp = *strStart, strStart ++, strTemp++);
for (;strTemp <= strEnd; *strTemp = '\0', strTemp ++);
return 0;
}
unsigned long CBasicFunc::ChangeContentUnitLevel( unsigned long ulSrc, ContentUnitLevel cuSrc, ContentUnitLevel cuDest )
{
if (cuSrc > cuDest)
{
ulSrc = ulSrc<<(cuSrc - cuDest) * 10;
}else if (cuSrc < cuDest)
{
ulSrc = ulSrc>>(cuDest - cuSrc) * 10;
}
return ulSrc;
}
int CBasicFunc::ChangeToContent( const char *lpszSrc, Content *pContent )
{
bool bHz = false, bByteLevel = false;
char szUnit[10] = {0};
sscanf( lpszSrc, "%f %s", &(pContent->lSize), szUnit);
TrimStringWithoutCopy(szUnit);
switch(szUnit[0])
{
case 'B':
case 'b':
pContent->culLevel = B;
pContent->cutType = Byte;
bByteLevel = true;
break;
case 'H':
case 'h':
pContent->culLevel = B;
pContent->cutType = Hz;
bByteLevel = true;
bHz = true;
break;
case 'K':
case 'k':
pContent->culLevel = K;
break;
case 'M':
case 'm':
pContent->culLevel = M;
break;
case 'G':
case 'g':
pContent->culLevel = G;
break;
default:
return -1;
}
if (!bByteLevel)
{
switch(szUnit[1])
{
case 'H':
case 'h':
pContent->cutType = Hz;
break;
default:
pContent->cutType = Byte;
break;
}
}
return 0;
}
int CBasicFunc::ChangeToString( Content *pContent, char *strDest )
{
char szBuffer[32] = {0};
switch (pContent->culLevel )
{
case M:
if (pContent->cutType == Hz)
{
sprintf(strDest, "%.2f MHz", pContent->lSize);
}else
{
sprintf(strDest, "%.2f Mb", pContent->lSize);
}
break;
case K:
if (pContent->cutType == Hz)
{
sprintf(strDest, "%.2f KHz", pContent->lSize);
}else
{
sprintf(strDest, "%.2f Kb", pContent->lSize);
}
break;
case B:
if (pContent->cutType == Hz)
{
sprintf(strDest, "%.2f Hz", pContent->lSize);
}else
{
sprintf(strDest, "%.2f b", pContent->lSize);
}
break;
case G:
if (pContent->cutType == Hz)
{
sprintf(strDest, "%.2f GHz", pContent->lSize);
}else
{
sprintf(strDest, "%.2f Gb", pContent->lSize);
}
break;
default:
return -1;
}
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
WorkSrc.rar (17个子文件)
WorkSrc
PromtParser.h 679B
Prtconf_ProfilePromtParser.cpp 2KB
DeviceViewer 39KB
BasicFunc.cpp 5KB
TablePromtParser.h 388B
CatProcStat_TablePromtParser.h 1KB
ProfilePromtParser.cpp 3KB
TablePromtParser.cpp 2KB
Prtconf_ProfilePromtParser.h 2KB
main.cpp 1KB
BasicFunc.h 953B
ProfilePromtParser.h 2KB
Makefile 1KB
Vmstat_TablePromtParser.cpp 2KB
Vmstat_TablePromtParser.h 1KB
PromtParser.cpp 1KB
CatProcStat_TablePromtParser.cpp 1KB
共 17 条
- 1
资源评论
- wang_xyuan2020-09-10不错,代码能用,学习了
- leroyljp2013-09-24不错,代码能用,学习了
AjiaLJ
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- vidstream-3-0.0.1.tar.gz
- 基于FPGA深度学习的SPI 驱动 HC595 点亮数码管
- 2023-2024学年教材费结算明细(公示) -V2.xls
- 129197954513812WPS.apk
- 1_2.cpp
- logxianshidddd
- 细胞的奇迹:吃出来的免疫力(美亚畅销书!作者的TED演讲播放量超300万次!《谷物大脑》作者、《三联生活周刊》推荐!吃下对的食物,改善你的... (Z-Library).azw3
- 智能手机产品拆解,使用mindmaster打开
- 11111111111111
- 统信系统ARM64依赖openssl-1.0.2版本的libssl.so.10和libcrypto.so.10文件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功