Changeset 604


Ignore:
Timestamp:
08/16/14 07:24:02 (4 years ago)
Author:
jls17
Message:
Location:
branches/work_311
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • branches/work_311/ARInsideLib.vcproj

    r603 r604  
    768768                        <File 
    769769                                RelativePath=".\core\OpenWindowHelper.h" 
     770                                > 
     771                        </File> 
     772                        <File 
     773                                RelativePath=".\core\OpenWindowSampleData.cpp" 
     774                                > 
     775                        </File> 
     776                        <File 
     777                                RelativePath=".\core\OpenWindowSampleData.h" 
    770778                                > 
    771779                        </File> 
  • branches/work_311/core/OpenWindowHelper.cpp

    r603 r604  
    4848} 
    4949 
    50 bool CDocActionOpenWindowHelper::GetSampleData(CARActiveLink& actLink, IfElseState ifElse, int nAction, string &server, string &schema) 
    51 { 
    52         // ok, this is a very ugly design of the ARS api. The sample data of 
    53         // the action is stored within the object properties of the active- 
    54         // link. that wouldnt be that bad if we just need to read the data 
    55         // from there, but the data is something like an API structure and 
    56         // there is no ARDecode*** function. So we need to implement our 
    57         // own decode routine. 
    58  
    59         const ARPropList &propList = actLink.GetPropList(); 
    60  
    61         // first, decide which property we are looking for 
    62         unsigned int PropID = (ifElse == IES_IF ? AR_OPROP_WINDOW_OPEN_IF_SAMPLE_SERVER_SCHEMA : AR_OPROP_WINDOW_OPEN_ELSE_SAMPLE_SERVER_SCHEMA); 
    63  
    64         // now find the index of the object property 
    65         int propIndex = -1; 
    66         for (unsigned int k=0; k < propList.numItems; ++k) 
    67         { 
    68                 if (propList.props[k].prop == PropID) 
    69                 { 
    70                         propIndex = k; 
    71                         break; 
    72                 } 
    73         } 
    74  
    75         if (propIndex > -1 && propList.props[propIndex].value.dataType == AR_DATA_TYPE_CHAR) 
    76         { 
    77                 // the property is found and has correct data type 
    78                 char* propData = propList.props[propIndex].value.u.charVal; 
    79                 unsigned int chrIndex = 0;      // this holds the current position within propData 
    80                  
    81                 int listCount = atoi(propData); // retrieve lists item count 
    82                 while (propData[chrIndex] != '\\' && propData[chrIndex] != 0) ++chrIndex; 
    83                 if (listCount > 0 && propData[chrIndex] != 0) 
    84                 { 
    85                         ++chrIndex; // skip last "\" 
    86                         // now we need to check each entry of the list against this actions index 
    87                         for (int listIndex = 0; listIndex < listCount; ++listIndex) 
    88                         { 
    89                                 int propActionIndex = atoi(&propData[chrIndex]); 
    90                                 while (propData[chrIndex] != '\\' && propData[chrIndex] != 0) ++chrIndex; 
    91                                 if (propData[chrIndex] == '\\') ++chrIndex; 
    92  
    93                                 if (propActionIndex == nAction && propData[chrIndex] != 0) 
    94                                 { 
    95                                         // match! found the action we were looking for! 
    96                                         unsigned int strStart = chrIndex; 
    97                                         while (propData[chrIndex] != '\\' && propData[chrIndex] != 0) ++chrIndex; 
    98                                         if (propData[chrIndex] == 0) break; 
    99  
    100                                         unsigned int strLen = chrIndex - strStart; 
    101                                         server.resize(strLen); 
    102                                         strncpy(&server[0], &propData[strStart], chrIndex - strStart); 
    103  
    104                                         ++chrIndex; // skip last "\" 
    105                                         strStart = chrIndex; 
    106                                         while (propData[chrIndex] != '\\' && propData[chrIndex] != 0) ++chrIndex; 
    107                                         //if (propData[chrIndex] == 0) break; 
    108  
    109                                         strLen = chrIndex - strStart; 
    110                                         schema.resize(strLen); 
    111                                         strncpy(&schema[0], &propData[strStart], chrIndex - strStart); 
    112                                         return true;    // we are done 
    113                                 } 
    114  
    115                                 // skip next two data entries now 
    116                                 for (int tmpDataCount = 0; tmpDataCount < 2; ++tmpDataCount) 
    117                                 { 
    118                                         while(propData[chrIndex] != '\\' && propData[chrIndex] != 0) ++chrIndex; 
    119                                         if (propData[chrIndex] == 0) break; 
    120                                         ++chrIndex; // skip last "\" 
    121                                 } 
    122                                 if (propData[chrIndex] == 0) break; 
    123                         } 
    124                 } 
    125         } 
    126         return false; 
    127 } 
    128  
    12950bool CDocActionOpenWindowHelper::ParseReportData() 
    13051{ 
  • branches/work_311/core/OpenWindowHelper.h

    r603 r604  
    2323        CDocActionOpenWindowHelper(char* reportString); 
    2424        ~CDocActionOpenWindowHelper(void); 
    25  
    26         static bool GetSampleData(CARActiveLink& actLink, IfElseState ifElse, int nAction, string& server, string& schema); 
    2725 
    2826        bool IsValid(); // returns true if the report string passed to the constructor could be parsed without errors 
  • branches/work_311/doc/DocSchemaDetails.cpp

    r603 r604  
    2626#include "../core/ARHandle.h" 
    2727#include "../core/OpenWindowHelper.h" 
     28#include "../core/OpenWindowSampleData.h" 
    2829#include "DocOverlayHelper.h" 
    2930#include "DocMain.h" 
     
    14701471                                        { 
    14711472                                                string sampleServer; 
    1472                                                 CDocActionOpenWindowHelper::GetSampleData(al, IES_IF, i,        sampleServer, openWindowSchema); 
     1473                                                OpenWindowSampleData::GetSampleData(al, IES_IF, i,      sampleServer, openWindowSchema); 
    14731474                                        } 
    14741475                                        else 
     
    14981499                                                { 
    14991500                                                        string sampleServer; 
    1500                                                         CDocActionOpenWindowHelper::GetSampleData(al, IES_ELSE, i,      sampleServer, openWindowSchema); 
     1501                                                        OpenWindowSampleData::GetSampleData(al, IES_ELSE, i,    sampleServer, openWindowSchema); 
    15011502                                                } 
    15021503                                                else 
  • branches/work_311/doc/actions/DocOpenWindowAction.cpp

    r603 r604  
    2121#include "../../core/ARAssignHelper.h" 
    2222#include "../../core/OpenWindowHelper.h" 
     23#include "../../core/OpenWindowSampleData.h" 
    2324#include "../../output/ObjNotFound.h" 
    2425#include "../../output/URLLink.h" 
     
    4344                if(action.serverName[0] == '$') 
    4445                { 
    45                         CDocActionOpenWindowHelper::GetSampleData(context.getActLink(), context.getIfElse(), context.getActionIndex(), openWindowServer, openWindowSchemaName); 
     46                        OpenWindowSampleData::GetSampleData(context.getActLink(), context.getIfElse(), context.getActionIndex(), openWindowServer, openWindowSchemaName); 
    4647                } 
    4748 
  • branches/work_311/project.cmake/files.cmake

    r603 r604  
    3030 core/ChangeHistoryEntry.cpp 
    3131 core/OpenWindowHelper.cpp 
     32 core/OpenWindowSampleData.cpp 
    3233) 
    3334SET (ARINSIDE_SRCS_CORE_H 
     
    6061 core/ChangeHistoryEntry.h 
    6162 core/OpenWindowHelper.h 
     63 core/OpenWindowSampleData.h 
    6264) 
    6365SOURCE_GROUP(core FILES ${ARINSIDE_SRCS_CORE_CPP} ${ARINSIDE_SRCS_CORE_H}) 
Note: See TracChangeset for help on using the changeset viewer.