I have submitted a patch for the RTL project (
http://sourceforge.net/projects/rtl/) to make it compatible with ARS 7.x.
If anyone has any programs that use rtl, could you please test your
application using the 7.x libraries using this patch?  Let me know if you
run into any issues.  I successfully compile JORJNI using the 7.x libraries
using these patches.  The changes should also be backward compatible with
the 6.x api, so even if you don't have a 7.x arserver, testing these diffs
with the 6.x api is valuable.

The diffs and complete files are available in the submitted patch:
http://sourceforge.net/tracker/index.php?func=detail&aid=1602167&group_id=155932&atid=797756

Thanks,
Axton Grams


Here are the diffs for the files:

--- rtl/Server.h    2006-03-07 11:44:42.000000000 -0500
+++ rtl_updates/Server.h    2006-11-24 03:50:45.000000000 -0500
@@ -44,6 +44,9 @@
    throw Exception(sl); \
}

+#if AR_CURRENT_API_VERSION>=11
+    #define ARAPI_7PLUS
+#endif

namespace rtl {

@@ -500,6 +503,9 @@
        fieldOwner = 0x800,
        fieldLastChanged = 0x1000,
        fieldChangeDiary = 0x2000,
+#ifdef ARAPI_7PLUS
+        fieldFieldOption = 0x4000,
+#endif
        fieldCommonUserProperties = fieldName | fieldDataType |
fieldDefaultValue | fieldDisplayInstanceList | fieldHelpText,
        fieldAllProperties = 0xffff
    };
@@ -548,6 +554,9 @@
            (propertiesMask & fieldDataType) ? &field.dataType : NULL,
            (propertiesMask & fieldOption) ? &field.option : NULL,
            (propertiesMask & fieldCreateMode) ? &field.createMode : NULL,
+#ifdef ARAPI_7PLUS
+            (propertiesMask & fieldFieldOption) ? &field.fieldOption :
NULL,
+#endif
            (propertiesMask & fieldDefaultValue) ? &field.defaultVal :
NULL,
            (propertiesMask & fieldPermissionList) ? &field.permList :
NULL,
            (propertiesMask & fieldLimit) ? &field.limit : NULL,
@@ -609,6 +618,9 @@
        ARUnsignedIntList  unsignedIntList1 = {0, NULL};
        ARUnsignedIntList  unsignedIntList2 = {0, NULL};
        ARUnsignedIntList  unsignedIntList3 = {0, NULL};
+#ifdef ARAPI_7PLUS
+        ARUnsignedIntList  unsignedIntList4 = {0, NULL};
+#endif
        ARValueList            valueList = {0, NULL};
        ARPermissionListList permissionListList = {0, NULL};
        ARFieldLimitList    fieldLimitList = {0, NULL};
@@ -627,6 +639,9 @@
            (propertiesMask & fieldDataType) ? &unsignedIntList1 : NULL,
            (propertiesMask & fieldOption) ? &unsignedIntList2 : NULL,
            (propertiesMask & fieldCreateMode) ? &unsignedIntList3 : NULL,
+#ifdef ARAPI_7PLUS
+            (propertiesMask & fieldFieldOption) ? &unsignedIntList4 : NULL,
+#endif
            (propertiesMask & fieldDefaultValue) ? &valueList : NULL,
            (propertiesMask & fieldPermissionList) ? &permissionListList :
NULL,
            (propertiesMask & fieldLimit) ? &fieldLimitList : NULL,
@@ -661,12 +676,17 @@
                    if (propertiesMask & fieldDataType) {
                        fieldInfo.dataType = unsignedIntList1.intList[i];
                    }
+#ifdef ARAPI_7PLUS
                    if (propertiesMask & fieldOption) {
                        fieldInfo.option = unsignedIntList2.intList[i];
                    }
+#endif
                    if (propertiesMask & fieldCreateMode) {
                        fieldInfo.createMode = unsignedIntList3.intList[i];
                    }
