001 package org.bridj.cpp.mfc;
002
003 import org.bridj.Pointer;
004 import org.bridj.ann.Field;
005 import org.bridj.func.Fun0;
006
007 public class CRuntimeClass extends MFCObject {
008 // Attributes
009 @Field(0)
010 public native Pointer<Byte> m_lpszClassName();
011 public native void m_lpszClassName(Pointer<Byte> m_lpszClassName);
012 @Field(1)
013 public native int m_nObjectSize();
014 public native void m_nObjectSize(int m_nObjectSize);
015 @Field(2)
016 public native int m_wSchema(); // schema number of the loaded class
017 public native void m_wSchema(int m_wSchema); // schema number of the loaded class
018
019 @Field(3)
020 public native Pointer<Fun0<Pointer<CObject>>> m_pfnCreateObject(); // NULL => abstract class
021 public native void m_pfnCreateObject(Pointer<Fun0<Pointer<CObject>>> m_pfnCreateObject); // NULL => abstract class
022
023 /*#ifdef _AFXDLL
024 CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();
025 #else
026 CRuntimeClass* m_pBaseClass;
027 #endif
028 */
029 @Field(4)
030 public native Pointer<CRuntimeClass> m_pBaseClass();
031 public native void m_pBaseClass(Pointer<CRuntimeClass> m_pBaseClass);
032
033 // Operations
034 public native Pointer<CObject> CreateObject();
035 public native boolean IsDerivedFrom(Pointer<CRuntimeClass> pBaseClass);
036
037 // dynamic name lookup and creation
038 public native static Pointer<CRuntimeClass> FromName(Pointer<Byte> /*LPCSTR*/ lpszClassName);
039 public native static Pointer<CRuntimeClass> FromName$2(Pointer<Character> lpszClassName);
040 public native static Pointer<CObject> CreateObject(Pointer<Byte> lpszClassName);
041 public native static Pointer<CObject> CreateObject$2(Pointer<Character> lpszClassName);
042
043 // Implementation
044 public native void Store(Pointer<CArchive> ar);
045 public native static Pointer<CRuntimeClass> Load(Pointer<CArchive> ar, Pointer<Integer> pwSchemaNum);
046
047 // CRuntimeClass objects linked together in simple list
048 @Field(5)
049 public native Pointer<CRuntimeClass> m_pNextClass(); // linked list of registered classes
050 public native void m_pNextClass(Pointer<CRuntimeClass> m_pNextClass); // linked list of registered classes
051 @Field(6)
052 public native Pointer<?> /*AFX_CLASSINIT*/ m_pClassInit();
053 public native void m_pClassInit(Pointer<?> m_pClassInit);
054 }