同步操作将从 hinus/pythonvm 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "object/hiString.hpp"#include "object/hiInteger.hpp"#include "runtime/universe.hpp"#include <string.h>StringKlass* StringKlass::instance = NULL;StringKlass* StringKlass::get_instance() {if (instance == NULL)instance = new StringKlass();return instance;}StringKlass::StringKlass() {}HiObject* StringKlass::equal(HiObject* x, HiObject* y) {if (x->klass() != y->klass())return Universe::HiFalse;HiString* sx = (HiString*) x;HiString* sy = (HiString*) y;assert(sx && sx->klass() == (Klass*)this);assert(sy && sy->klass() == (Klass*)this);if (sx->length() != sy->length())return Universe::HiFalse;for (int i = 0; i < sx->length(); i++) {if (sx->value()[i] != sy->value()[i])return Universe::HiFalse;}return Universe::HiTrue;}void StringKlass::print(HiObject* obj) {HiString* str_obj = (HiString*) obj;assert(str_obj && str_obj->klass() == (Klass*)this);for (int i = 0; i < str_obj->length(); i++) {printf("%c", str_obj->value()[i]);}}HiObject* StringKlass::subscr(HiObject* x, HiObject* y) {assert(x && x->klass() == (Klass*) this);assert(y && y->klass() == (Klass*) IntegerKlass::get_instance());HiString * sx = (HiString*)x;HiInteger* iy = (HiInteger*)y;return new HiString(&(sx->value()[iy->value()]), 1);}HiString::HiString(const char* x) {_length = strlen(x);_value = new char[_length];strcpy(_value, x);set_klass(StringKlass::get_instance());}HiString::HiString(const char * x, const int length) {_length = length;_value = new char[length];// do not use strcpy here, since '0円' is allowed.for (int i = 0; i < length; i++) {_value[i] = x[i];}set_klass(StringKlass::get_instance());}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。