去掉检测指针有效范围的宏定义

This commit is contained in:
Stone 2016-07-02 08:26:20 +00:00
parent 2d0e4def19
commit 078da19f55
24 changed files with 15 additions and 92 deletions

View File

@ -389,7 +389,7 @@ const Config& Config::CreateRAM()
ConfigBase::ConfigBase() ConfigBase::ConfigBase()
: Cfg(*Config::Current) : Cfg(*Config::Current)
{ {
assert_ptr(&Cfg); assert(&Cfg, "Cfg");
New = true; New = true;

View File

@ -38,7 +38,7 @@ Stream::Stream(const Buffer& bs)
void Stream::Init(void* buf, uint len) void Stream::Init(void* buf, uint len)
{ {
assert_ptr(buf); assert(buf, "buf");
_Buffer = (byte*)buf; _Buffer = (byte*)buf;
_Capacity = len; _Capacity = len;
@ -338,7 +338,6 @@ MemoryStream::MemoryStream(void* buf, uint len) : Stream(buf, len)
// 销毁数据流 // 销毁数据流
MemoryStream::~MemoryStream() MemoryStream::~MemoryStream()
{ {
assert_ptr(this);
if(_needFree) if(_needFree)
{ {
if(_Buffer != _Arr) delete[] _Buffer; if(_Buffer != _Arr) delete[] _Buffer;

View File

@ -18,8 +18,8 @@ extern "C"
#if defined(DEBUG) && defined(USE_FULL_ASSERT) #if defined(DEBUG) && defined(USE_FULL_ASSERT)
#define assert_ptr(expr) (assert_ptr_(expr) ? (void)0 : assert_failed2("ptr==nullptr", (const char*)__FILE__, __LINE__)) //#define assert_ptr(expr) (assert_ptr_(expr) ? (void)0 : assert_failed2("ptr==nullptr", (const char*)__FILE__, __LINE__))
bool assert_ptr_(const void* p); //bool assert_ptr_(const void* p);
void assert_failed2(const char* msg, const char* file, unsigned int line); void assert_failed2(const char* msg, const char* file, unsigned int line);
#define assert(expr, msg) ((expr) ? (void)0 : assert_failed2(msg, (const char*)__FILE__, __LINE__)) #define assert(expr, msg) ((expr) ? (void)0 : assert_failed2(msg, (const char*)__FILE__, __LINE__))

View File

@ -75,7 +75,7 @@ ShunCom::ShunCom()
void ShunCom::Init(ITransport* port, Pin rst) void ShunCom::Init(ITransport* port, Pin rst)
{ {
assert_ptr(port); assert(port, "port");
Set(port); Set(port);
//MaxSize = 82; //MaxSize = 82;

View File

@ -354,7 +354,7 @@ void W5500::Init()
// 初始化 // 初始化
void W5500::Init(Spi* spi, Pin irq, Pin rst) void W5500::Init(Spi* spi, Pin irq, Pin rst)
{ {
assert_ptr(spi); assert(spi, "spi");
debug_printf("\r\n"); debug_printf("\r\n");

View File

@ -41,8 +41,8 @@ extern "C"
// 验证确保对象不为空,并且在有效的内存范围内 // 验证确保对象不为空,并且在有效的内存范围内
//extern void assert_failed(uint8_t* file, uint32_t line); //extern void assert_failed(uint8_t* file, uint32_t line);
#define assert_ptr(expr) (assert_ptr_(expr) ? (void)0 : assert_failed2("ptr==nullptr", (const char*)__FILE__, __LINE__)) //#define assert_ptr(expr) (assert_ptr_(expr) ? (void)0 : assert_failed2("ptr==nullptr", (const char*)__FILE__, __LINE__))
bool assert_ptr_(const void* p); //bool assert_ptr_(const void* p);
void assert_failed2(cstring msg, cstring file, unsigned int line); void assert_failed2(cstring msg, cstring file, unsigned int line);
#define assert(expr, msg) ((expr) ? (void)0 : assert_failed2(msg, (const char*)__FILE__, __LINE__)) #define assert(expr, msg) ((expr) ? (void)0 : assert_failed2(msg, (const char*)__FILE__, __LINE__))

View File

@ -114,8 +114,6 @@ void* operator new[](uint size)
void operator delete(void* p) noexcept void operator delete(void* p) noexcept
{ {
assert_ptr(p);
mem_printf(" delete 0x%p ", p); mem_printf(" delete 0x%p ", p);
if(p) if(p)
{ {
@ -126,8 +124,6 @@ void operator delete(void* p) noexcept
void operator delete[](void* p) noexcept void operator delete[](void* p) noexcept
{ {
assert_ptr(p);
mem_printf(" delete[] 0x%p ", p); mem_printf(" delete[] 0x%p ", p);
if(p) if(p)
{ {

View File

@ -58,9 +58,6 @@ uint Controller::Dispatch(ITransport* port, Buffer& bs, void* param, void* param
byte* buf = bs.GetBuffer(); byte* buf = bs.GetBuffer();
uint len = bs.Length(); uint len = bs.Length();
assert_ptr(buf);
assert_ptr(param);
auto control = (Controller*)param; auto control = (Controller*)param;
#if MSG_DEBUG #if MSG_DEBUG
@ -91,7 +88,6 @@ uint Controller::Dispatch(ITransport* port, Buffer& bs, void* param, void* param
} }
assert(control, "控制器指针已被改变3"); assert(control, "控制器指针已被改变3");
assert_ptr(control);
} }
return 0; return 0;

View File

@ -16,7 +16,6 @@ bool Modbus::Read(Stream& ms)
if(ms.Remain() < 4) return false; if(ms.Remain() < 4) return false;
byte* buf = ms.Current(); byte* buf = ms.Current();
assert_ptr(buf);
uint p = ms.Position(); uint p = ms.Position();
Address = ms.ReadByte(); Address = ms.ReadByte();

View File

@ -15,9 +15,7 @@ Slave::~Slave()
void Slave::OnReceive(ITransport* transport, byte* buf, uint len, void* param) void Slave::OnReceive(ITransport* transport, byte* buf, uint len, void* param)
{ {
assert_ptr(param); auto slave = (Slave*)param;
Slave* slave = (Slave*)param;
Stream ms(buf, len); Stream ms(buf, len);
Modbus entity; Modbus entity;

View File

@ -26,9 +26,6 @@ ITransport::~ITransport()
// 打开传输口 // 打开传输口
bool ITransport::Open() bool ITransport::Open()
{ {
// 特别是接口要检查this指针
assert_ptr(this);
if(Opened || Opening) return true; if(Opened || Opening) return true;
Opening = true; Opening = true;
@ -43,9 +40,6 @@ bool ITransport::Open()
// 关闭传输口 // 关闭传输口
void ITransport::Close() void ITransport::Close()
{ {
// 特别是接口要检查this指针
assert_ptr(this);
if(!Opened || Opening) return; if(!Opened || Opening) return;
Opening = true; Opening = true;
@ -57,9 +51,6 @@ void ITransport::Close()
// 发送数据 // 发送数据
bool ITransport::Write(const Buffer& bs) bool ITransport::Write(const Buffer& bs)
{ {
// 特别是接口要检查this指针
assert_ptr(this);
if(!Opened && !Open()) return false; if(!Opened && !Open()) return false;
return OnWrite(bs); return OnWrite(bs);
@ -68,9 +59,6 @@ bool ITransport::Write(const Buffer& bs)
// 发送数据 // 发送数据
bool ITransport::Write(const Buffer& bs, const void* opt) bool ITransport::Write(const Buffer& bs, const void* opt)
{ {
// 特别是接口要检查this指针
assert_ptr(this);
if(!Opened && !Open()) return false; if(!Opened && !Open()) return false;
return OnWriteEx(bs, opt); return OnWriteEx(bs, opt);
@ -79,9 +67,6 @@ bool ITransport::Write(const Buffer& bs, const void* opt)
// 接收数据 // 接收数据
uint ITransport::Read(Buffer& bs) uint ITransport::Read(Buffer& bs)
{ {
// 特别是接口要检查this指针
assert_ptr(this);
if(!Opened && !Open()) return 0; if(!Opened && !Open()) return 0;
return OnRead(bs); return OnRead(bs);
@ -98,9 +83,6 @@ uint ITransport::Read(Buffer& bs)
// 注册回调函数 // 注册回调函数
void ITransport::Register(TransportHandler handler, void* param) void ITransport::Register(TransportHandler handler, void* param)
{ {
// 特别是接口要检查this指针
assert_ptr(this);
_handler = handler; _handler = handler;
_param = param; _param = param;
} }
@ -149,8 +131,6 @@ uint PackPort::OnRead(Buffer& bs) { return Port->Read(bs); }
uint PackPort::OnPortReceive(ITransport* sender, Buffer& bs, void* param, void* param2) uint PackPort::OnPortReceive(ITransport* sender, Buffer& bs, void* param, void* param2)
{ {
assert_ptr(param);
auto pp = dynamic_cast<PackPort*>((PackPort*)param); auto pp = dynamic_cast<PackPort*>((PackPort*)param);
return pp->OnReceive(bs, param2); return pp->OnReceive(bs, param2);
} }

View File

@ -12,8 +12,6 @@ Zigbee::Zigbee(ITransport* port, Pin rst)
void Zigbee::Init(ITransport* port, Pin rst) void Zigbee::Init(ITransport* port, Pin rst)
{ {
assert_ptr(port);
Set(port); Set(port);
MaxSize = 64; MaxSize = 64;

View File

@ -23,7 +23,7 @@ void assert_failed(uint8_t* file, unsigned int line)
TInterrupt::Halt(); TInterrupt::Halt();
} }
bool assert_ptr_(const void* p) /*bool assert_ptr_(const void* p)
{ {
if((uint)p < FLASH_BASE) if((uint)p < FLASH_BASE)
{ {
@ -54,7 +54,7 @@ bool assert_ptr_(const void* p)
//if(p <= (void*)&__heap_base) return false; //if(p <= (void*)&__heap_base) return false;
return true; return true;
} }*/
#endif #endif
#endif #endif

View File

@ -53,8 +53,7 @@ bool OpenLed(Message& msg, void* param)
// 发送刷小灯的消息 // 发送刷小灯的消息
void FlashLed(void* param) void FlashLed(void* param)
{ {
assert_ptr(param); auto control = (Controller*)param;
Controller* control = (Controller*)param;
// 发送广播消息,刷所有人小灯 // 发送广播消息,刷所有人小灯
TinyMessage msg(0x10); TinyMessage msg(0x10);

View File

@ -110,9 +110,6 @@ bool IcmpSocket::Process(IP_HEADER& ip, Stream& ms)
// Ping目的地址附带a~z重复的负载数据 // Ping目的地址附带a~z重复的负载数据
bool IcmpSocket::Ping(IPAddress& ip, uint payloadLength) bool IcmpSocket::Ping(IPAddress& ip, uint payloadLength)
{ {
assert(this, "非法调用Icmp");
assert_ptr(this);
byte buf[sizeof(ETH_HEADER) + sizeof(IP_HEADER) + sizeof(ICMP_HEADER) + 64]; byte buf[sizeof(ETH_HEADER) + sizeof(IP_HEADER) + sizeof(ICMP_HEADER) + 64];
// 注意此时指针位于0而内容长度为缓冲区长度 // 注意此时指针位于0而内容长度为缓冲区长度
Stream ms(buf, ArrayLength(buf)); Stream ms(buf, ArrayLength(buf));

View File

@ -285,11 +285,10 @@ bool TinyIP::SendIP(IP_TYPE type, const IPAddress& remote, const byte* buf, uint
ip->Identifier = _REV16(g_Identifier++); ip->Identifier = _REV16(g_Identifier++);
// 网络序是大端 // 网络序是大端
ip->Checksum = 0; ip->Checksum = 0;
ip->Checksum = _REV16(CheckSum(nullptr, (byte*)ip, sizeof(IP_HEADER), 0)); ip->Checksum = _REV16(CheckSum(nullptr, (byte*)ip, sizeof(IP_HEADER), 0));
assert_ptr(Arp); auto arp = (ArpSocket*)Arp;
ArpSocket* arp = (ArpSocket*)Arp;
MacAddress mac; MacAddress mac;
if(!arp->Resolve(remote, mac)) if(!arp->Resolve(remote, mac))
{ {

View File

@ -17,8 +17,6 @@ static void TinyClientTask(void* param);
TinyClient::TinyClient(TinyController* control) TinyClient::TinyClient(TinyController* control)
{ {
assert_ptr(control);
Control = control; Control = control;
Control->GetKey = Delegate2<byte, Buffer&>(&TinyClient::GetDeviceKey, this); Control->GetKey = Delegate2<byte, Buffer&>(&TinyClient::GetDeviceKey, this);
@ -266,8 +264,6 @@ void TinyClient::ReportAsync(uint offset,uint length)
void TinyClientTask(void* param) void TinyClientTask(void* param)
{ {
assert_ptr(param);
auto client = (TinyClient*)param; auto client = (TinyClient*)param;
uint offset = client->NextReport; uint offset = client->NextReport;
uint len = client->ReportLength; uint len = client->ReportLength;

View File

@ -521,8 +521,6 @@ bool TinyController::Post(const TinyMessage& msg, int msTimeout)
void SendTask(void* param) void SendTask(void* param)
{ {
assert_ptr(param);
auto control = (TinyController*)param; auto control = (TinyController*)param;
control->Loop(); control->Loop();
} }
@ -631,14 +629,6 @@ void TinyController::Loop()
if(count == 0) Sys.SetTask(_taskID, false); if(count == 0) Sys.SetTask(_taskID, false);
} }
/*void StatTask(void* param)
{
assert_ptr(param);
auto control = (TinyController*)param;
control->ShowStat();
}*/
// 显示统计信息 // 显示统计信息
void TinyController::ShowStat() const void TinyController::ShowStat() const
{ {

View File

@ -158,8 +158,6 @@ uint TinyMessage::MaxDataSize() const
void TinyMessage::Show() const void TinyMessage::Show() const
{ {
#if MSG_DEBUG #if MSG_DEBUG
assert_ptr(this);
byte flag = *((byte*)&_Code + 1); byte flag = *((byte*)&_Code + 1);
msg_printf("0x%02X => 0x%02X Code=0x%02X Flag=0x%02X Seq=0x%02X Retry=%d", Src, Dest, Code, flag, Seq, Retry); msg_printf("0x%02X => 0x%02X Code=0x%02X Flag=0x%02X Seq=0x%02X Retry=%d", Src, Dest, Code, flag, Seq, Retry);
@ -174,7 +172,6 @@ void TinyMessage::Show() const
ushort len = Length; ushort len = Length;
if(len > 0) if(len > 0)
{ {
assert_ptr(Data);
msg_printf(" Data[%02d]=", len); msg_printf(" Data[%02d]=", len);
ByteArray(Data, len).Show(); ByteArray(Data, len).Show();
} }

View File

@ -50,15 +50,6 @@ bool TinyServer::Send(Message& msg) const
return Control->Send(msg); return Control->Send(msg);
} }
/*bool OnServerReceived(void* sender, Message& msg, void* param)
{
auto server = (TinyServer*)param;
assert_ptr(server);
// 消息转发
return server->OnReceive((TinyMessage&)msg);
}*/
// 常用系统级消息 // 常用系统级消息
void TinyServer::Start() void TinyServer::Start()

View File

@ -218,7 +218,6 @@ void TokenClient::LoopTask()
void BroadcastHelloTask(void* param) void BroadcastHelloTask(void* param)
{ {
TS("TokenClient::BroadcastHello"); TS("TokenClient::BroadcastHello");
assert_ptr(param);
auto client = (TokenClient*)param; auto client = (TokenClient*)param;
client->SayHello(true); client->SayHello(true);

View File

@ -569,7 +569,6 @@ void TokenStat::Clear()
String& TokenStat::ToStr(String& str) const String& TokenStat::ToStr(String& str) const
{ {
TS("TokenStat::ToStr"); TS("TokenStat::ToStr");
assert_ptr(this);
/*debug_printf("this=0x%08X _Last=0x%08X _Total=0x%08X ", this, _Last, _Total); /*debug_printf("this=0x%08X _Last=0x%08X _Total=0x%08X ", this, _Last, _Total);
Percent().Show(true);*/ Percent().Show(true);*/

View File

@ -23,7 +23,6 @@ bool TokenMessage::Read(Stream& ms)
{ {
TS("TokenMessage::Read"); TS("TokenMessage::Read");
assert_ptr(this);
if(ms.Remain() < MinSize) return false; if(ms.Remain() < MinSize) return false;
byte temp = ms.ReadByte(); byte temp = ms.ReadByte();
@ -60,7 +59,6 @@ void TokenMessage::Write(Stream& ms) const
{ {
TS("TokenMessage::Write"); TS("TokenMessage::Write");
assert_ptr(this);
byte tmp = Code | (Reply << 7); byte tmp = Code | (Reply << 7);
if((!Reply && OneWay) || (Reply && Error)) tmp |= (1 << 6); if((!Reply && OneWay) || (Reply && Error)) tmp |= (1 << 6);
ms.Write(tmp); ms.Write(tmp);
@ -102,8 +100,6 @@ void TokenMessage::Show() const
#if MSG_DEBUG #if MSG_DEBUG
TS("TokenMessage::Show"); TS("TokenMessage::Show");
assert_ptr(this);
byte code = Code; byte code = Code;
if(Reply) code |= 0x80; if(Reply) code |= 0x80;
if((!Reply && OneWay) || (Reply && Error)) code |= (1 << 6); if((!Reply && OneWay) || (Reply && Error)) code |= (1 << 6);
@ -128,7 +124,6 @@ void TokenMessage::Show() const
ushort len = Length; ushort len = Length;
if(len > 0) if(len > 0)
{ {
assert_ptr(Data);
debug_printf(" Data[%d]=",len); debug_printf(" Data[%d]=",len);
// 大于32字节时反正都要换行显示干脆一开始就换行让它对齐 // 大于32字节时反正都要换行显示干脆一开始就换行让它对齐
//if(len > 32) debug_printf("\r\n"); //if(len > 32) debug_printf("\r\n");

View File

@ -17,18 +17,13 @@ public:
// 为某个指针封装 // 为某个指针封装
SmartPtr::SmartPtr(void* ptr) SmartPtr::SmartPtr(void* ptr)
{ {
assert_ptr(ptr);
_ptr = new WrapPtr(ptr); _ptr = new WrapPtr(ptr);
} }
// 拷贝智能指针。仅拷贝内部包装,然后引用计数加一 // 拷贝智能指针。仅拷贝内部包装,然后引用计数加一
SmartPtr::SmartPtr(const SmartPtr& ptr) SmartPtr::SmartPtr(const SmartPtr& ptr)
{ {
assert_ptr(ptr._ptr);
auto p = (WrapPtr*)ptr._ptr; auto p = (WrapPtr*)ptr._ptr;
assert_ptr(p->Ptr);
_ptr = p; _ptr = p;
p->Count++; p->Count++;