📄 var.c
字号:
//basci 变量管理
#include <CsAgb.h>
#include <malloc.h>
#include <rbasic.h>
extern void *mymalloc(u32 size);
extern void myfree(void *loc);
void give_int_val(u8 id,int val)
{
if (id>rb_int_cnt)
{
rb_error=11;
return;
}
rb_int_var[id]=val;
}
int get_int_val(u8 id)
{
if (id>rb_int_cnt)
{
rb_error=11;
return 0;
}
return rb_int_var[id];
}
void give_float_val(u8 id,double val)
{
if (id>rb_float_cnt)
{
rb_error=11;
return;
}
rb_float_var[id]=val;
}
double get_float_val(u8 id)
{
if (id>rb_float_cnt)
{
rb_error=11;
return 0.0;
}
return rb_float_var[id];
}
void give_str_val(u8 id,char *str)//字符串变量赋值
{
int i=0;
char *var=rb_str_var+id*str_max_len;
if (id>rb_str_cnt)
{
rb_error=11;
return;
}
while (str[i]!='\0' && i<str_max_len)
{
var[i]=str[i];
i++;
}
var[i]='\0';
}
char *get_str_val(u8 id)
{
if (id>rb_str_cnt)
{
rb_error=11;
return NULL;
}
return rb_str_var+id*str_max_len;
}
void int_dim_reg(u8 id,u8 cnt)
{
u8 i;
if (rb_int_dim_indx[id]) {rb_error=2;return;}
rb_int_dim[id]=(int *)mymalloc(sizeof(int)*cnt);
if (rb_int_dim[id]==NULL) {rb_error=1;return;}
for (i=0;i<cnt;i++) *(rb_int_dim[id]+i)=0;
rb_int_dim_indx[id]=cnt;
}
int get_int_dim_val(u8 id,u8 indx)
{
if (indx>rb_int_dim_indx[id] || indx==0)
{
rb_error=3;
return 0;
}
else if(rb_int_dim_indx[id]==0 || rb_int_dim[id]==NULL)
{
rb_error=4;
return 0;
}
return *(rb_int_dim[id]+indx-1);
}
void give_int_dim_val(u8 id,u8 indx,int val)
{
if (indx>rb_int_dim_indx[id] || indx==0)
{
rb_error=3;
return;
}
else if(rb_int_dim_indx[id]==0 || rb_int_dim[id]==NULL)
{
rb_error=4;
return;
}
*(rb_int_dim[id]+indx-1)=val;
}
void free_int_dim()
{
int i;
for (i=0;i<rb_int_dim_cnt;i++)
{
if (rb_int_dim[i]!=NULL)
{
myfree(rb_int_dim[i]);
rb_int_dim[i]=NULL;
rb_int_dim_indx[i]=0;
}
}
rb_int_dim_cnt=0;
}
void float_dim_reg(u8 id,u8 cnt)
{
u8 i;
if (rb_float_dim_indx[id]) {rb_error=3;return;}
rb_float_dim[id]=(double *)mymalloc(sizeof(double)*cnt);
if (rb_float_dim[id]==NULL) {rb_error=1;return;}
for (i=0;i<cnt;i++) *(rb_float_dim[id]+i)=0.0;
rb_float_dim_indx[id]=cnt;
}
void give_float_dim_val(u8 id,u8 indx,double val)
{
if (rb_float_dim_indx[id]==0 || rb_float_dim[id]==NULL)
{
rb_error=4;
return;
}
else if (indx>rb_float_dim_indx[id] || indx==0)
{
rb_error=3;
return;
}
*(rb_float_dim[id]+indx-1)=val;
}
double get_float_dim_val(u8 id,u8 indx)
{
if (rb_float_dim_indx[id]==0 || rb_float_dim[id]==NULL)
{
rb_error=4;
return 0;
}
else if (indx>rb_float_dim_indx[id] || indx==0)
{
rb_error=3;
return 0;
}
return *(rb_float_dim[id]+indx-1);
}
void free_float_dim()
{
int i;
for (i=0;i<rb_float_dim_cnt;i++)
{
if (rb_float_dim[i]!=NULL)
{
myfree(rb_float_dim[i]);
rb_float_dim[i]=NULL;
}
}
rb_float_dim_cnt=0;
}
int var_mem()//分配变量空间
{
u8 i;
if (rb_int_cnt)//分配整型变量空间
{
rb_int_var=(int *)mymalloc(sizeof(int)*rb_int_cnt);
if (rb_int_var==NULL) return 1;
}
if (rb_float_cnt)//分配实型变量空间
{
rb_float_var=(double *)mymalloc(sizeof(double)*rb_float_cnt);
if (rb_float_var==NULL) return 1;
}
if (rb_str_cnt)//分配字符串变量空间
{
rb_str_var=(char *)mymalloc(rb_str_cnt*str_max_len);
if (rb_str_var==NULL) return 1;
}
if (rb_int_dim_cnt)//分配整型数组相关数据空间
{
rb_int_dim=(int **)mymalloc(rb_int_dim_cnt*4);
rb_int_dim_indx=(u16 *)mymalloc(rb_int_dim_cnt*2);
if (rb_int_dim==NULL || rb_int_dim_indx==NULL) return 1;
}
if (rb_float_dim_cnt)//分配浮点数组相关数据空间
{
rb_float_dim=(double **)mymalloc(rb_float_dim_cnt*4);
rb_float_dim_indx=(u16 *)mymalloc(rb_float_dim_cnt*2);
if (rb_float_dim==NULL || rb_float_dim_indx==NULL) return 1;
}
//初奴化数据
for (i=0;i<rb_int_cnt;i++) rb_int_var[i]=0;
for (i=0;i<rb_float_cnt;i++) rb_float_var[i]=0.0;
for (i=0;i<rb_str_cnt;i++) rb_str_var[i*str_max_len]='\0';
for (i=0;i<rb_int_dim_cnt;i++)
{
rb_int_dim[i]=NULL;
rb_int_dim_indx[i]=0;
}
for (i=0;i<rb_float_dim_cnt;i++)
{
rb_float_dim[i]=NULL;
rb_float_dim_indx[i]=0;
}
return 0;
}
void free_dim()
{
int i;
for (i=0;i<rb_float_dim_cnt;i++)
{
myfree(rb_float_dim[i]);
rb_float_dim_indx[i]=0;
}
for (i=0;i<rb_int_dim_cnt;i++)
{
myfree(rb_int_dim[i]);
rb_int_dim_indx[i]=0;
}
}
void free_var()//释放变量空间
{
myfree(rb_int_var);
myfree(rb_float_var);
myfree(rb_str_var);
free_dim();
myfree(rb_float_dim);
myfree(rb_float_dim_indx);
myfree(rb_int_dim);
myfree(rb_int_dim_indx);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -