Files

345 lines
11 KiB
C++
Raw Permalink 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_Stack.cpp
* @brief ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>STL<EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>Stack
* @mainpage <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>Ϣ
* @author Yuankang Liang(XerolySkinner)
* @email zabbcccbbaz@163.com
* @version V1.0.0
* @date 2022-11-08 16:41
*/
//////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
// ͷ<>ļ<EFBFBD>
#include "STL_Stack.h"
//////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
// <09><><EFBFBD><EFBFBD><ECBAAF>
STL_rStack::STL_rStack(void) {
room = 0;
size = 0;
dat = NULL;}
//----------------------------------------------------------------------------------------------------
STL_rStack::~STL_rStack(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_rStack::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 STACKS_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 STACKS_OK;}
// <09>ռ<EFBFBD>ʣ<EFBFBD><CAA3><><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dat[(++size) - 1] = var;
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷָ<C8B7><D6B8>
return STACKS_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
u8 STL_rStack::pop(void) {
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>д<EFBFBD><D0B4><EFBFBD>1,<2C><><EFBFBD>̳<EFBFBD>Ա<EFBFBD>ռ<EFBFBD>
if (size > 1) {
--size; // <09><><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>ռ<EFBFBD>
return STACKS_OK;}
// <09><><EFBFBD><EFBFBD><EFBFBD><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 STACKS_OK;}
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջΪ<D5BB><CEAA>,<2C><><EFBFBD>ؿ<EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else
return STACKS_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_rStack::top(u8 &var) {
if (size) {
var = dat[size-1];
return STACKS_OK;}
return STACKS_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_rStack::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_rStack::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_rStack::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 STACKS_REAL_ERROR;} // <09><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
}
// <09>޳<EFBFBD>Աջ<D4B1><D5BB><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>ؿ<EFBFBD>ջ
room = size; // <09>µĿռ<C4BF><D5BC><EFBFBD>С
return STACKS_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_rStack::push32(u32 var) {
push(((u8*)(&var))[3]);
push(((u8*)(&var))[2]);
push(((u8*)(&var))[1]);
push(((u8*)(&var))[0]);
return STACKS_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_rStack::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_rStack::poptop32(void) {
u8 dat[4] = { 0,0,0,0 };
top(dat[0]); pop();
top(dat[1]); pop();
top(dat[2]); pop();
top(dat[3]); 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_rStack::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_rStack::pushfun(void(*fun)(void)){
push32((u32)fun);}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
// <09><><EFBFBD><EFBFBD><ECBAAF>
STL_lStack::STL_lStack(void) {
mem = 0;
dat = NULL;}
//----------------------------------------------------------------------------------------------------
STL_lStack::~STL_lStack(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_lStack::push(void* &var,u32 size) {
_lStack* newdat = (_lStack*)malloc(sizeof(_lStack));
if (newdat == NULL)return STACKS_MALL_ERROR;
newdat->size = size;
newdat->front = dat;
newdat->dat = var;
dat = newdat;
++mem;
return STACKS_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_lStack::pop(void) {
if (mem == 0) return STACKS_EMPTY;
_lStack* savedat = dat; // <09><><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD>
dat = dat->front; // <09><><EFBFBD><EFBFBD>
free(savedat->dat); // <09><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ָ<EFBFBD><D6B8>
free(savedat); // <09><><EFBFBD><EFBFBD>
--mem; // <09><>Ա<EFBFBD>Լ<EFBFBD>
return STACKS_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <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_lStack::top(void* &var,u32 &size) {
if (mem==0) return STACKS_EMPTY;
var = dat->dat;
size = dat->size;
return STACKS_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_lStack::push8(u8 var) {
void* num=(u8*)malloc(sizeof(u8));
if (num == NULL)return STACKS_MALL_ERROR;
*(u8*)num = var;
push(num, sizeof(u8));
return STACKS_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <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_lStack::top8(u8& var) {
void* vars=NULL;
u32 sizes=0;
if (top(vars, sizes) == STACKS_EMPTY)
return STACKS_EMPTY;
var = *((u8*)vars);
return STACKS_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <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_lStack::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_lStack::push32(u32 var) {
void* num = (u32*)malloc(sizeof(u32));
if (num == NULL)return STACKS_MALL_ERROR;
*(u32*)num = var;
push(num, sizeof(u32));
return STACKS_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <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_lStack::top32(u32& var) {
void* vars = NULL;
u32 sizes = 0;
if (top(vars, sizes) == STACKS_EMPTY)
return STACKS_EMPTY;
var = *((u32*)vars);
return STACKS_OK;}
//----------------------------------------------------------------------------------------------------
/**
* @brief <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_lStack::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_lStack::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_lStack::poptopfun(void))(void) {
return (void(*)(void))poptop32();}
//////////////////////////////////////////////////////////////////////////////////////////////////////