Main Page | Modules | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

xmog_base.h

00001 /*
00002  * Copyright 1999-2006 by Codemesh, Inc.  ALL RIGHTS RESERVED.
00003  */
00004 
00005 #ifndef xmog_base_inc
00006 #define xmog_base_inc
00007 
00008 
00009 #include "xmog.h"
00010 #include "xmog_atomic_pointer.h"
00011 
00012 
00013 class xmog_localenv;
00014 class xmog_java_array;
00015 class xmog_java_class;
00016 class xmog_java_dynamic;
00017 class xmog_java_ref;
00018 
00019 
00028 struct XMOG_DECLSPEC xmog_base
00029 {
00035     xmog_base();
00036 
00049     xmog_base( xmog_java_array * _ref, jint _index );
00050 
00066     xmog_base( xmog_java_ref * _ref, xmog_java_dynamic * _dynamic, xmog_flags _flags );
00067 
00083     xmog_base( xmog_java_class * _clazz, xmog_java_dynamic * _dynamic, xmog_flags _flags );
00084 
00103     XMOG_EXPLICIT xmog_base( xmog_base * _delegate, bool _owns_delegate = true );
00104 
00114     xmog_base( jobject _local, xmog_flags _flags );
00115 
00119     virtual ~xmog_base();
00120 
00131     virtual void        copy_jobject_( xmog_base * _rhs, xmog_localenv * env = NULL );
00132 
00141     virtual jobject     get_owning_jobject_( xmog_localenv * env = NULL );
00142 
00151     virtual jobject     get_jobject_( xmog_localenv * env = NULL ) const;
00152 
00161     virtual jobject     get_released_local_jobject_( xmog_localenv * env = NULL ) const;
00162 
00166     virtual bool        is_null_( xmog_localenv * env = NULL ) const;
00167 
00171     virtual bool        is_same_( const xmog_base & _rhs, xmog_localenv * env = NULL ) const;
00172 
00181     virtual jobject     duplicate_jobject_( xmog_localenv * env = NULL ) const;
00182 
00192     virtual void        set_jobject_( xmog_base * _rhs, xmog_localenv * env = NULL );
00193 
00204     virtual void        transfer_jobject_( xmog_base * _rhs, xmog_localenv * env = NULL );
00205 
00212     virtual xmog_base * xmog_to_( xmog_flags flags, xmog_localenv * env = NULL );
00213 
00227     virtual xmog_base * xmog_fill_with_standalone_for_( xmog_base * _rhs, xmog_localenv * env = NULL );
00228 
00244     virtual xmog_java_class *       xmog_get_java_peer( xmog_localenv * env = NULL );
00245 
00270     virtual int         xmog_create_java_peer( xmog_java_class * clazz, xmog_localenv * env = NULL, xmog_flags flags = xmog_base::GLOBAL );
00271 
00288     virtual int         xmog_to_java_peer( xmog_localenv * env = NULL );
00289 
00302     virtual void        xmog_lazy_write( xmog_localenv * env = NULL );
00303 
00309     virtual void        xmog_invalidate( xmog_localenv * env = NULL );
00310 
00317     void                release_standalone( xmog_localenv * env = NULL );
00318 
00322     void                release_delegate();
00323 
00336     XMOG_JOBJECT_HOLDER     owner_;
00337     
00338 
00352     union
00353     {
00358         xmog_java_dynamic * dynamic_;
00359 
00363         jint                index_;
00364     };
00365 
00369     xmog_flags              flags_;
00370 
00382     enum flags
00383     {
00384         STAND_ALONE = 1,
00385         ARRAY_ELEMENT = 2,
00386         DYNAMIC = 4,
00387         DELEGATE = 8,
00388 
00389         LOCAL = 16,
00390         WEAK_GLOBAL = 32,
00391         GLOBAL = 64,
00392         REMOTE = 128,
00393 
00394         CACHING = 256,
00395         CACHE_INVALID = 512,
00396         CACHE_DIRTY = 1024,
00397         CACHE_LAZY_WRITE = 2048,
00398 
00399         OWNS_DELEGATE = 4096,
00400 
00401         STRING_DIRTY = 8192,
00402         STRING_PTR = 16384,
00403         STRING_WPTR = 32768,
00404 
00405         INDIRECT = 65536,
00406         NONVIRT = 131072,
00407 
00408         SUPPRESS_LOGGING = 262144,
00409 
00410         CATEGORY = 15,
00411         TYPE = 240,
00412         CACHE = 3840
00413     };
00414 };
00415 
00416 
00417 #if !defined (XMOG_LACKS_INLINE_FUNCTIONS)
00418 #   include "xmog_base.inl"
00419 #else
00420 #   include "xmog_java_ref.h"
00421 #   include "xmog_java_array.h"
00422 #   include "xmog_java_class.h"
00423 #   include "xmog_java_dynamic.h"
00424 #   include "xmog_exception.h"
00425 #   include "xmog_error_handler.h"
00426 #   include "xmog_jvm_loader.h"
00427 #   include "xmog_localenv.h"
00428 #endif
00429 
00430 
00431 #endif /* xmog_base_inc */

Generated on Wed May 31 14:01:19 2006 for Shared Codemesh Runtime Library API Reference by  doxygen 1.4.1