string ws2utf8(const wchar_t *wstr) { if (!wstr) return ""; int n = wcslen(wstr) + 1; if (n == 1) return ""; #if __S3E__ char *s = (char *)fastAlloc(4 * n); s[0] = 0; int len = IwWideCharToUTF8((const ucs2char*)wstr, n, s, n * 4); s[len] = 0; string str = s; fastFree(s); return str; #elif OXYGINE_SDL char *s = 0; if (sizeof(wchar_t) == 2) s = SDL_iconv_string("UTF-8", "UCS-2-INTERNAL", (const char*)wstr, n * sizeof(wchar_t)); else s = SDL_iconv_string("UTF-8", "UCS-4-INTERNAL", (const char*)wstr, n * sizeof(wchar_t)); string str = s; SDL_free(s); return str; #else return "not_implemented"; #endif return ""; }
/** * Define a device master */ JNIEXPORT void JNICALL Java_com_uwemeding_connectivity_CompareAPI_defineDeviceMaster( JNIEnv * env, jobject obj, jstring jname, jobjectArray jconnections) { IMEnv *imEnv = getIMEnv(env, obj, FALSE); jboolean isCopy; const char *c_str = env->GetStringUTFChars(jname, &isCopy); char *name = copyString((char *) c_str); if (isCopy == JNI_TRUE) env->ReleaseStringUTFChars(jname, c_str); // loop thru the array ant get all the connections unsigned int size = (unsigned int) env->GetArrayLength(jconnections); char **args = (char **) fastAlloc(size * sizeof (char *)); for (unsigned int i = 0; i < size; i++) { jstring j_str = (jstring) env->GetObjectArrayElement(jconnections, i); c_str = env->GetStringUTFChars(j_str, &isCopy); args[i] = copyString((char *) c_str); if (isCopy == JNI_TRUE) env->ReleaseStringUTFChars(j_str, c_str); env->DeleteLocalRef(j_str); } createDefineDeviceMaster(imEnv, name, size, args); }
/** * Define a device master */ JNIEXPORT void JNICALL Java_com_uwemeding_connectivity_CompareAPI_defineDeviceVertex( JNIEnv * env, jobject obj, jint jgraphNumber, jstring jname, jobject jinstObject, jobjectArray jconnections) { IMEnv *imEnv = getIMEnv(env, obj, FALSE); /* * what graph are we working on */ int graphNumber = (int) jgraphNumber; if (graphNumber < 0 && graphNumber > 1) throwError(imEnv, "Graph number can only be 0 or 1.\n"); /* * assign the current graph */ imEnv->graphEnv = &imEnv->__graphEnv[graphNumber]; jboolean isCopy; const char *c_str = env->GetStringUTFChars(jname, &isCopy); char *name = copyString((char *) c_str); if (isCopy == JNI_TRUE) env->ReleaseStringUTFChars(jname, c_str); uint64_t instObject = (uint64_t) (env->NewGlobalRef(jinstObject)); /* * loop thru the array ant get all the connections */ unsigned int size = (unsigned int) env->GetArrayLength(jconnections); char **args = (char **) fastAlloc(size * sizeof (char *)); for (unsigned int i = 0; i < size; i++) { jstring j_str = (jstring) env->GetObjectArrayElement(jconnections, i); c_str = env->GetStringUTFChars(j_str, &isCopy); args[i] = copyString((char *) c_str); if (isCopy == JNI_TRUE) env->ReleaseStringUTFChars(j_str, c_str); env->DeleteLocalRef(j_str); } createDefineDeviceVertex(imEnv, name, instObject, size, args); }
string *ObjectBase::__getName() const { #if DYNAMIC_OBJECT_NAME if (!__name) { __name = (string*)fastAlloc(sizeof(string)); new (__name) string; } return __name; #else return &__name; #endif }
/** * Define net name aliases */ JNIEXPORT void JNICALL Java_com_uwemeding_connectivity_CompareAPI_defineNetAlias( JNIEnv * env, jobject obj, jint jgraphNumber, jstring jname, jobjectArray jaliases) { IMEnv *imEnv = getIMEnv(env, obj, FALSE); // what graph are we working on int graphNumber = (int) jgraphNumber; if (graphNumber < 0 && graphNumber > 1) throwError(imEnv, "Graph number can only be 0 or 1.\n"); // assign the current graph imEnv->graphEnv = &imEnv->__graphEnv[graphNumber]; // Get the net we are aliasing jboolean isCopy; const char *c_str = env->GetStringUTFChars(jname, &isCopy); if (isCopy == JNI_TRUE) env->ReleaseStringUTFChars(jname, c_str); // loop thru the array and get all the net aliases unsigned int size = (unsigned int) env->GetArrayLength(jaliases); char **args = (char **) fastAlloc(size * sizeof (char *)); for (unsigned int i = 0; i < size; i++) { jstring j_str = (jstring) env->GetObjectArrayElement(jaliases, i); c_str = env->GetStringUTFChars(j_str, &isCopy); args[i] = copyString((char *) c_str); if (isCopy == JNI_TRUE) env->ReleaseStringUTFChars(j_str, c_str); env->DeleteLocalRef(j_str); } defineNetAlias(imEnv, (char *) c_str, (int) size, args); }
wstring utf8tows(const char *utf8str) { if (!utf8str) return L""; int n = strlen(utf8str) + 1; if (n == 1) return L""; #if __S3E__ wchar_t *s = (wchar_t *)fastAlloc(4 * n); s[0] = 0; int len = IwUTF8ToWideChar(utf8str, n, (ucs2char*)s, n * 4); s[len] = 0; wstring str = s; fastFree(s); return str; #elif OXYGINE_SDL wchar_t *s = 0; if (sizeof(wchar_t) == 2) s = (wchar_t*)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", utf8str, n); else s = (wchar_t*)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", utf8str, n); wstring str = s; SDL_free(s); return str; #else return L"not_implemented"; #endif }
void* PoolObject::operator new(size_t size) { return fastAlloc(size); }