javauis/javalegacyutils/inc/jutils.h
changeset 76 4ad59aaee882
parent 69 773449708c84
child 79 2f468c1958d0
--- a/javauis/javalegacyutils/inc/jutils.h	Thu Sep 02 20:20:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/*
-* Copyright (c) 1999-2004 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-#ifndef JUTILS_H
-#define JUTILS_H
-
-#include <e32base.h>
-#include <badesca.h>
-#include "jni.h"
-
-//----------------------------------------------------------------------------
-// RJString takes a Java JNI string and converts it to an
-// Epoc string. It retains the JNI environment and the string
-// in order to release the string resources during destruction
-class RJString : public TPtrC16
-{
-public:
-    IMPORT_C RJString(JNIEnv& aJni, jstring aString);
-    IMPORT_C ~RJString();
-
-private:
-    // Prevent accidental copying because of the shared underlying Java
-    // string
-    RJString(const RJString&);
-    RJString& operator=(const RJString&);
-
-private:
-    JNIEnv& iJni;
-    jstring iString;
-};
-
-//----------------------------------------------------------------------------
-
-IMPORT_C jstring CreateJavaString(JNIEnv& aJni, const TDesC16& aString);
-
-void AddToJavaStringArrayL(JNIEnv& aJni, jobjectArray& aContainer, TInt aPosition, const TDesC& aString);
-
-IMPORT_C jobjectArray CopyToNewJavaStringArrayL(JNIEnv& aJni, const CDesCArray& aNativeArray);
-
-
-
-class RJArray
-{
-public:
-    RJArray(JNIEnv& aJni);
-    ~RJArray();
-    void* GetPrimitiveArrayCriticalLC(jarray aJavaArray, TBool aMutable = EFalse);
-    static void CleanupArrayAccess(TAny* aRJArray);
-
-private:
-    void ReleasePrimitiveArrayCritical();
-
-private:
-    JNIEnv& iJni;
-    jarray iJavaArray;
-    TUint8* iArrayPtr;
-    TBool iMutable;
-};
-
-
-
-class ArrayUtils
-{
-public:
-    static TInt CopyToNative(JNIEnv& aJni, jbyteArray aJavaBuffer,
-                             TInt aOffset, TInt aLength, TDes8& aNativeBuffer);
-    IMPORT_C static TInt CopyToJava(JNIEnv& aJni, const TDesC8& aNativeBuffer,
-                                    jbyteArray aJavaBuffer, TInt aOffset, TInt aLength);
-    static jobjectArray CopyToNewJavaStringArray(JNIEnv& aJni,
-            const RPointerArray<HBufC>& aNativeArray);
-
-};
-
-
-
-//----------------------------------------------------------------------------
-// Constants that define the date/time '00:00, 1 Jan 1970' when used to create a TTime object
-const TUint JavaUpperTimeFor1970 = 14474675;
-const TUint JavaLowerTimeFor1970 = 254771200;
-
-//----------------------------------------------------------------------------
-// Used for converting between a Java jlong value and an Epoc
-// TTime and vice-versa. The jlong represents the number of
-// milliseconds since 00:00 1st Jan 1970.
-class JavaEpocTime
-{
-public:
-    IMPORT_C static TTime CreateEpocTTime(jlong aJavaTime);
-    IMPORT_C static jlong CreateJavaTime(TTime aEpocTime);
-};
-
-//-----------------------------------------------------------------------------
-// Creating integer 'handles' from C++ objects for referencing them inside Java
-// The shift garauntees a positive integer, so object creation native methods
-// can overload the return value to be a handle or an error code
-//
-// Unhanding the integer requires the destination type to be known, so is
-// implemented as a template function, it should be invoked as
-//
-//      CXyz* xyz=JavaUnhand(aHandle);
-//
-const TInt KJavaHandleShift=2;
-
-inline TInt JavaMakeHandle(const TAny* aObject)
-{
-    return reinterpret_cast<TUint>(aObject)>>KJavaHandleShift;
-}
-
-template <typename T>
-inline T* JavaUnhand(TInt aHandle)
-{
-    return reinterpret_cast<T*>(aHandle<<KJavaHandleShift);
-}
-
-
-//-----------------------------------------------------------------------------
-// Provide the handle/unhand pattern for CBase derived classes, to gain the
-// Handle(), Unhand(), New() and TConstructor members, you should derive from
-// this class using the following pattern:
-//
-//  class CXyz : public CJavaPeer<CXyz>
-//      {...};
-//
-// The TConstructor member allows for more complex factory functions,
-// providing automatic use of the cleanup stack. Supposing the derived
-// class has a second phase constructor ConstructL(), the factory function
-// could be:
-//
-//  TInt CXyz::New(...)
-//      {
-//      TRAPD(h,TConstructor c;c->ConstructL(...);h=c.GetHandle();)
-//      return h;
-//      }
-//
-template <class T>
-class CJavaPeer : public CBase
-{
-protected:
-    class TConstructor
-    {
-    public:
-        inline TConstructor(T* aObject)
-                :iObject(aObject)
-        {
-            CleanupStack::PushL(aObject);
-        }
-        inline TConstructor()
-                :iObject(new(ELeave) T)
-        {
-            CleanupStack::PushL(iObject);
-        }
-        inline T* operator->() const
-        {
-            return static_cast<T*>(iObject);
-        }
-        inline TInt GetHandle()
-        {
-            CleanupStack::Pop();
-            return JavaMakeHandle(iObject);
-        }
-    private:
-        CBase* iObject;
-    };
-public:
-    inline TInt Handle() const
-    {
-        return JavaMakeHandle(this);
-    }
-    inline static T& Unhand(TInt aHandle)
-    {
-        return *JavaUnhand<T>(aHandle);
-    }
-    static TInt New()
-    {
-        T* self=new T;
-        return self ? self->Handle() : KErrNoMemory;
-    }
-};
-
-#endif // JUTILS_H