A
download IEnumVARIANT.cpp
Language: C++
LOC: 158
Project Info
JCom (Java-COM Bridge)(jcom)
Server: SourceForge
Type: cvs
...e\j\jcom\jcom\jcom\src\cpp\
   callCom.cpp
   Com.cpp
   guid.cpp
   IDispatch.cpp
   IEnumVARIANT.cpp
   InvokeHelper.cpp
   IPersist.cpp
   ITypeInfo.cpp
   ITypeLib.cpp
   IUnknown.cpp
   JCom.h
   ...2_no_0005fji_jcom_Com.h
   ...005fji_jcom_IDispatch.h
   ...fji_jcom_IEnumVARIANT.h
   ...0005fji_jcom_IPersist.h
   ...005fji_jcom_ITypeInfo.h
   ...0005fji_jcom_ITypeLib.h
   ...0005fji_jcom_IUnknown.h
   JString.cpp
   VARIANT.cpp

#include <jni.h>
//#include "IEnumVARIANT.h"

// V^CvJNI(jdk1.2ȍ~)
//#include "jp_0005cne_0005cso_0005fnet_0005cga2_0005cno_0005fji_0005cjcom_0005cIEnumVARIANT.h"
// Â^CvJNI(ȂƂjdk1.2O)
#include "jp_ne_so_0005fnet_ga2_no_0005fji_jcom_IEnumVARIANT.h"

#include "atlbase.h"
#include "atlconv.h"
#include "JCom.h"



/* **********************************************************************
 * Class:     IEnumVARIANT
 * Method:    Next
 * Signature: ()Ljava/lang/Object;
	PŽ̃IuWFNgo܂B
	̃IuWFNgȂꍇnullԂ܂B
 * **********************************************************************/
//JNIEXPORT jobject JNICALL Java_IEnumVARIANT_Next__(JNIEnv *env, jobject obj)
JNIEXPORT jobject JNICALL Java_jp_0005cne_0005cso_1net_0005cga2_0005cno_1ji_0005cjcom_0005cIEnumVARIANT_Next__
  (JNIEnv *env, jobject obj)
{
	// IEnumVARIANTC^[tF[XoB
	jclass cls = env->GetObjectClass(obj);
	jfieldID fieldID = env->GetFieldID(cls, "pIUnknown", "I"); 
	IEnumVARIANT* pIEnumVARIANT = (IEnumVARIANT*)env->GetIntField(obj, fieldID);
	if(pIEnumVARIANT == NULL) {
		// OZbg
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, "IEnumVARIANT not created");
		return NULL;
	}

	// Next\bhĂ
	VARIANT vresult;
	VariantInit(&vresult);
	HRESULT hr = pIEnumVARIANT->Next(1, &vresult, NULL);
	if(hr != 0 && hr != S_FALSE) {
		// OZbg
		char message[256];
		sprintf(message, "IEnumVARIANT.Next() failed HRESULT=0x%XL",hr);
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, message);
		return NULL;
	}
	// 擾IuWFNgŌ̂Ƃɂ null ԂB
	if(hr == S_FALSE) {
		return NULL;
	}

	// 擾IuWFNgJavajava.lang.Objectɕϊ
	jobject jresult;
	int ret = VARIANT2jobject(env, obj, &vresult, &jresult);
	VARIANT_free(&vresult);
	if(ret != 0) {
		// OZbg
		char message[256];
		sprintf(message, "cannot convert VT=0x%X",ret);
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, message);
		return NULL;
	}

	return jresult;
}


/* **********************************************************************
 * Class:     IEnumVARIANT
 * Method:    Next
 * Signature: (I)[Ljava/lang/Object;
	w肵̃IuWFNgo܂B
	c肪Ȃꍇ́Aw肵ȉɂȂꍇ܂B
	z̗vfɒӂĉB
	celt͂Pȏ̐w肵ĉB
	͖̎ɍsȂĂAȂNext()JԂ΂łB
	Â`oh͊֐ĂяoɂI[o[wbh炷߂
	pӂĂ̂ŁA邽߁Â`ohpӂĂB
 * **********************************************************************/
//JNIEXPORT jobjectArray JNICALL Java_IEnumVARIANT_Next__I(JNIEnv *env, jobject obj, jint celt)
JNIEXPORT jobjectArray JNICALL Java_jp_0005cne_0005cso_1net_0005cga2_0005cno_1ji_0005cjcom_0005cIEnumVARIANT_Next__I
  (JNIEnv *env, jobject obj, jint celt)
{
	int i;
	// IEnumVARIANTC^[tF[XoB
	jclass cls = env->GetObjectClass(obj);
	jfieldID fieldID = env->GetFieldID(cls, "pIUnknown", "I"); 
	IEnumVARIANT* pIEnumVARIANT = (IEnumVARIANT*)env->GetIntField(obj, fieldID);
	if(pIEnumVARIANT == NULL) {
		// OZbg
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, "IEnumVARIANT not created");
		return NULL;
	}

	// Next\bhĂ
	VARIANT* vresult = new VARIANT[celt];
	for(i=0; i<celt; i++) {
		VariantInit(&vresult[i]);
	}

	unsigned long celtFetched = 0;
	HRESULT hr = pIEnumVARIANT->Next(celt, vresult, &celtFetched);
	if(hr != 0 && hr != S_FALSE) {
		// OZbg
		char message[256];
		sprintf(message, "IEnumVARIANT.Next() failed HRESULT=0x%XL",hr);
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, message);
		// mۂIuWFNgׂĔj
		delete[] vresult;
		return NULL;
	}

	// Object̔z쐬B
	jclass clsObject = env->FindClass("java/lang/Object");
	jobjectArray jresult = env->NewObjectArray(celtFetched, clsObject, NULL);
	if(jresult==NULL) {
		// OZbg
		char message[256];
		sprintf(message, "Not enough memory ");
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, message);
		// mۂIuWFNgׂĔj
		delete[] vresult;
		return NULL;
	}

	// 擾IuWFNgJavajava.lang.Objectɕϊ
	for(i=0; i<celtFetched; i++) {
		jobject objElem;
		int ret = VARIANT2jobject(env, obj, &vresult[i], &objElem);
		VARIANT_free(&vresult[i]);
		if(ret != 0) {
			// OZbg
			char message[256];
			sprintf(message, "cannot convert VT=0x%X",ret);
			jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
			env->ThrowNew(clsJComException, message);
			// mۂIuWFNgׂĔj
			// evf͔jKvȂBfbB
			delete[] vresult;
			return NULL;
		}
		env->SetObjectArrayElement(jresult, i, objElem);
	}

	delete[] vresult;
	return jresult;
}

