Re: typedef struct RTTI/Reflection
 
Hector Santos wrote:
I am wondering if MFC with RTTI, if it has any sort of reflection 
concept.  I don't see myself.
 > ...
 >
 > typedef struct tagTFileRecord {
 >   DWORD Status;
 >   DWORD Area;
 >   char Name[SIZE_LONG_FILE_NAME];
 >   char Description[SIZE_FILE_DESCRIPTION];
 >   char Password[SIZE_PASSWORD];
 >   TUserInfo Uploader;
 >   FILETIME PostTime;
 >   FILETIME FileTime;
 >   FILETIME LastAccessed;
 >   DWORD FileFlags;
 >   DWORD FileSize;
 >   DWORD Downloads;
 >   DWORD Cost;
 > } TFileRecord;
 >
 > ...
 >
and in addition, using reflection also create ODBC CTFileRecordSet class 
with the proper DoFieldExchange() member functions.
Currently, the way we do this is with a C/C++ header files parser and 
converter that creates the interfaces for other languages. I am 
wondering if its possible to use MFC/RTTI do automatic this for me for 
C/C++.
Another use will be to create marshalling proxies over the wire RPC 
communications , like we have for Java using a Cpp2Java converter. 
The java class for TFileRecord is:
//****************************************************
// File: TFileRecord.java
// (c) copyright 2002 Santronics Software Inc.
//
//****************************************************
// DO NOT EDIT THIS FILE!!!
// CPP2JAVA GENERATED FROM SOURCE FILE: wctype.h
//****************************************************
package COM.winserver.wildcat;
import java.io.IOException;
public class TFileRecord extends WcRecord {
   public int Status;
   public int Area;
   public String Name;
   public String Description;
   public String Password;
   public TUserInfo Uploader;
   public long PostTime;
   public long FileTime;
   public long LastAccessed;
   public int FileFlags;
   public int FileSize;
   public int Downloads;
   public int Cost;
   // Total size
   public static final int SIZE = 
4+4+MAX_PATH+76+32+TUserInfo.SIZE+8+8+8+4+4+4+4;
   // Constructors
   public TFileRecord()
   {
   }
   public TFileRecord(byte[] x)
   {
     fromByteArray(x);
   }
   // Methods
   protected void writeTo(WcOutputStream out) throws IOException
   {
     super.writeTo(out);
     out.writeInt(Status);
     out.writeInt(Area);
     out.writeString(Name, MAX_PATH);
     out.writeString(Description, 76);
     out.writeString(Password, 32);
     Uploader.writeTo(out);
     out.writeLong(PostTime);
     out.writeLong(FileTime);
     out.writeLong(LastAccessed);
     out.writeInt(FileFlags);
     out.writeInt(FileSize);
     out.writeInt(Downloads);
     out.writeInt(Cost);
   }
   protected void readFrom(WcInputStream in) throws IOException
   {
     super.readFrom(in);
     Status = in.readInt();
     Area = in.readInt();
     Name = in.readString(MAX_PATH);
     Description = in.readString(76);
     Password = in.readString(32);
     Uploader = new TUserInfo(); Uploader.readFrom(in);
     PostTime = in.readLong();
     FileTime = in.readLong();
     LastAccessed = in.readLong();
     FileFlags = in.readInt();
     FileSize = in.readInt();
     Downloads = in.readInt();
     Cost = in.readInt();
   }
}
-- 
HLS