+                    if (propertiesMask & fieldFieldOption) {
+                        fieldInfo.fieldOption = unsignedIntList4.intList
[i];
+                    }
                    if (propertiesMask & fieldDefaultValue) {
                        memcpy(&fieldInfo.defaultVal,
&valueList.valueList[i], sizeof(ARValueStruct));
                    }
@@ -705,6 +725,9 @@
            FreeARUnsignedIntList(&unsignedIntList1, FALSE);
            FreeARUnsignedIntList(&unsignedIntList2, FALSE);
            FreeARUnsignedIntList(&unsignedIntList3, FALSE);
+#ifdef ARAPI_7PLUS
+            FreeARUnsignedIntList(&unsignedIntList4, FALSE);
+#endif
            FreeARValueList(&valueList, FALSE);
            FreeARPermissionListList(&permissionListList, FALSE);
            FreeARDisplayInstanceListList(&dInstListList, FALSE);
@@ -762,6 +785,9 @@
        ARCreateField(&control, const_cast<char *>(form.c_str()), &fieldId,
reservedIdOk,
            const_cast<char *>(field.getName().c_str()),
const_cast<ARFieldMappingStruct *>(static_cast<const ARFieldMappingStruct
*>(field.getFieldMapping())),
            field.getDataType(), field.getOption(), field.getCreateMode(),
+#ifdef ARAPI_7PLUS
+            field.getFieldOption(),
+#endif
            const_cast<ARValueStruct *>(static_cast<const ARValueStruct *>(
field.getDefaultValue())),
            const_cast<ARPermissionList *>(static_cast<const
ARPermissionList *>(field.getPermissionList())),
            const_cast<ARFieldLimitStruct *>(static_cast<const
ARFieldLimitStruct *>(field.getFieldLimit())),
@@ -807,17 +833,27 @@
      * @see getMultipleFields
      * @see Field
      */
-    void setField(const std::string &form, const Field &field, unsigned int
propertiesMask = fieldCommonUserProperties) {
+    void setField(const std::string &form, const Field &field, unsigned int
propertiesMask = fieldCommonUserProperties
+#ifdef ARAPI_7PLUS
+        , unsigned int setFieldOption = 0
+#endif
+        ) {
        FreeARStatusList(&statusList, FALSE);

        unsigned int option = field.getOption();
        unsigned int createMode = field.getCreateMode();
+#ifdef ARAPI_7PLUS
+        unsigned int myfieldOption = field.getFieldOption();
+#endif

        ARSetField(&control, const_cast<char *>(form.c_str()), field.getId
(),
            (propertiesMask & fieldName) ? const_cast<char
*>(field.getName().c_str())
: NULL,
            (propertiesMask & fieldMapping) ?
const_cast<ARFieldMappingStruct *>(static_cast<const ARFieldMappingStruct
*>(field.getFieldMapping())) : NULL,
+#ifdef ARAPI_7PLUS
            (propertiesMask & fieldOption) ? &option : NULL,
+#endif
            (propertiesMask & fieldCreateMode) ? &createMode : NULL,
+            (propertiesMask & fieldFieldOption) ? &myfieldOption : NULL,
            (propertiesMask & fieldDefaultValue) ? const_cast<ARValueStruct
*>(static_cast<const ARValueStruct *>(field.getDefaultValue())) : NULL,
            (propertiesMask & fieldPermissionList) ?
const_cast<ARPermissionList *>(static_cast<const ARPermissionList *>(
field.getPermissionList())) : NULL,
            (propertiesMask &fieldLimit) ? const_cast<ARFieldLimitStruct
*>(static_cast<const ARFieldLimitStruct *>(field.getFieldLimit())) : NULL,
@@ -825,6 +861,9 @@
            (propertiesMask & fieldHelpText) ? const_cast<char *>(
field.getHelpText().c_str()) : NULL,
            (propertiesMask & fieldOwner) ? const_cast<char *>(
field.getOwner().c_str()) : NULL,
            (propertiesMask & fieldChangeDiary) ? const_cast<char *>(
field.getChangeDiary().c_str()) : NULL,
+#ifdef ARAPI_7PLUS
+            setFieldOption,
+#endif
            &statusList);

        HANDLE_ARSTATUSLIST(statusList);
@@ -1383,7 +1422,11 @@
        memset(&compoundSchema, 0, sizeof(compoundSchema));
        compoundSchema.schemaType = AR_SCHEMA_REGULAR;

-        ARCreateSchema(&control, const_cast<char *>(name.c_str()),
&compoundSchema, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, &statusList);
+        ARCreateSchema(&control, const_cast<char *>(name.c_str()),
&compoundSchema, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+#ifdef ARAPI_7PLUS
+            NULL,
+#endif
+            NULL, NULL, NULL, NULL, NULL, &statusList);

        HANDLE_ARSTATUSLIST(statusList);
    }


--- rtl/Field.h    2006-03-07 11:43:38.000000000 -0500
+++ rtl_updates/Field.h    2006-11-24 03:55:21.000000000 -0500
@@ -30,6 +30,10 @@
#include "FieldLimit.h"
#include <string>

+#if AR_CURRENT_API_VERSION>=11
+    #define ARAPI_7PLUS
+#endif
+
namespace rtl {


@@ -47,7 +51,11 @@
{
public:

-    Field() : id(0), timestamp(0), dataType(AR_DATA_TYPE_NULL),
option(AR_FIELD_OPTION_OPTIONAL), createMode(AR_FIELD_OPEN_AT_CREATE) {
+    Field() : id(0), timestamp(0), dataType(AR_DATA_TYPE_NULL),
option(AR_FIELD_OPTION_OPTIONAL), createMode(AR_FIELD_OPEN_AT_CREATE)
+#ifdef ARAPI_7PLUS
+        , fieldOption(AR_FIELD_BITOPTION_NONE)
+#endif
+    {

    }

@@ -58,6 +66,9 @@
        dataType = src.dataType;
        option = src.option;
        createMode = src.createMode;
+#ifdef ARAPI_7PLUS
+        fieldOption = src.fieldOption;
+#endif
        helpText = src.helpText ? src.helpText : "";
        changeDiary = src.changeDiary ? src.changeDiary : "";
        owner = src.owner ? src.owner : "";
@@ -80,6 +91,9 @@
        dataType = src.dataType;
        option = src.option;
        createMode = src.createMode;
+#ifdef ARAPI_7PLUS
+        fieldOption = src.fieldOption;
+#endif
        defaultValue = src.defaultVal;
        permissionList = src.permList;
        fieldLimit = src.limit;
@@ -101,6 +115,9 @@
        out.dataType = dataType;
        out.option = option;
        out.createMode = createMode;
+#ifdef ARAPI_7PLUS
+        out.fieldOption = fieldOption;
+#endif
        memcpy(&out.defaultVal, static_cast<const ARValueStruct
*>(defaultValue), sizeof(out.defaultVal));
        memcpy(&out.permList, static_cast<const ARPermissionList
*>(permissionList), sizeof(out.permList));
        memcpy(&out.limit, static_cast<const ARFieldLimitStruct
*>(fieldLimit), sizeof(out.limit));
@@ -139,6 +156,11 @@
    unsigned int getCreateMode() const {return createMode;}
    void setCreateMode(const unsigned int &value) {createMode = value;}

+#ifdef ARAPI_7PLUS
+    unsigned int getFieldOption() const {return fieldOption;}
+    void setFieldOption(const unsigned int &value) {fieldOption = value;}
+#endif
+
    const Value &getDefaultValue() const {return defaultValue;}
    void setDefaultValue(const Value &value) { defaultValue = value;}

@@ -169,6 +191,9 @@
    unsigned int dataType;
    unsigned int option;
    unsigned int createMode;
+#ifdef ARAPI_7PLUS
+    unsigned int fieldOption;
+#endif
    Value         defaultValue;
    PermissionList permissionList;
    FieldLimit        fieldLimit;

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org ARSlist:"Where the Answers 
Are"

Reply via email to