예제 #1
0
	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 "";		
	}
예제 #2
0
파일: jni.cpp 프로젝트: umeding/isomorphism
/** 
 * 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);
}
예제 #3
0
파일: jni.cpp 프로젝트: umeding/isomorphism
/** 
 * 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);
}
예제 #4
0
	string *ObjectBase::__getName() const
	{
#if DYNAMIC_OBJECT_NAME
		if (!__name)
		{
			__name = (string*)fastAlloc(sizeof(string));
			new (__name) string;			
		}
		return __name;
#else
		return &__name;
#endif
	}
예제 #5
0
파일: jni.cpp 프로젝트: umeding/isomorphism
/** 
 * 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);
}
예제 #6
0
	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
	}
예제 #7
0
	void* PoolObject::operator new(size_t size)
	{
		return fastAlloc(size);			 
	}