Files
MicrochipFor32/STL_Device/STL_Queue.cpp

355 lines
11 KiB
C++
Raw Normal View History

/*----------------------------------------------------------------------------------------------------
#
# Copyright (c) 2022 Yuankang Liang(XerolySkinner)
#
# <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>ṩ,<2C><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ʾ
# <09><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>߶<EFBFBD><DFB6><EFBFBD><EFBFBD>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B3A5><EFBFBD><EFBFBD>
#
# ʹ<>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
# 1. <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ,<2C><EFBFBD><E3B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>.
# 2. <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>Ŀ<EFBFBD><C4BF><><C7B0><EFBFBD>ǰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD>.
# <09><><EFBFBD>Ұ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>.
# 3. <09><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>,<2C><><EFBFBD><EFBFBD>,<2C>޸<EFBFBD>,<2C>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>۱<EFBFBD><DBB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
# 4. <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>Ʒ<EFBFBD><C6B7>ʹ<EFBFBD><CAB9>,<2C><>Ʒ<EFBFBD>ĵ<EFBFBD><C4B5>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵ĵ<CDB5><C4B5><EFBFBD><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD>.
# 5. <09><>֪ͨ<CDA8><D6AA><EFBFBD>ô<EFBFBD><C3B4>κ<EFBFBD><CEBA><EFBFBD>Դɾ<D4B4><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
#
# Yuankang Liang(XerolySkinner)
# E-mail:zabbcccbbaz@163.com
# QQ:2715099320
# Mobile Phone:13005636215
#
# All rights reserved.
*/
/**
* @file STL_Queue.cpp
* @brief ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>STL<EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>Queue
* @mainpage <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>Ϣ
* @author Yuankang Liang(XerolySkinner)
* @email zabbcccbbaz@163.com
* @version V1.0.0
* @date 2022-11-09 01:03
*/
//////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
// ͷ<>ļ<EFBFBD>
#include "STL_Queue.h"
//////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
// <09><><EFBFBD><EFBFBD><ECBAAF>
STL_rQueue::STL_rQueue(void) {
room = 0;
size = 0;
dat = NULL;}
//----------------------------------------------------------------------------------------------------
STL_rQueue::~STL_rQueue(void) {
free(dat);}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
// <09><>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>
/**
* @brief ѹ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
* @param var <EFBFBD><EFBFBD>Ҫѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_rQueue::push(u8 var) {
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
u8* temp_stacks = dat;
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>пռ<D0BF>
if (size >= room) {
// <09><><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD><C2B3><EFBFBD>
dat = static_cast<u8*>(realloc(dat, ++size));
// <09><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>,<2C>ƺ<EFBFBD><C6BA><EFBFBD><EFBFBD>ҷ<EFBFBD><D2B7>ش<EFBFBD><D8B4><EFBFBD>
if (dat == NULL) {
--size; // <09>ָ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>
dat = temp_stacks; // <09>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
return QUEUES_REAL_ERROR;} // <09><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
room = size;
// <09><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dat[size - 1] = var;
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷָ<C8B7><D6B8>
return QUEUES_OK;}
// <09>ռ<EFBFBD>ʣ<EFBFBD><CAA3><><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dat[(++size) - 1] = var;
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷָ<C8B7><D6B8>
return QUEUES_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_rQueue::pop(void) {
// <09><><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>1,<2C><><EFBFBD>̳<EFBFBD>Ա<EFBFBD>ռ<EFBFBD>
if (size > 1) {
// <09><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>һλ
for (u32 i = 0; i < size - 1; i++)
*(dat + i) = *(dat + i + 1);
--size; // <09><><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>ռ<EFBFBD>
return QUEUES_OK;}
// <09><><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>1,<2C><>ָ<EFBFBD><D6B8>ͷ
else if (size == 1) {
size = 0; // <09><><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>ռ<EFBFBD>
return QUEUES_OK;} // <09><><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>Ϊ<EFBFBD><CEAA>,<2C><><EFBFBD>ؿն<D8BF><D5B6>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>
else
return QUEUES_EMPTY;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @param &var <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_rQueue::top(u8& var) {
if (size) {
var = dat[0];
return QUEUES_OK;}
return QUEUES_EMPTY;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>س<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ϊu8<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>u32<EFBFBD><EFBFBD>ռ4<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
*/
u32 STL_rQueue::The_size(void) {
return size;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>,u8<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u32 STL_rQueue::The_room(void) {
return room;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<EFBFBD><EFBFBD>ȶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>,<EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_rQueue::clean(void) {
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
u8* temp_stacks = dat;
// <09><><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>Ա,<2C><><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ռ<EFBFBD>
if (size) {
// <09><><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ռ<EFBFBD>
dat = static_cast<u8*>(realloc(dat, size));
// <09><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>,<2C>ƺ󲢷<C6BA><F3B2A2B7>ش<EFBFBD><D8B4><EFBFBD>
if (dat == NULL) {
--size; // <09>ָ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>
dat = temp_stacks; // <09>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
return QUEUES_REAL_ERROR;} // <09><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
}
// <09>޳<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>Ա
else {
free(dat); // <09>ͷ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ռ<EFBFBD>
dat = NULL;
size = 0;} // <09><>ָ<EFBFBD><D6B8><EFBFBD>ײ<EFBFBD>
// <09><><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ؿն<D8BF><D5B6><EFBFBD>
room = size; // <09>µĿռ<C4BF><D5BC><EFBFBD>С
return QUEUES_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief ѹ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>32λ<EFBFBD><EFBFBD>Ա
* @param var <EFBFBD><EFBFBD>Ҫѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_rQueue::push32(u32 var) {
push(((u8*)(&var))[3]);
push(((u8*)(&var))[2]);
push(((u8*)(&var))[1]);
push(((u8*)(&var))[0]);
return QUEUES_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Աֵ
* @note <EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_rQueue::poptop(void) {
u8 var = 0;
top(var); pop();
return var;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>32λ<EFBFBD><EFBFBD>Ա
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Աֵ
* @note <EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u32 STL_rQueue::poptop32(void) {
u8 dat[4] = { 0,0,0,0 };
top(dat[3]); pop();
top(dat[2]); pop();
top(dat[1]); pop();
top(dat[0]); pop();
return *((u32*)(dat));}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>void(*)void<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void(*STL_rQueue::poptopfun(void))(void) {
return (void(*)(void))poptop32();}
//----------------------------------------------------------------------------------------------------
/**
* @brief ѹ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>void(*)void<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void STL_rQueue::pushfun(void(*fun)(void)) {
push32((u32)fun);}
//////////////////////////////////////////////////////////////////////////////////////////////////////
2022-11-11 03:31:59 +08:00
//----------------------------------------------------------------------------------------------------
// <09><><EFBFBD><EFBFBD><ECBAAF>
STL_lQueue::STL_lQueue(void) {
STL_lQueue::Hdat = NULL;
STL_lQueue::Tdat = NULL;
STL_lQueue::mem = 0;
}
STL_lQueue::~STL_lQueue(void) {
if (mem)pop();}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
// <09><>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>
/**
* @brief ѹ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
* @param *&var <EFBFBD><EFBFBD>Ҫѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ĵ<EFBFBD>ַ
* @param size <EFBFBD><EFBFBD>Ҫѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_lQueue::push(void*& var, u32 size) {
_lQueue* newdat = (_lQueue*)malloc(sizeof(_lQueue));
if (newdat == NULL)return QUEUES_MALL_ERROR;
newdat->dat = var;
newdat->size = size;
newdat->back = NULL;
if (mem == 0) {
Hdat = newdat;
Tdat = newdat;}
else {
Hdat->back = newdat;
Hdat = newdat;}
++mem;
return QUEUES_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD>push<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>32λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_lQueue::pop(void) {
if (mem == 0) return QUEUES_EMPTY;
_lQueue* savedat = Tdat; // <09><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
if (mem == 1) {
Tdat = NULL;
Hdat = NULL;}
else if(mem>1) {
Tdat = Tdat->back;}
free(savedat->dat);
free(savedat);
--mem;
return QUEUES_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
* @param *&var <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ĵ<EFBFBD>ַ
* @param &size <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_lQueue::top(void*& var, u32& size) {
if (mem == 0) return QUEUES_EMPTY;
var = Tdat->dat;
size = Tdat->size;
return QUEUES_OK;}
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
/**
* @brief ѹ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>8λ<EFBFBD><EFBFBD>Ա
* @param var <EFBFBD><EFBFBD>Ҫѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_lQueue::push8(u8 var) {
void* num = (u8*)malloc(sizeof(u8));
if (num == NULL)return QUEUES_MALL_ERROR;
*(u8*)num = var;
push(num, sizeof(u8));
return QUEUES_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Ա
* @param &var <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_lQueue::top8(u8& var) {
void* vars = NULL;
u32 sizes = 0;
if (top(vars, sizes) == QUEUES_EMPTY)
return QUEUES_EMPTY;
var = *((u8*)vars);
return QUEUES_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Ա
* @return <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
u8 STL_lQueue::poptop8(void) {
u8 temp = 0;
top8(temp);
pop();
return temp;}
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
/**
* @brief ѹ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>32λ<EFBFBD><EFBFBD>Ա
* @param var <EFBFBD><EFBFBD>Ҫѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>32λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_lQueue::push32(u32 var) {
void* num = (u32*)malloc(sizeof(u32));
if (num == NULL)return QUEUES_MALL_ERROR;
*(u32*)num = var;
push(num, sizeof(u32));
return QUEUES_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Ա
* @param &var <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_lQueue::top32(u32& var) {
void* vars = NULL;
u32 sizes = 0;
if (top(vars, sizes) == QUEUES_EMPTY)
return QUEUES_EMPTY;
var = *((u32*)vars);
return QUEUES_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Ա
* @return <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
u32 STL_lQueue::poptop32(void) {
u32 temp = 0;
top32(temp);
pop();
return temp;}
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
/**
* @brief ѹ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>void(*)(void)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param *fun <EFBFBD><EFBFBD>Ҫѹ<EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* void fun(void);
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>pushfun(fun);<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>
*/
u8 STL_lQueue::pushfun(void(*fun)(void)) {
u8 res;
res = push32((u32)fun);
return res;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>void(*)(void)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>poptopfun();<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>poptopfun()();ֱ<EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>иú<EFBFBD><EFBFBD><EFBFBD>
*/
void(*STL_lQueue::poptopfun(void))(void) {
return (void(*)(void))poptop32();}
//////////////////////////////////////////////////////////////////////////////////////////////////////