/* **********************************************************************
 * Class:     IEnumVARIANT
 * Method:    Reset
 * Signature: ()V
 * **********************************************************************/
//JNIEXPORT void JNICALL Java_IEnumVARIANT_Reset(JNIEnv *env, jobject obj)
JNIEXPORT void JNICALL Java_jp_0005cne_0005cso_1net_0005cga2_0005cno_1ji_0005cjcom_0005cIEnumVARIANT_Reset
  (JNIEnv *env, jobject obj)
{
	// IEnumVARIANTC^[tF[XoB
	jclass cls = env->GetObjectClass(obj);
	jfieldID fieldID = env->GetFieldID(cls, "pIUnknown", "I"); 
	IEnumVARIANT* pIEnumVARIANT = (IEnumVARIANT*)env->GetIntField(obj, fieldID);
	if(pIEnumVARIANT == NULL) {
		// OZbg
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, "IEnumVARIANT not created");
		return;
	}

	// Reset\bhĂ
	VARIANT vresult;
	VariantInit(&vresult);
	HRESULT hr = pIEnumVARIANT->Reset();
	if(hr != 0) {
		// OZbg
		char message[256];
		sprintf(message, "IEnumVARIANT.Reset() failed HRESULT=0x%XL",hr);
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, message);
		return;
	}
}

/* **********************************************************************
 * Class:     IEnumVARIANT
 * Method:    Skip
 * Signature: (I)V
 * **********************************************************************/
//JNIEXPORT void JNICALL Java_IEnumVARIANT_Skip(JNIEnv *env, jobject obj, jint celt)
JNIEXPORT void JNICALL Java_jp_0005cne_0005cso_1net_0005cga2_0005cno_1ji_0005cjcom_0005cIEnumVARIANT_Skip
  (JNIEnv *env, jobject obj, jint celt)
{
	// IEnumVARIANTC^[tF[XoB
	jclass cls = env->GetObjectClass(obj);
	jfieldID fieldID = env->GetFieldID(cls, "pIUnknown", "I"); 
	IEnumVARIANT* pIEnumVARIANT = (IEnumVARIANT*)env->GetIntField(obj, fieldID);
	if(pIEnumVARIANT == NULL) {
		// OZbg
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, "IEnumVARIANT not created");
		return;
	}

	// Skip\bhĂ
	VARIANT vresult;
	VariantInit(&vresult);
	HRESULT hr = pIEnumVARIANT->Skip((unsigned long)celt);
	if(hr != 0) {
		// OZbg
		char message[256];
		sprintf(message, "IEnumVARIANT.Skip(%d) failed HRESULT=0x%XL",celt, hr);
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, message);
		return;
	}
}


//======================================================================================
//	Java 1.1ȑÕC^[tF[X

JNIEXPORT jobject JNICALL Java_jp_ne_so_1net_ga2_no_1ji_jcom_IEnumVARIANT__1next__
  (JNIEnv *env, jobject obj)
{
	return Java_jp_0005cne_0005cso_1net_0005cga2_0005cno_1ji_0005cjcom_0005cIEnumVARIANT_Next__(env, obj);
}

JNIEXPORT jobjectArray JNICALL Java_jp_ne_so_1net_ga2_no_1ji_jcom_IEnumVARIANT__1next__I
  (JNIEnv *env, jobject obj, jint celt)
{
	return Java_jp_0005cne_0005cso_1net_0005cga2_0005cno_1ji_0005cjcom_0005cIEnumVARIANT_Next__I(env, obj, celt);
}

JNIEXPORT void JNICALL Java_jp_ne_so_1net_ga2_no_1ji_jcom_IEnumVARIANT__1reset
  (JNIEnv *env, jobject obj)
{
	Java_jp_0005cne_0005cso_1net_0005cga2_0005cno_1ji_0005cjcom_0005cIEnumVARIANT_Reset(env, obj);
}

JNIEXPORT void JNICALL Java_jp_ne_so_1net_ga2_no_1ji_jcom_IEnumVARIANT__1skip
  (JNIEnv *env, jobject obj, jint celt)
{
	Java_jp_0005cne_0005cso_1net_0005cga2_0005cno_1ji_0005cjcom_0005cIEnumVARIANT_Skip(env, obj, celt);
}

About Koders | Resources | Downloads | Support | Black Duck | Terms of Service | DMCA | Privacy Policy | Contact Us