new feat(comuse): add CString

This commit is contained in:
yaozhicheng 2025-04-24 09:40:00 +08:00 committed by Zhicheng
parent 7a5a9ffe81
commit b807ba87d0
2 changed files with 30 additions and 0 deletions

View File

@ -185,6 +185,30 @@ namespace xspcomm {
return (bool (*)(XData*, XData*, uint64_t))XDataCmp;
}
};
class CString {
public:
std::string str;
CString(std::string val):str(val){}
CString():str(""){}
uint64_t CharAddress(){
return (uint64_t)this->str.c_str();
}
void AssignTo(char * addr){
addr = (char *)this->str.c_str();
}
void AssignTo(uint64_t addr){
return this->AssignTo((char*)addr);
}
void AssignFrom(const char * val){
this->str = std::string(val);
}
void AssignFrom(uint64_t val){
return this->AssignFrom((const char*)val);
}
std::string Get(){return this->str;}
void Set(std::string val){this->str = val;}
};
}
#endif

View File

@ -136,6 +136,12 @@ def test_xdata():
cfg2 = XSignalCFG("tests/test_signal_cfg_map.yaml")
assert cfg.String() == cfg2.String(), "%s != %s" % (cfg.String().strip(), cfg2.String().strip())
# test cstring
cs1 = CString("cs1")
cs2 = CString("------------")
cs1.Set(cs2.Get())
assert cs1.Get() == cs2.Get()
async def test_async():
clk = XClock(lambda a: 0)