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

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()
: Cfg(*Config::Current)
{
assert_ptr(&Cfg);
assert(&Cfg, "Cfg");
New = true;

View File

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

View File

@ -18,8 +18,8 @@ extern "C"
#if defined(DEBUG) && defined(USE_FULL_ASSERT)
#define assert_ptr(expr) (assert_ptr_(expr) ? (void)0 : assert_failed2("ptr==nullptr", (const char*)__FILE__, __LINE__))
bool assert_ptr_(const void* p);
//#define assert_ptr(expr) (assert_ptr_(expr) ? (void)0 : assert_failed2("ptr==nullptr", (const char*)__FILE__, __LINE__))
//bool assert_ptr_(const void* p);
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__))

View File

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

View File

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

View File

@ -41,8 +41,8 @@ extern "C"
// 验证确保对象不为空,并且在有效的内存范围内
//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__))
bool assert_ptr_(const void* p);
//#define assert_ptr(expr) (assert_ptr_(expr) ? (void)0 : assert_failed2("ptr==nullptr", (const char*)__FILE__, __LINE__))
//bool assert_ptr_(const void* p);
void assert_failed2(cstring msg, cstring file, unsigned int 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
{
assert_ptr(p);
mem_printf(" delete 0x%p ", p);
if(p)
{
@ -126,8 +124,6 @@ void operator delete(void* p) noexcept
void operator delete[](void* p) noexcept
{
assert_ptr(p);
mem_printf(" delete[] 0x%p ", p);
if(p)
{

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -110,9 +110,6 @@ bool IcmpSocket::Process(IP_HEADER& ip, Stream& ms)
// Ping目的地址附带a~z重复的负载数据
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];
// 注意此时指针位于0而内容长度为缓冲区长度
Stream ms(buf, ArrayLength(buf));

View File

@ -288,8 +288,7 @@ bool TinyIP::SendIP(IP_TYPE type, const IPAddress& remote, const byte* buf, uint
ip->Checksum = 0;
ip->Checksum = _REV16(CheckSum(nullptr, (byte*)ip, sizeof(IP_HEADER), 0));
assert_ptr(Arp);
ArpSocket* arp = (ArpSocket*)Arp;
auto arp = (ArpSocket*)Arp;
MacAddress mac;
if(!arp->Resolve(remote, mac))
{

View File

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

View File

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

View File

@ -158,8 +158,6 @@ uint TinyMessage::MaxDataSize() const
void TinyMessage::Show() const
{
#if MSG_DEBUG
assert_ptr(this);
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);
@ -174,7 +172,6 @@ void TinyMessage::Show() const
ushort len = Length;
if(len > 0)
{
assert_ptr(Data);
msg_printf(" Data[%02d]=", len);
ByteArray(Data, len).Show();
}

View File

@ -50,15 +50,6 @@ bool TinyServer::Send(Message& msg) const
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()

View File

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

View File

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

View File

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

View File

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