cotton_double/Include/ClassicMIL/MILDyn/mildmr.h

1898 lines
84 KiB
C++

////////////////////////////////////////////////////////////////////////////////
//!
//! \brief Mildmr CAPI header (Mdmr...)
//!
//! AUTHOR: Matrox Imaging
//!
//! COPYRIGHT NOTICE:
//! Copyright © Matrox Electronic Systems Ltd., 1992-2023.
//! All Rights Reserved
// Revision: 10.60.0776
////////////////////////////////////////////////////////////////////////////////
#ifndef __MIL_DMR_H__
#define __MIL_DMR_H__
#if (!M_MIL_LITE) /* MIL FULL ONLY */
/* C++ directive if needed */
#ifdef __cplusplus
extern "C"
{
#endif
////////////////////////////////////////////////////////////////////////////////
// MdmrAlloc ContextTypes
#define M_DOT_MATRIX 2194L
////////////////////////////////////////////////////////////////////////////////
// Indexing, used in other Mdmr functions (MdmrInquire(), MdmrControl(), ...)
#define M_DEFAULT 0x10000000L // also in mil.h
#define M_CONTEXT 0x08000000L // also in mil.h
#define M_GENERAL 0x20000000L // also in milmod.h, milstr.h, ...
#define M_ALL 0x40000000L // also in mil.h
#define M_ANY 0x11000000L // also in mil.h, ...
#define M_FONT_MASK 0x00800000L // also in milstr.h
#define M_STRING_MASK 0x00400000L // also in milstr.h
#define M_CONSTRAINED_POS_MASK 0x00600000L
#define M_REAL_INDEX_MASK 0x000000FFL // also in milstr.h
#define M_FONT_INDEX_FLAG M_FONT_MASK
#define M_STRING_INDEX_FLAG M_STRING_MASK
#define M_FONT_LABEL_FLAG 0x00000000L
#define M_STRING_LABEL_FLAG 0x00C00000L
#define M_POSITION_CONSTRAINED_ORDER_FLAG 0x00200000L
#define M_POSITION_IN_STRING_FLAG 0x00600000L
#define M_INDEX_IN_STRING_FLAG 0x00A00000L
#define M_INDEX_IN_FORMATTED_STRING_FLAG 0x00E00000L
#define M_FONT_INDEX(IndexValue) (M_FONT_MASK | (IndexValue)) // also in milstr.h
#define M_STRING_INDEX(IndexValue) (M_STRING_MASK | (IndexValue)) // also in milstr.h
#define M_FONT_LABEL(LabelValue) (M_FONT_LABEL_FLAG | (LabelValue)) // also in milstr.h
#define M_STRING_LABEL(LabelValue) (M_STRING_LABEL_FLAG | (LabelValue)) // also in milstr.h
#define M_INDEX_IN_STRING(IndexValue) (M_INDEX_IN_STRING_FLAG | (IndexValue))
#define M_INDEX_IN_FORMATTED_STRING(IndexValue) (M_INDEX_IN_FORMATTED_STRING_FLAG | (IndexValue))
#define M_POSITION_IN_STRING(PositionValue) (M_POSITION_IN_STRING_FLAG | (PositionValue))
#define M_POSITION_CONSTRAINED_ORDER(OrderValue) (M_POSITION_CONSTRAINED_ORDER_FLAG | (OrderValue))
#define M_ALL_CONSTRAINED_POSITIONS M_POSITION_CONSTRAINED_ORDER(M_ALL)
#define M_NEW_LABEL 0x04000000L
#define M_OWNER_SYSTEM 1101L // also in mil.h, ...
#define M_MODIFICATION_COUNT 5010L // also in mil.h, ...
////////////////////////////////////////////////////////////////////////////////
// MdmrControl
#define M_STRING_ADD 700L // also in milstr.h
#define M_STRING_DELETE 701L // also in milstr.h
#define M_FONT_ADD 702L // also in milstr.h
#define M_FONT_DELETE 703L // also in milstr.h
#define M_DOT_DIAMETER_MODE 2228L
#define M_DOT_DIAMETER 2229L
#define M_DOT_DIAMETER_SPREAD_MODE 5234L
#define M_DOT_DIAMETER_SPREAD 5028L
#define M_DOT_DIAMETER_STEP 5029L
#define M_STRING_BOX_CENTER_MODE 2230L
#define M_STRING_BOX_CENTER_X 2231L
#define M_STRING_BOX_CENTER_Y 2233L
#define M_TEXT_BLOCK_SIZE_MODE 2236L
#define M_TEXT_BLOCK_WIDTH 2235L
#define M_TEXT_BLOCK_HEIGHT 2237L
#if OldDefinesSupport
#define M_STRING_BOX_SIZE_MODE M_TEXT_BLOCK_SIZE_MODE
#define M_STRING_BOX_WIDTH M_TEXT_BLOCK_WIDTH
#define M_STRING_BOX_HEIGHT M_TEXT_BLOCK_HEIGHT
MIL_DEPRECATED(M_STRING_BOX_SIZE_MODE, 1050)
MIL_DEPRECATED(M_STRING_BOX_WIDTH, 1050)
MIL_DEPRECATED(M_STRING_BOX_HEIGHT, 1050)
#endif
#define M_STRING_ANGLE_MODE 2238L
#define M_STRING_ANGLE 87L
#define M_STRING_ANGLE_INPUT_UNITS 2745L
#define M_ITALIC_ANGLE_MODE 2239L
#define M_ITALIC_ANGLE 2240L
#define M_DOT_LONGITUDINAL_DISTANCE_MODE 2241L
#define M_DOT_LONGITUDINAL_DISTANCE 2242L
#define M_DOT_TRANSVERSE_DISTANCE_MODE 2243L
#define M_DOT_TRANSVERSE_DISTANCE 2246L
#define M_MIN_CONTRAST_MODE 2247L
#define M_MIN_CONTRAST 600L // also in milim.h, milstr.h, milcode.h, ...
#define M_MIN_INTENSITY_MODE 2248L
#define M_MIN_INTENSITY 12L // also in mil3dmap.h
#define M_MAX_INTENSITY_MODE 2250L
#define M_MAX_INTENSITY 2251L
//#define M_EXTRACTION_GRID_OFFSET 2252L
//#define M_EXTRACTION_GRID_MATCHING 2253L
//#define M_EXTRACTION_GRID_FIT_MODE 2254L
//#define M_EXTRACTION_GRID_MAX_NB_ITERATIONS 2255L
//
//#define M_MATCHER_GRID_SCORE_MODE 2256L
//#define M_MATCHER_GRID_DISTANCE 2257L
//#define M_MATCHER_GRID_MODE 2258L
//#define M_MATCHER_TEMPLATE_MODE 2259L
#define M_FIXED_SPACING 2260L
#define M_USE_GRAMMAR 2261L
#define M_USE_BASELINE 2262L
#define M_BASELINE_THRESHOLD 2263L
#define M_USE_CERTAINTY 2264L
#define M_CERTAINTY 202L // also in milmod.h, milpat.h, milocr.h, ...
#define M_TIMEOUT 2077L // also in milblob.h, milcode.h, miledge.h, ...
#define M_STRING_PARTIAL_CHAR_INVALID (5231L | M_CLIENT_ENCODING)
#define M_STRING_PARTIAL_MODE 4186L
#define M_STRING_CHAR_INVALID_INDICES 4187L
#define M_FORMATTED_STRING_CHAR_INVALID_INDICES 4188L
#define M_SKIPPED_POSITIONS 5527L
////////////////////////////////////////////////////////////////////////////////
// MdmrControl / MdmrInquire
// Context
#define M_FOREGROUND_VALUE 4L // also in milstr.h, milocr.h, ...
#define M_FOREGROUND_WHITE 0x80L // also in milstr.h, milblob.h, ...
#define M_FOREGROUND_BLACK 0x100L // also in milstr.h, milblob.h, ...
#define M_SPACE_SIZE_MIN 2358L
#define M_SPACE_SIZE_MAX 2359L
#define M_SPACE_SIZE_MIN_MODE 2459L
#define M_SPACE_SIZE_MAX_MODE 2369L
#define M_STRING_PITCH 3696L
#define M_STRING_PITCH_MODE 3697L
#define M_ITALIC_PITCH 3698L
#define M_ITALIC_PITCH_MODE 3699L
#define M_CHAR_WIDTH_FACTOR 2387L
#define M_ENABLE -9997L // also in mil.h, milstr.h, ...
#define M_DISABLE -9999L // also in mil.h, milstr.h, ...
#define M_AUTO 444L // also in mil.h, ...
#define M_USER_DEFINED 21L // also in mil.h, ...
// Result
#define M_RESET 9L // also in mil.h, mildisplay.h
#define M_STOP_READ 610L // also in milstr.h, milcode.h
#define M_RESULT_OUTPUT_UNITS 1300L // also in milim.h
// Fonts
#define M_FONT_SIZE_COLUMNS 2207L
#define M_FONT_SIZE_ROWS 2208L
#define M_FONT_SIZE_TEMPLATE 2222L
#define M_FONT_LABEL_VALUE 2216L // also in mil.h, milstr.h, ...
#define M_NUMBER_OF_CHARS 814L // also in milstr.h
#define M_CHAR_ADD 1L // also in milstr.h
#define M_CHAR_DELETE 2L // also in milstr.h
#define M_CHAR_TEMPLATE 2223L
// Chars
#define M_CHAR_NAME (2212L | M_CLIENT_ENCODING)
#define M_CHAR_INDEX_VALUE 2224L
// String models
#define M_STRING_LABEL_VALUE 2288L
#define M_STRING_INDEX_VALUE 2313L
#define M_STRING_NUMBER 74L // also in milstr.h, milocr.h
#define M_STRING_SIZE_MIN 500L
#define M_STRING_SIZE_MAX 62L // also in milstr.h, milocr.h
#define M_STRING_SIZE_MIN_MAX 2388L
#define M_STRING_RANK 2334L
#define M_STRING_ACCEPTANCE 24L // also in milstr.h, milocr.h
#define M_STRING_CERTAINTY 526L // also in milstr.h
#define M_CHAR_ACCEPTANCE 25L // also in milstr.h, milocr.h
// Constrained positions
#define M_CONSTRAINED_ORDER 2335L
#define M_CONSTRAINED_POS_INDEX_VALUE M_CONSTRAINED_ORDER
#define M_ADD_PERMITTED_CHARS_ENTRY 2282L
#define M_DELETE_PERMITTED_CHARS_ENTRY 2714L
#define M_NUMBER_OF_PERMITTED_CHARS_ENTRIES 2283L
#define M_RESET_PERMITTED_CHARS 2284L
#define M_RESET_POSITION_TO_IMPLICIT_CONSTRAINTS 2337L
#define M_RESET_IMPLICIT_CONSTRAINTS 2466L
#define M_CLONE_CONSTRAINTS_FROM 2285L
#define M_CLONE_PERMITTED_CHARS_FROM 2296L
#define M_CHAR_MAX_BASELINE_DEVIATION 513L // also in milstr.h
#define M_POSITION 0x00000402L // also in milmeas.h, miledge.h, milmetrol.h, mil3dmap.h
#define M_NUMBER_OF_CONSTRAINED_POSITIONS 2465L
// Character types
#define M_ANY 0x11000000L // also in mil.h, milstr.h, ...
#define M_LETTER 0x00020000L // also in milstr.h, milocr.h
#define M_DIGIT 0x00040000L // also in milstr.h, milocr.h
#define M_LETTERS_LOWERCASE 0X0000090EL
#define M_LETTERS_UPPERCASE 0X0000090FL
#define M_SPACE 2390L
#define M_PUNCTUATION 1L // also in milstr.h
#define M_CHAR_LIST (0X000008E9L | M_CLIENT_ENCODING)
#define M_LETTERS M_LETTER
#define M_DIGITS M_DIGIT
#define M_PUNCTUATIONS M_PUNCTUATION
#define M_TYPE 1008L // also in mil.h
////////////////////////////////////////////////////////////////////////////////
// MdmrInquire
// Context
#define M_PREPROCESSED 14L // also in milmod.h, milstr.h, ...
#define M_NUMBER_OF_STRING_MODELS 900L // also in milstr.h
#define M_NUMBER_OF_FONTS 901L // also in milstr.h
#define M_FONT_INDEX_VALUE 2226L
#define M_INVALID -1 // also in mil.h
////////////////////////////////////////////////////////////////////////////////
// MdmrName operations
#define M_SET_NAME 1L // also in milmetrol.h
#define M_GET_NAME 2L // also in milmetrol.h
#define M_GET_FONT_LABEL 2201L
#define M_GET_STRING_LABEL 2202L
#define M_GET_FONT_INDEX 2203L
#define M_GET_STRING_INDEX 2204L
////////////////////////////////////////////////////////////////////////////////
// MdmrAllocResult ResultTypes
#define M_STRING (3L | M_CLIENT_ENCODING) // also defined in milstr.h, milocr.h
#define M_STRING_CHAR_NUMBER 2277L
#define M_FORMATTED_STRING 793L // also in milstr.h
#define M_FORMATTED_STRING_CHAR_NUMBER 2487L
////////////////////////////////////////////////////////////////////////////////
// ControlTypes for dot matrix result buffers
////////////////////////////////////////////////////////////////////////////////
// MdmrImportFont
#define M_INTERACTIVE M_NULL // also in mil.h, milstr.h, ...
#define M_DMR_FONT_FILE 2199L
#define M_IMPORT_ALL_CHARS M_NULL
#define M_OVERWRITE 1861L // also in mil.h, mil3dmap.h
#define M_NO_OVERWRITE 0x200L // also in milstr.h
////////////////////////////////////////////////////////////////////////////////
// MdmrExportFont
#define M_HEX_UTF16_FOR_ALL 0x00100000L
#define M_HEX_UTF16_FOR_NON_BASIC_LATIN 0x00080000L
////////////////////////////////////////////////////////////////////////////////
// MdmrGetResult ResultTypes
// General
#define M_STATUS 0x00008002L // also in milcode.h, milcolor.h, miledge.h, ...
#define M_READ_NOT_PERFORMED 2552L
#define M_CURRENTLY_READING 2553L
#define M_TIMEOUT_REACHED 2554L
#define M_STOPPED_BY_REQUEST 2555L
#define M_NOT_ENOUGH_MEMORY 4L // also in mil.h, mil3dmap.h
#define M_COMPLETE 0x00000000L // also in mil.h, milmod.h
#define M_INTERNAL_ERROR 5L // also in milcal.h
// String
#define M_STRING_BOX_UL_X 914L // also in milstr.h
#define M_STRING_BOX_UL_Y 915L // also in milstr.h
#define M_STRING_BOX_UR_X 916L // also in milstr.h
#define M_STRING_BOX_UR_Y 917L // also in milstr.h
#define M_STRING_BOX_BR_X 918L // also in milstr.h
#define M_STRING_BOX_BR_Y 919L // also in milstr.h
#define M_STRING_BOX_BL_X 920L // also in milstr.h
#define M_STRING_BOX_BL_Y 921L // also in milstr.h
#define M_STRING_MODEL_INDEX 585L // also in milstr.h
#define M_STRING_MODEL_LABEL 2278L
#define M_STRING_POSITION_X 586L // also in milstr.h
#define M_STRING_POSITION_Y 587L // also in milstr.h
#define M_STRING_SCORE 0x00001400L // also in milocr.h, milstr.h
#define M_STRING_WIDTH 2297L
#define M_STRING_HEIGHT 2298L
// Chars
#define M_CHAR_SCORE 5L // also in milocr.h, milstr.h
#define M_CHAR_POSITION_X 6L // also in milocr.h, milstr.h
#define M_CHAR_POSITION_Y 7L // also in milocr.h, milstr.h
#define M_CHAR_BOX_UL_X 922L // also in milstr.h
#define M_CHAR_BOX_UL_Y 923L // also in milstr.h
#define M_CHAR_BOX_UR_X 924L // also in milstr.h
#define M_CHAR_BOX_UR_Y 925L // also in milstr.h
#define M_CHAR_BOX_BR_X 926L // also in milstr.h
#define M_CHAR_BOX_BR_Y 927L // also in milstr.h
#define M_CHAR_BOX_BL_X 928L // also in milstr.h
#define M_CHAR_BOX_BL_Y 929L // also in milstr.h
#define M_CHAR_FONT_INDEX 2279L
#define M_CHAR_FONT_LABEL 2280L
#define M_CHAR_WIDTH 2311L
#define M_CHAR_HEIGHT 2312L
#define M_CHAR_ANGLE 794L // also in milstr.h
#define M_STRING_CHAR_ANGLE M_CHAR_ANGLE // also in milstr.h
#define M_ITALIC_CHAR_ANGLE 3753L
////////////////////////////////////////////////////////////////////////////////
// MdmrDraw ControlTypes
#define M_DRAW_MIL_FONT_STRING 0x00000020L // also in milstr.h
#define M_DRAW_MIL_FONT_FORMATTED_STRING 2715L
#define M_DRAW_STRING_BOX 0x00000004L // also in milstr.h
#define M_DRAW_STRING_CHAR_BOX 0x00000008L // also in milstr.h
#define M_DRAW_STRING_CHAR_POSITION 0x00000010L // also in milstr.h
////////////////////////////////////////////////////////////////////////////////
// Other defines
////////////////////////////////////////////////////////////////////////////////
// CAPI function prototypes
MIL_ID MFTYPE MdmrAlloc(MIL_ID SysId,
MIL_INT64 ContextType,
MIL_INT64 ControlFlag,
MIL_ID* ContextDmrIdPtr);
MIL_ID MFTYPE MdmrAllocResult(MIL_ID SysId,
MIL_INT64 ResultType,
MIL_INT64 ControlFlag,
MIL_ID* ResultDmrIdPtr);
void MFTYPE MdmrFree(MIL_ID ContextOrResultDmrId);
#if M_MIL_USE_64BIT
// Prototypes for 64 bits OSs
void MFTYPE MdmrControlInt64(MIL_ID ContextOrResultDmrId,
MIL_INT64 ControlType,
MIL_INT64 ControlValue);
void MFTYPE MdmrControlDouble(MIL_ID ContextOrResultDmrId,
MIL_INT64 ControlType,
MIL_DOUBLE ControlValue);
void MFTYPE MdmrControlStringModelDouble(MIL_ID ContextDmrId ,
MIL_INT64 StringModelLabelOrIndex,
MIL_INT64 Position ,
MIL_INT64 ControlType ,
MIL_DOUBLE ControlValue1 ,
MIL_DOUBLE ControlValue2 ,
const void* ControlValuePtr );
void MFTYPE MdmrControlStringModelInt64(MIL_ID ContextDmrId ,
MIL_INT64 StringModelLabelOrIndex,
MIL_INT64 Position ,
MIL_INT64 ControlType ,
MIL_INT64 ControlValue1 ,
MIL_INT64 ControlValue2 ,
const void* ControlValuePtr );
#else
// Prototypes for 32 bits OSs
#define MdmrControlInt64 MdmrControl
#define MdmrControlDouble MdmrControl
#define MdmrControlStringModelInt64 MdmrControlStringModel
#define MdmrControlStringModelDouble MdmrControlStringModel
void MFTYPE MdmrControl(MIL_ID ContextOrResultDmrId,
MIL_INT64 ControlType,
MIL_DOUBLE ControlValue);
void MFTYPE MdmrControlStringModel(MIL_ID ContextDmrId ,
MIL_INT64 StringModelLabelOrIndex,
MIL_INT64 Position ,
MIL_INT64 ControlType ,
MIL_DOUBLE ControlValue1 ,
MIL_DOUBLE ControlValue2 ,
const void* ControlValuePtr );
#endif
MIL_INT MFTYPE MdmrInquire(MIL_ID ContextOrResultDmrId,
MIL_INT64 InquireType,
void* UserVarPtr);
MIL_INT MFTYPE MdmrInquireStringModel(MIL_ID ContextDmrId ,
MIL_INT64 StringModelLabelOrIndex,
MIL_INT64 Position ,
MIL_INT64 PermittedCharEntry ,
MIL_INT64 InquireType ,
void* UserVarPtr );
void MFTYPE MdmrPreprocess(MIL_ID ContextDmrId,
MIL_INT64 ControlFlag);
void MFTYPE MdmrRead(MIL_ID ContextDmrId,
MIL_ID TargetImageBufId,
MIL_ID ResultDmrId,
MIL_INT64 ControlFlag);
void MFTYPE MdmrGetResult(MIL_ID ResultDmrId,
MIL_INT64 StringIndex,
MIL_INT64 CharPositionIndex,
MIL_INT64 ResultType,
void* ResultArrayPtr);
void MFTYPE MdmrDraw(MIL_ID ContextGraId,
MIL_ID ResultDmrId,
MIL_ID DstImageBufOrListGraId,
MIL_INT64 Operation,
MIL_INT64 Index,
MIL_INT64 CharIndex,
MIL_INT64 ControlFlag);
#if M_MIL_USE_UNICODE
void MFTYPE MdmrSaveA(MIL_CONST_TEXTA_PTR FileName,
MIL_ID ContextDmrId,
MIL_INT64 ControlFlag);
MIL_ID MFTYPE MdmrRestoreA(MIL_CONST_TEXTA_PTR FileName,
MIL_ID SysId,
MIL_INT64 ControlFlag,
MIL_ID* ContextDmrIdPtr);
void MFTYPE MdmrStreamA(MIL_TEXTA_PTR MemPtrOrFileName,
MIL_ID SysId,
MIL_INT64 Operation,
MIL_INT64 StreamType,
MIL_DOUBLE Version,
MIL_INT64 ControlFlag,
MIL_ID* ContextDmrIdPtr,
MIL_INT* SizeByteVarPtr);
void MFTYPE MdmrSaveW(MIL_CONST_TEXTW_PTR FileName,
MIL_ID ContextDmrId,
MIL_INT64 ControlFlag);
MIL_ID MFTYPE MdmrRestoreW(MIL_CONST_TEXTW_PTR FileName,
MIL_ID SysId,
MIL_INT64 ControlFlag,
MIL_ID* ContextDmrIdPtr);
void MFTYPE MdmrStreamW(MIL_TEXTW_PTR MemPtrOrFileName,
MIL_ID SysId,
MIL_INT64 Operation,
MIL_INT64 StreamType,
MIL_DOUBLE Version,
MIL_INT64 ControlFlag,
MIL_ID* ContextDmrIdPtr,
MIL_INT* SizeByteVarPtr);
void MFTYPE MdmrImportFontW(MIL_CONST_TEXTW_PTR FileName ,
MIL_INT64 FileFormat ,
MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_CONST_TEXTW_PTR CharList ,
MIL_INT64 ControlFlag );
void MFTYPE MdmrImportFontA(MIL_CONST_TEXTA_PTR FileName ,
MIL_INT64 FileFormat ,
MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_CONST_TEXTA_PTR CharList ,
MIL_INT64 ControlFlag );
void MFTYPE MdmrExportFontW(MIL_CONST_TEXTW_PTR FileName ,
MIL_INT64 FileFormat ,
MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 ControlFlag );
void MFTYPE MdmrExportFontA(MIL_CONST_TEXTA_PTR FileName ,
MIL_INT64 FileFormat ,
MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 ControlFlag );
#if M_MIL_USE_64BIT
void MFTYPE MdmrControlFontDoubleW(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 CharIndex ,
MIL_CONST_TEXTW_PTR CharNamePtr ,
MIL_INT64 ControlType ,
MIL_DOUBLE ControlValue ,
const void* ControlValuePtr );
void MFTYPE MdmrControlFontInt64W(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 CharIndex ,
MIL_CONST_TEXTW_PTR CharNamePtr ,
MIL_INT64 ControlType ,
MIL_INT64 ControlValue ,
const void* ControlValuePtr );
void MFTYPE MdmrControlFontDoubleA(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 CharIndex ,
MIL_CONST_TEXTA_PTR CharNamePtr ,
MIL_INT64 ControlType ,
MIL_DOUBLE ControlValue ,
const void* ControlValuePtr );
void MFTYPE MdmrControlFontInt64A(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 CharIndex ,
MIL_CONST_TEXTA_PTR CharNamePtr ,
MIL_INT64 ControlType ,
MIL_INT64 ControlValue ,
const void* ControlValuePtr );
#else
// Prototypes for 32 bits OSs
#define MdmrControlFontDoubleW MdmrControlFontW
#define MdmrControlFontDoubleA MdmrControlFontA
#define MdmrControlFontInt64W MdmrControlFontW
#define MdmrControlFontInt64A MdmrControlFontA
void MFTYPE MdmrControlFontW(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 CharIndex ,
MIL_CONST_TEXTW_PTR CharNamePtr ,
MIL_INT64 ControlType ,
MIL_DOUBLE ControlValue ,
const void* ControlValuePtr );
void MFTYPE MdmrControlFontA(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 CharIndex ,
MIL_CONST_TEXTA_PTR CharNamePtr ,
MIL_INT64 ControlType ,
MIL_DOUBLE ControlValue ,
const void* ControlValuePtr );
#endif
MIL_INT MFTYPE MdmrInquireFontW(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex,
MIL_INT64 CharIndex ,
MIL_CONST_TEXTW_PTR CharNamePtr ,
MIL_INT64 InquireType ,
void* UserVarPtr );
MIL_INT MFTYPE MdmrInquireFontA(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex,
MIL_INT64 CharIndex ,
MIL_CONST_TEXTA_PTR CharNamePtr ,
MIL_INT64 InquireType ,
void* UserVarPtr );
void MFTYPE MdmrNameW(MIL_ID ContextDmrId ,
MIL_INT64 Operation ,
MIL_INT64 LabelOrIndex ,
MIL_TEXTW_PTR Name ,
MIL_INT* ValuePtr ,
MIL_INT64 ControlFlag );
void MFTYPE MdmrNameA(MIL_ID ContextDmrId ,
MIL_INT64 Operation ,
MIL_INT64 LabelOrIndex ,
MIL_TEXTA_PTR Name ,
MIL_INT* ValuePtr ,
MIL_INT64 ControlFlag );
#if M_MIL_UNICODE_API
#define MdmrSave MdmrSaveW
#define MdmrRestore MdmrRestoreW
#define MdmrStream MdmrStreamW
#define MdmrImportFont MdmrImportFontW
#define MdmrExportFont MdmrExportFontW
#define MdmrInquireFont MdmrInquireFontW
#define MdmrName MdmrNameW
#else
#define MdmrSave MdmrSaveA
#define MdmrRestore MdmrRestoreA
#define MdmrStream MdmrStreamA
#define MdmrImportFont MdmrImportFontA
#define MdmrExportFont MdmrExportFontA
#define MdmrInquireFont MdmrInquireFontA
#define MdmrName MdmrNameA
#endif
#else
void MFTYPE MdmrSave(MIL_CONST_TEXT_PTR FileName,
MIL_ID ContextDmrId,
MIL_INT64 ControlFlag);
MIL_ID MFTYPE MdmrRestore(MIL_CONST_TEXT_PTR FileName,
MIL_ID SysId,
MIL_INT64 ControlFlag,
MIL_ID* ContextDmrIdPtr);
void MFTYPE MdmrStream(MIL_TEXT_PTR MemPtrOrFileName,
MIL_ID SysId,
MIL_INT64 Operation,
MIL_INT64 StreamType,
MIL_DOUBLE Version,
MIL_INT64 ControlFlag,
MIL_ID* ContextDmrIdPtr,
MIL_INT* SizeByteVarPtr);
void MFTYPE MdmrImportFont(MIL_CONST_TEXT_PTR FileName ,
MIL_INT64 FileFormat ,
MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_CONST_TEXT_PTR CharList ,
MIL_INT64 ControlFlag );
void MFTYPE MdmrExportFont(MIL_CONST_TEXT_PTR FileName ,
MIL_INT64 FileFormat ,
MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 ControlFlag );
#if M_MIL_USE_64BIT
void MFTYPE MdmrControlFontInt64(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 CharIndex ,
MIL_CONST_TEXT_PTR CharNamePtr ,
MIL_INT64 ControlType ,
MIL_INT64 ControlValue ,
const void* ControlValuePtr );
void MFTYPE MdmrControlFontDouble(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 CharIndex ,
MIL_CONST_TEXT_PTR CharNamePtr ,
MIL_INT64 ControlType ,
MIL_DOUBLE ControlValue ,
const void* ControlValuePtr );
#else
// Prototypes for 32 bits OSs
#define MdmrControlFontDouble MdmrControlFont
#define MdmrControlFontInt64 MdmrControlFont
void MFTYPE MdmrControlFont(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 CharIndex ,
MIL_CONST_TEXT_PTR CharNamePtr ,
MIL_INT64 ControlType ,
MIL_DOUBLE ControlValue ,
const void* ControlValuePtr );
#endif //#if M_MIL_USE_64BIT
MIL_INT MFTYPE MdmrInquireFont(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex,
MIL_INT64 CharIndex ,
MIL_CONST_TEXT_PTR CharNamePtr ,
MIL_INT64 InquireType ,
void* UserVarPtr );
void MFTYPE MdmrName(MIL_ID ContextOrResultDmrId,
MIL_INT64 Operation ,
MIL_INT64 LabelOrIndex ,
MIL_TEXT_PTR Name ,
MIL_INT* ValuePtr ,
MIL_INT64 ControlFlag );
#endif
/* C++ directive if needed */
#ifdef __cplusplus
}
#endif
////////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
inline void MFTYPE MdmrStreamCpp(MilStreamParam MemPtrOrFileName,
MIL_ID SysId,
MIL_INT64 Operation,
MIL_INT64 StreamType,
MIL_DOUBLE Version,
MIL_INT64 ControlFlag,
MIL_ID* ContextDmrIdPtr,
MIL_INT* SizeByteVarPtr)
{
MdmrStream(MemPtrOrFileName.m_Param, SysId, Operation, StreamType, Version, ControlFlag, ContextDmrIdPtr, SizeByteVarPtr);
}
#undef MdmrStream
#define MdmrStream MdmrStreamCpp
#if M_MIL_USE_LINUX
inline void MFTYPE MdmrNameCpp(MIL_ID ContextOrResultDmrId,
MIL_INT64 Operation,
MIL_INT64 LabelOrIndex,
MilNameParam Name,
MIL_INT* ValuePtr,
MIL_INT64 ControlFlag)
{
//if operation generate an output
if((Operation == M_GET_NAME) && Name.m_ConstStr)
{
#if M_MIL_USE_SAFE_TYPE
SafeTypeError(MIL_TEXT("MdmrName"), MIL_TEXT("Operation not supported with const."));
#endif
}
MdmrName(ContextOrResultDmrId, Operation, LabelOrIndex, Name.m_Param, ValuePtr, ControlFlag);
}
#if !defined(M_COMPILING_MILDMRDLL)
#undef MdmrName
#define MdmrName MdmrNameCpp
#endif
#else
inline void MFTYPE MdmrName(MIL_ID ContextOrResultDmrId,
MIL_INT64 Operation,
MIL_INT64 LabelOrIndex,
MilNameParam Name,
MIL_INT* ValuePtr,
MIL_INT64 ControlFlag)
{
//if operation generate an output
if((Operation == M_GET_NAME) && Name.m_ConstStr)
{
#if M_MIL_USE_SAFE_TYPE
SafeTypeError(MIL_TEXT("MdmrName"), MIL_TEXT("Operation not supported with const."));
#endif
}
MdmrName(ContextOrResultDmrId, Operation, LabelOrIndex, Name.m_Param, ValuePtr, ControlFlag);
}
#endif
#endif // __cplusplus
#if M_MIL_USE_64BIT
#ifdef __cplusplus
//////////////////////////////////////////////////////////////
// MdmrControl function overloads when compiling c++ files
//////////////////////////////////////////////////////////////
template <typename T>
inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, T* ControlValue)
{
MdmrControlInt64(ContextOrResultDmrId, ControlType, M_PTR_TO_MIL_INT(ControlValue));
}
template <typename T>
inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, T ControlValue)
{
MdmrControlInt64(ContextOrResultDmrId, ControlType, ControlValue);
}
inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, float ControlValue)
{
MdmrControlDouble(ContextOrResultDmrId, ControlType, ControlValue);
}
inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, MIL_DOUBLE ControlValue)
{
MdmrControlDouble(ContextOrResultDmrId, ControlType, ControlValue);
}
//////////////////////////////////////////////////////////////
// MdmrControlStringModel function overloads when compiling
// c++ files
//////////////////////////////////////////////////////////////
template <typename T1, typename T2>
inline void MdmrControlStringModel(MIL_ID ContextDmrId ,
MIL_INT64 StringModelLabelOrIndex,
MIL_INT64 Position ,
MIL_INT64 ControlType ,
T1 ControlValue1 ,
T2 ControlValue2 ,
const void* ControlValuePtr )
{ MdmrControlStringModelInt64(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, ControlValue1, ControlValue2, ControlValuePtr); }
template <typename T1>
inline void MdmrControlStringModel(MIL_ID ContextDmrId ,
MIL_INT64 StringModelLabelOrIndex,
MIL_INT64 Position ,
MIL_INT64 ControlType ,
T1 ControlValue1 ,
float ControlValue2 ,
const void* ControlValuePtr )
{ MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast<MIL_DOUBLE>(ControlValue1), static_cast<MIL_DOUBLE>(ControlValue2), ControlValuePtr); }
template <typename T2>
inline void MdmrControlStringModel(MIL_ID ContextDmrId ,
MIL_INT64 StringModelLabelOrIndex,
MIL_INT64 Position ,
MIL_INT64 ControlType ,
float ControlValue1 ,
T2 ControlValue2 ,
const void* ControlValuePtr )
{ MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast<MIL_DOUBLE>(ControlValue1), static_cast<MIL_DOUBLE>(ControlValue2), ControlValuePtr); }
inline void MdmrControlStringModel(MIL_ID ContextDmrId ,
MIL_INT64 StringModelLabelOrIndex,
MIL_INT64 Position ,
MIL_INT64 ControlType ,
float ControlValue1 ,
float ControlValue2 ,
const void* ControlValuePtr )
{ MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast<MIL_DOUBLE>(ControlValue1), static_cast<MIL_DOUBLE>(ControlValue2), ControlValuePtr); }
template <typename T1>
inline void MdmrControlStringModel(MIL_ID ContextDmrId ,
MIL_INT64 StringModelLabelOrIndex,
MIL_INT64 Position ,
MIL_INT64 ControlType ,
T1 ControlValue1 ,
MIL_DOUBLE ControlValue2 ,
const void* ControlValuePtr )
{ MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast<MIL_DOUBLE>(ControlValue1), static_cast<MIL_DOUBLE>(ControlValue2), ControlValuePtr); }
template <typename T2>
inline void MdmrControlStringModel(MIL_ID ContextDmrId ,
MIL_INT64 StringModelLabelOrIndex,
MIL_INT64 Position ,
MIL_INT64 ControlType ,
MIL_DOUBLE ControlValue1 ,
T2 ControlValue2 ,
const void* ControlValuePtr )
{ MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast<MIL_DOUBLE>(ControlValue1), static_cast<MIL_DOUBLE>(ControlValue2), ControlValuePtr); }
inline void MdmrControlStringModel(MIL_ID ContextDmrId ,
MIL_INT64 StringModelLabelOrIndex,
MIL_INT64 Position ,
MIL_INT64 ControlType ,
MIL_DOUBLE ControlValue1 ,
MIL_DOUBLE ControlValue2 ,
const void* ControlValuePtr )
{ MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast<MIL_DOUBLE>(ControlValue1), static_cast<MIL_DOUBLE>(ControlValue2), ControlValuePtr); }
#if M_MIL_USE_UNICODE
#if M_MIL_UNICODE_API
#define MdmrControlFontDouble_API MdmrControlFontDoubleW
#define MdmrControlFontInt64_API MdmrControlFontInt64W
#else
#define MdmrControlFontDouble_API MdmrControlFontDoubleA
#define MdmrControlFontInt64_API MdmrControlFontInt64A
#endif
#else
#define MdmrControlFontDouble_API MdmrControlFontDouble
#define MdmrControlFontInt64_API MdmrControlFontInt64
#endif
inline void MdmrControlFont(MIL_ID ContextDmrId ,
MIL_INT64 FontLabelOrIndex ,
MIL_INT64 CharIndex ,
MIL_CONST_TEXT_PTR CharNamePtr ,
MIL_INT64 ControlType ,
MIL_DOUBLE ControlValue ,
const void* ControlValuePtr )
{
MdmrControlFontDouble_API(ContextDmrId ,
FontLabelOrIndex ,
CharIndex ,
CharNamePtr ,
ControlType ,
ControlValue ,
ControlValuePtr );
}
#define MdmrControlFontW MdmrControlFont
#define MdmrControlFontA MdmrControlFont
#else
//////////////////////////////////////////////////////////////
// For C file, call the default function, i.e. Double one
//////////////////////////////////////////////////////////////
#define MdmrControl MdmrControlDouble
#define MdmrControlStringModel MdmrControlStringModelDouble
#if M_MIL_USE_UNICODE
#if M_MIL_UNICODE_API
#define MdmrControlFontInt64 MdmrControlFontInt64W
#define MdmrControlFontDouble MdmrControlFontDoubleW
#define MdmrControlFont MdmrControlFontDoubleW
#define MdmrControlFontW MdmrControlFontDoubleW
#define MdmrControlFontA MdmrControlFontDoubleA
#else
#define MdmrControlFontInt64 MdmrControlFontInt64A
#define MdmrControlFontDouble MdmrControlFontDoubleA
#define MdmrControlFont MdmrControlFontDoubleA
#define MdmrControlFontA MdmrControlFontDoubleA
#define MdmrControlFontW MdmrControlFontDoubleW
#endif
#else
#define MdmrControlFont MdmrControlFontDouble
#endif
#endif // __cplusplus
#else // M_MIL_USE_64BIT
// Prototypes for 32 bits OSs
#if M_MIL_USE_UNICODE
#if M_MIL_UNICODE_API
#define MdmrControlFontInt64 MdmrControlFontW
#define MdmrControlFontDouble MdmrControlFontW
#define MdmrControlFont MdmrControlFontW
#else
#define MdmrControlFontInt64 MdmrControlFontA
#define MdmrControlFontDouble MdmrControlFontA
#define MdmrControlFont MdmrControlFontA
#endif
#endif
#endif // M_MIL_USE_64BIT
#ifdef __cplusplus
struct MilCPPConstMilStringOrPtrParam
{
MilCPPConstMilStringOrPtrParam(MIL_CONST_TEXT_PTR pStrParam)
{ m_pStr = pStrParam; }
#if M_MIL_USE_STRING
MilCPPConstMilStringOrPtrParam(const MIL_STRING& MilStringParam)
{ m_pStr = MilStringParam.c_str(); }
#endif
MIL_CONST_TEXT_PTR m_pStr;
};
#endif //__cplusplus
#if M_MIL_USE_SAFE_TYPE
//////////////////////////////////////////////////////////////
// See milos.h for explanation about these functions.
//////////////////////////////////////////////////////////////
// -------------------------------------------------------------------------
// MdmrGetResult safe type definitions
//
inline void MFTYPE MdmrGetResultSafeType(MIL_ID ResultDmrId, MIL_INT64 StringIndex, MIL_INT64 CharacterPosIndex, MIL_INT64 ResultType, MilVoidPtr ResultArrayPtr)
{
MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64;
if(!(M_DEFAULT_DATA_TYPE_BIT_SET(ResultType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(ResultType)))
{
MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
}
const MIL_INT64 EncodingBit = RequiredParamType == M_PARAM_TYPE_MIL_TEXT ? M_CLIENT_ENCODING : 0;
if(!MfuncPointerIsCompatible(RequiredParamType, ResultArrayPtr.Type, ResultType | EncodingBit))
{
SafeTypeError(MIL_TEXT("MdmrGetResult"));
}
MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType, ResultArrayPtr.Ptr);
}
inline void MFTYPE MdmrGetResultUnsafe(MIL_ID ResultDmrId, MIL_INT64 StringIndex, MIL_INT64 CharacterPosIndex, MIL_INT64 ResultType, void* ResultArrayPtr)
{
MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType, ResultArrayPtr);
}
// ----------------------------------------------------------
// MdmrInquire safe type definitions
inline MIL_INT MFTYPE MdmrInquireSafeType(MIL_ID MdmrId, MIL_INT64 InquireType, MilVoidPtr UserVarPtr)
{
MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64;
if(!(M_DEFAULT_DATA_TYPE_BIT_SET(InquireType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(InquireType)))
{
MdmrInquire(MdmrId, InquireType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
}
if(!MfuncPointerIsCompatible(RequiredParamType, UserVarPtr.Type, InquireType))
{
SafeTypeError(MIL_TEXT("MdmrInquire"));
}
return MdmrInquire(MdmrId, InquireType, UserVarPtr.Ptr);
}
inline MIL_INT MFTYPE MdmrInquireUnsafe(MIL_ID MdmrId, MIL_INT64 InquireType, void* UserVarPtr)
{
return MdmrInquire(MdmrId, InquireType, UserVarPtr);
}
// ----------------------------------------------------------
// MdmrInquireFont safe type definitions
inline MIL_INT MFTYPE MdmrInquireFontSafeType(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, MilCPPConstMilStringOrPtrParam CharNamePtr, MIL_INT64 InquireType, MilVoidPtr UserVarPtr)
{
MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64;
if(!(M_DEFAULT_DATA_TYPE_BIT_SET(InquireType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(InquireType)))
{
MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.m_pStr, InquireType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
}
if(!MfuncPointerIsCompatible(RequiredParamType, UserVarPtr.Type, InquireType))
{
SafeTypeError(MIL_TEXT("MdmrInquireFont"));
}
return MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.m_pStr, InquireType, UserVarPtr.Ptr);
}
inline MIL_INT MFTYPE MdmrInquireFontUnsafe(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, MilCPPConstMilStringOrPtrParam CPPCharNamePtr, MIL_INT64 InquireType, void* UserVarPtr)
{
return MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CPPCharNamePtr.m_pStr, InquireType, UserVarPtr);
}
// ----------------------------------------------------------
// MdmrInquireStringModel safe type definitions
inline MIL_INT MFTYPE MdmrInquireStringModelSafeType(MIL_ID ContextDmrId, MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position, MIL_INT64 PermittedCharEntry, MIL_INT64 InquireType, MilVoidPtr UserVarPtr)
{
MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64;
if(!(M_DEFAULT_DATA_TYPE_BIT_SET(InquireType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(InquireType)))
{
MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, InquireType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
}
if(!MfuncPointerIsCompatible(RequiredParamType, UserVarPtr.Type, InquireType))
{
SafeTypeError(MIL_TEXT("MdmrInquireStringModel"));
}
return MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, InquireType, UserVarPtr.Ptr);
}
inline MIL_INT MFTYPE MdmrInquireStringModelUnsafe(MIL_ID ContextDmrId, MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position, MIL_INT64 PermittedCharEntry, MIL_INT64 InquireType, void* UserVarPtr)
{
return MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, InquireType, UserVarPtr);
}
//------------------------------
// Safetype functions assignment
#define MdmrGetResult MdmrGetResultSafeType
#define MdmrInquire MdmrInquireSafeType
#if !M_MIL_USE_LINUX
#undef MdmrInquireFont
#endif
#define MdmrInquireFont MdmrInquireFontSafeType
#define MdmrInquireStringModel MdmrInquireStringModelSafeType
#else // #if M_MIL_USE_SAFE_TYPE
#define MdmrGetResultUnsafe MdmrGetResult
#define MdmrInquireUnsafe MdmrInquire
#define MdmrInquireFontUnsafe MdmrInquireFont
#define MdmrInquireStringModelUnsafe MdmrInquireStringModel
#endif // #if M_MIL_USE_SAFE_TYPE
// ----------------------------------------------------------
// Overload for std::vector.
#if defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR
template <typename UserType>
inline MIL_INT MFTYPE MdmrInquireFont(MIL_ID ContextDmrId, MIL_INT FontLabelOrIndex, MIL_INT64 CharIndex, MIL_CONST_TEXT_PTR CharNamePtr, MIL_INT64 InquireType, std::vector<UserType> &UserVarPtr)
{
// If the given MIL data type is not the same as the SrcType, change it to the correct one
// and give a warning.
MIL_INT64 InternalTrueDataTypeForStdVector = MilTraits<UserType>::TypeFlag;
#if M_MIL_USE_SAFE_TYPE
if(M_GET_HLVLDATATYPE(InquireType) != 0)
{
SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
}
#endif
InquireType = M_STRIP_HLVLDATATYPE(InquireType) + InternalTrueDataTypeForStdVector;
MIL_INT InternalNumberOfElementsForStdVector = 0;
MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr, M_STRIP_HLVLDATATYPE(InquireType) + M_NB_ELEMENTS + M_TYPE_MIL_INT, &InternalNumberOfElementsForStdVector);
UserVarPtr.resize(InternalNumberOfElementsForStdVector);
if(InternalNumberOfElementsForStdVector > 0)
{
return MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr, InquireType, &UserVarPtr[0]);
}
return 0;
}
template <typename UserType>
inline void MFTYPE MdmrGetResult(MIL_ID ResultDmrId, MIL_INT64 StringIndex, MIL_INT64 CharacterPosIndex, MIL_INT64 ResultType, std::vector<UserType> &ResultArrayPtr)
{
//! If the given MIL data type is not the same as the SrcType, change it to the correct one
//! and give a warning.
MIL_INT64 InternalTrueDataTypeForStdVector = MilTraits<UserType>::TypeFlag;
#if M_MIL_USE_SAFE_TYPE
if(M_GET_HLVLDATATYPE(ResultType) != 0)
{
SafeTypeError(MIL_TEXT("MdmrGetResult"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
}
#endif
ResultType = M_STRIP_HLVLDATATYPE(ResultType) + InternalTrueDataTypeForStdVector;
MIL_INT InternalNumberOfElementsForStdVector = 0;
MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, M_STRIP_HLVLDATATYPE(ResultType) + M_NB_ELEMENTS + M_TYPE_MIL_INT, &InternalNumberOfElementsForStdVector);
ResultArrayPtr.resize(InternalNumberOfElementsForStdVector);
if(InternalNumberOfElementsForStdVector > 0)
{
MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType, &ResultArrayPtr[0]);
}
}
// ----------------------------------------------------------
// Overloads for std::vector in MdmrControlFont.
inline void MFTYPE MdmrControlFont(MIL_ID ContextDmrId,
MIL_INT64 FontLabelOrIndex,
MIL_INT64 CharIndex,
MIL_CONST_TEXT_PTR CharNamePtr,
MIL_INT64 ControlType,
MIL_DOUBLE ControlValue,
const std::vector<MIL_UINT8>& ControlValuePtr)
{
#if M_MIL_USE_SAFE_TYPE
switch(ControlType)
{
case M_CHAR_ADD:
case M_CHAR_TEMPLATE:
{
MIL_INT InternalFontSizeColumnsForStdVector = 0;
MIL_INT InternalFontSizeRowsForStdVector = 0;
MdmrInquireFont(ContextDmrId, FontLabelOrIndex, M_DEFAULT, M_NULL, M_FONT_SIZE_COLUMNS + M_TYPE_MIL_INT, &InternalFontSizeColumnsForStdVector);
// Do not continue in case of any MIL error.
if(InternalFontSizeColumnsForStdVector <= 0)
{
return;
}
MdmrInquireFont(ContextDmrId, FontLabelOrIndex, M_DEFAULT, M_NULL, M_FONT_SIZE_ROWS + M_TYPE_MIL_INT, &InternalFontSizeRowsForStdVector);
// Do not continue in case of any MIL error.
if(InternalFontSizeRowsForStdVector <= 0)
{
return;
}
if(InternalFontSizeColumnsForStdVector == M_DEFAULT)
{
InternalFontSizeColumnsForStdVector = 5;
}
if(InternalFontSizeRowsForStdVector == M_DEFAULT)
{
InternalFontSizeRowsForStdVector = 7;
}
if(InternalFontSizeColumnsForStdVector*InternalFontSizeRowsForStdVector > (MIL_INT)ControlValuePtr.size())
{
SafeTypeError(MIL_TEXT("MdmrControlFont"), MIL_TEXT("Invalid size of the specified ControlValuePtr."));
}
}
break;
default:
{
SafeTypeError(MIL_TEXT("MdmrControlFont"), MIL_TEXT("Invalid ControlType for the specified ControlValuePtr."));
}
break;
}
#endif
MdmrControlFont(ContextDmrId,
FontLabelOrIndex,
CharIndex,
CharNamePtr,
ControlType,
ControlValue,
&ControlValuePtr[0]);
}
// ----------------------------------------------------------
// Overloads for std::vector in MxxxStream.
inline void MFTYPE MdmrStream(std::vector<MIL_UINT8> &MemPtrOrFileName,
MIL_ID SysId,
MIL_INT64 Operation,
MIL_INT64 StreamType,
MIL_DOUBLE Version,
MIL_INT64 ControlFlag,
MIL_ID* McontextIdPtr,
MIL_INT* SizeByteVarPtr)
{
MxxxStreamForStdVector(MemPtrOrFileName,
SysId,
Operation,
StreamType,
Version,
ControlFlag,
McontextIdPtr,
SizeByteVarPtr,
MdmrStream);
}
#endif // defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR
#if M_MIL_USE_STRING
/***************************************************************************/
/* DMR MODULE */
/***************************************************************************/
#if M_MIL_USE_UNICODE
#if M_MIL_UNICODE_API
inline void MFTYPE MdmrControlFontW(MIL_ID ContextDmrId,
MIL_INT64 FontLabelOrIndex,
MIL_INT64 CharIndex,
const MIL_STRING& CharNamePtr,
MIL_INT64 ControlType,
MIL_DOUBLE ControlValue,
const void* ControlValuePtr)
{
return MdmrControlFontW(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), ControlType, ControlValue, ControlValuePtr);
}
inline void MFTYPE MdmrSaveW(const MIL_STRING& FileName, MIL_ID ContextDmrId, MIL_INT64 ControlFlag)
{
return MdmrSaveW(FileName.c_str(), ContextDmrId, ControlFlag);
}
inline MIL_ID MFTYPE MdmrRestoreW(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextDmrId)
{
return MdmrRestoreW(FileName.c_str(), SysId, ControlFlag, ContextDmrId);
}
inline void MFTYPE MdmrImportFontW(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex,
const MIL_STRING& CharList, MIL_INT64 ControlFlag)
{
MdmrImportFontW(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, CharList.c_str(), ControlFlag);
}
inline void MFTYPE MdmrImportFontW(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex,
MIL_INT64 CharList, MIL_INT64 ControlFlag)
{
MdmrImportFontW(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, (MIL_CONST_TEXT_PTR)CharList, ControlFlag);
}
inline void MFTYPE MdmrExportFontW(const MIL_STRING &FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 ControlFlag)
{
MdmrExportFontW(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, ControlFlag);
}
inline MIL_INT MFTYPE MdmrInquireFontW(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING &CharNamePtr,
MIL_INT64 InquireType, void* UserVarPtr)
{
return MdmrInquireFontW(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), InquireType, UserVarPtr);
}
inline MIL_INT MFTYPE MdmrInquireFontW(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING &CharNamePtr,
MIL_INT64 InquireType, MIL_STRING &UserVarPtr)
{
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
{
SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire type not supported with MIL_STRING."));
}
#endif
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
MdmrInquireFontW(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquireFontW(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), InquireType, &UserVarPtr[0]);
UserVarPtr.resize(InternalStringSize - 1);
}
return RetValue;
}
inline MIL_INT MFTYPE MdmrInquireFontW(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, int /*NullCharNamePtr*/,
MIL_INT64 InquireType, MIL_STRING &UserVarPtr)
{
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
{
SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire type not supported with MIL_STRING."));
}
#endif
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
MdmrInquireFontW(ContextDmrId, FontLabelOrIndex, CharIndex, 0, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquireFontW(ContextDmrId, FontLabelOrIndex, CharIndex, 0, InquireType, &UserVarPtr[0]);
UserVarPtr.resize(InternalStringSize - 1);
}
return RetValue;
}
inline void MFTYPE MdmrNameW(MIL_ID ContextOrResultDmrId, MIL_INT64 Operation, MIL_INT64 LabelOrIndex, MIL_STRING &Name, MIL_INT* ValuePtr, MIL_INT64 ControlFlag)
{
//if operation generate an output
if(Operation == M_GET_NAME)
{
MIL_INT InternalStringSize = 0;
MdmrNameW(ContextOrResultDmrId, M_GET_NAME, LabelOrIndex, M_NULL, &InternalStringSize, ControlFlag);
if(InternalStringSize > 0)
{
Name.assign(InternalStringSize, MIL_TEXT('\0'));
MdmrNameW(ContextOrResultDmrId, Operation, LabelOrIndex, &Name[0], ValuePtr, ControlFlag);
Name.resize(InternalStringSize - 1);
}
}
else
{
MdmrNameW(ContextOrResultDmrId, Operation, LabelOrIndex, (MIL_TEXT_PTR)Name.c_str(), ValuePtr, ControlFlag);
}
}
#else
inline void MFTYPE MdmrControlFontA(MIL_ID ContextDmrId,
MIL_INT64 FontLabelOrIndex,
MIL_INT64 CharIndex,
const MIL_STRING& CharNamePtr,
MIL_INT64 ControlType,
MIL_DOUBLE ControlValue,
const void* ControlValuePtr)
{
return MdmrControlFontA(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), ControlType, ControlValue, ControlValuePtr);
}
inline void MFTYPE MdmrSaveA(const MIL_STRING& FileName, MIL_ID ContextDmrId, MIL_INT64 ControlFlag)
{
return MdmrSaveA(FileName.c_str(), ContextDmrId, ControlFlag);
}
inline MIL_ID MFTYPE MdmrRestoreA(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextDmrId)
{
return MdmrRestoreA(FileName.c_str(), SysId, ControlFlag, ContextDmrId);
}
inline void MFTYPE MdmrImportFontA(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex,
const MIL_STRING& CharList, MIL_INT64 ControlFlag)
{
MdmrImportFontA(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, CharList.c_str(), ControlFlag);
}
inline void MFTYPE MdmrImportFontA(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex,
MIL_INT64 CharList, MIL_INT64 ControlFlag)
{
MdmrImportFontA(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, (MIL_CONST_TEXT_PTR)CharList, ControlFlag);
}
inline void MFTYPE MdmrExportFontA(const MIL_STRING &FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 ControlFlag)
{
MdmrExportFontA(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, ControlFlag);
}
inline MIL_INT MFTYPE MdmrInquireFontA(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING &CharNamePtr,
MIL_INT64 InquireType, void* UserVarPtr)
{
return MdmrInquireFontA(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), InquireType, UserVarPtr);
}
inline MIL_INT MFTYPE MdmrInquireFontA(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING &CharNamePtr,
MIL_INT64 InquireType, MIL_STRING &UserVarPtr)
{
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
{
SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Operation not supported with MIL_STRING."));
}
#endif
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
MdmrInquireFontA(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquireFontA(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), InquireType, &UserVarPtr[0]);
UserVarPtr.resize(InternalStringSize - 1);
}
return RetValue;
}
inline MIL_INT MFTYPE MdmrInquireFontA(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, int /*NullCharNamePtr*/,
MIL_INT64 InquireType, MIL_STRING &UserVarPtr)
{
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
{
SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire type not supported with MIL_STRING."));
}
#endif
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
MdmrInquireFontA(ContextDmrId, FontLabelOrIndex, CharIndex, 0, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquireFontA(ContextDmrId, FontLabelOrIndex, CharIndex, 0, InquireType, &UserVarPtr[0]);
UserVarPtr.resize(InternalStringSize - 1);
}
return RetValue;
}
inline void MFTYPE MdmrNameA(MIL_ID ContextOrResultDmrId, MIL_INT64 Operation, MIL_INT64 LabelOrIndex, MIL_STRING &Name, MIL_INT* ValuePtr, MIL_INT64 ControlFlag)
{
//if operation generate an output
if(Operation == M_GET_NAME)
{
MIL_INT InternalStringSize = 0;
MdmrNameA(ContextOrResultDmrId, M_GET_NAME, LabelOrIndex, M_NULL, &InternalStringSize, ControlFlag);
if(InternalStringSize > 0)
{
Name.assign(InternalStringSize, MIL_TEXT('\0'));
MdmrNameA(ContextOrResultDmrId, Operation, LabelOrIndex, &Name[0], ValuePtr, ControlFlag);
Name.resize(InternalStringSize - 1);
}
}
else
{
MdmrNameA(ContextOrResultDmrId, Operation, LabelOrIndex, (MIL_TEXT_PTR)Name.c_str(), ValuePtr, ControlFlag);
}
}
#endif /* M_MIL_UNICODE_API*/
#else
inline void MFTYPE MdmrControlFont(MIL_ID ContextDmrId,
MIL_INT64 FontLabelOrIndex,
MIL_INT64 CharIndex,
const MIL_STRING& CharNamePtr,
MIL_INT64 ControlType,
MIL_DOUBLE ControlValue,
const void* ControlValuePtr)
{
return MdmrControlFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), ControlType, ControlValue, ControlValuePtr);
}
inline void MFTYPE MdmrSave(const MIL_STRING& FileName, MIL_ID ContextDmrId, MIL_INT64 ControlFlag)
{
return MdmrSave(FileName.c_str(), ContextDmrId, ControlFlag);
}
inline MIL_ID MFTYPE MdmrRestore(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextDmrId)
{
return MdmrRestore(FileName.c_str(), SysId, ControlFlag, ContextDmrId);
}
inline void MFTYPE MdmrImportFont(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex,
const MIL_STRING& CharList, MIL_INT64 ControlFlag)
{
MdmrImportFont(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, CharList.c_str(), ControlFlag);
}
inline void MFTYPE MdmrImportFont(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex,
MIL_INT64 CharList, MIL_INT64 ControlFlag)
{
MdmrImportFont(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, (MIL_CONST_TEXT_PTR)CharList, ControlFlag);
}
inline void MFTYPE MdmrExportFont(const MIL_STRING &FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 ControlFlag)
{
MdmrExportFont(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, ControlFlag);
}
#if !M_MIL_USE_SAFE_TYPE
inline MIL_INT MFTYPE MdmrInquireFont(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, MilCPPConstMilStringOrPtrParam CharNamePtr,
MIL_INT64 InquireType, void* UserVarPtr)
{
return MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.m_pStr, InquireType, UserVarPtr);
}
inline MIL_INT MFTYPE MdmrInquireFont(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, MilCPPConstMilStringOrPtrParam CharNamePtr,
MIL_INT64 InquireType, MIL_STRING &UserVarPtr)
{
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
{
SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire type not supported with MIL_STRING."));
}
#endif
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.m_pStr, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.m_pStr, InquireType, &UserVarPtr[0]);
UserVarPtr.resize(InternalStringSize - 1);
}
return RetValue;
}
#endif
inline void MFTYPE MdmrName(MIL_ID ContextOrResultDmrId, MIL_INT64 Operation, MIL_INT64 LabelOrIndex, MIL_STRING &Name, MIL_INT* ValuePtr, MIL_INT64 ControlFlag)
{
//if operation generate an output
if(Operation == M_GET_NAME)
{
MIL_INT InternalStringSize = 0;
MdmrName(ContextOrResultDmrId, M_GET_NAME, LabelOrIndex, M_NULL, &InternalStringSize, ControlFlag);
if(InternalStringSize > 0)
{
Name.assign(InternalStringSize, MIL_TEXT('\0'));
MdmrName(ContextOrResultDmrId, Operation, LabelOrIndex, &Name[0], ValuePtr, ControlFlag);
Name.resize(InternalStringSize - 1);
}
}
else
{
MdmrName(ContextOrResultDmrId, Operation, LabelOrIndex, (MIL_TEXT_PTR)Name.c_str(), ValuePtr, ControlFlag);
}
}
#endif /* M_MIL_USE_UNICODE */
#if M_MIL_USE_64BIT
#else
#ifdef __cplusplus
template <typename T>
inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, T* ControlValue)
{
MdmrControl(ContextOrResultDmrId, ControlType, M_PTR_TO_MIL_INT(ControlValue));
}
#endif
#endif
inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, const MIL_STRING& ControlValue)
{
MdmrControl(ContextOrResultDmrId, ControlType, M_PTR_TO_MIL_INT(ControlValue.c_str()));
}
#if M_MIL_USE_SAFE_TYPE
inline MIL_INT MFTYPE MdmrInquireSafeType(MIL_ID ContextOrResultDmrId, MIL_INT64 InquireType, MIL_STRING& ValuePtr)
{
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
{
SafeTypeError(MIL_TEXT("MdmrInquire"), MIL_TEXT("Inquire Type not supported with MIL_STRING."));
}
#endif
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
MdmrInquire(ContextOrResultDmrId, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
ValuePtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquire(ContextOrResultDmrId, InquireType, &ValuePtr[0]);
ValuePtr.resize(InternalStringSize - 1);
}
return RetValue;
}
inline MIL_INT MFTYPE MdmrInquireFontSafeType(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING &CharNamePtr,
MIL_INT64 InquireType, MIL_STRING &ValuePtr)
{
if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
{
SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire Type not supported with MIL_STRING."));
}
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
ValuePtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), InquireType, &ValuePtr[0]);
ValuePtr.resize(InternalStringSize - 1);
}
return RetValue;
}
inline MIL_INT MFTYPE MdmrInquireFontSafeType(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, int NullCharNamePtr,
MIL_INT64 InquireType, MIL_STRING &ValuePtr)
{
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
{
SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire Type not supported with MIL_STRING."));
}
#endif
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
if(NullCharNamePtr != 0)
SafeTypeError(MIL_TEXT("MdmrInquireFont"));
MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, 0, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
ValuePtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, 0, InquireType, &ValuePtr[0]);
ValuePtr.resize(InternalStringSize - 1);
}
return RetValue;
}
#if M_MIL_SAFE_TYPE_M_NULL_PTR_TYPE_EXISTS
inline MIL_INT MFTYPE MdmrInquireFontSafeType(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, std::nullptr_t,
MIL_INT64 InquireType, MIL_STRING &ValuePtr)
{
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
{
SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire Type not supported with MIL_STRING."));
}
#endif
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, 0, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
ValuePtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, 0, InquireType, &ValuePtr[0]);
ValuePtr.resize(InternalStringSize - 1);
}
return RetValue;
}
#endif
inline MIL_INT MFTYPE MdmrInquireStringModelSafeType(MIL_ID ContextDmrId, MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position, MIL_INT64 PermittedCharEntry,
MIL_INT64 InquireType, MIL_STRING &ValuePtr)
{
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
{
SafeTypeError(MIL_TEXT("MdmrInquireStringModel"), MIL_TEXT("Inquire Type not supported with MIL_STRING."));
}
#endif
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
ValuePtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, InquireType, &ValuePtr[0]);
ValuePtr.resize(InternalStringSize - 1);
}
return RetValue;
}
inline void MFTYPE MdmrGetResultSafeType(MIL_ID ResultDmrId, MIL_INT64 StringIndex, MIL_INT64 CharacterPosIndex, MIL_INT64 ResultType, MIL_STRING &ResultArrayPtr)
{
#if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE
if((ResultType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING)
{
SafeTypeError(MIL_TEXT("MdmrGetResult"), MIL_TEXT("Result Type not supported with MIL_STRING."));
}
#endif
bool InternalFlagIndicatingToDoMilStringOperations = true;
if(StringIndex == M_ALL)
{
MIL_INT InternalNumberOfStrings = 0;
MdmrGetResult(ResultDmrId, M_DEFAULT, M_DEFAULT, M_STRING_NUMBER + M_TYPE_MIL_INT, &InternalNumberOfStrings);
if(InternalNumberOfStrings > 1)
{
InternalFlagIndicatingToDoMilStringOperations = false;
SafeTypeError(MIL_TEXT("MdmrGetResult"), MIL_TEXT("MIL_STRING overloads do not support a function call returning multiple strings."));
}
}
if(InternalFlagIndicatingToDoMilStringOperations)
{
MIL_INT InternalStringSize = 0;
MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, (ResultType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
ResultArrayPtr.assign(InternalStringSize, MIL_TEXT('\0'));
MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType, &ResultArrayPtr[0]);
ResultArrayPtr.resize(InternalStringSize - 1);
}
}
}
#else
inline MIL_INT MFTYPE MdmrInquire(MIL_ID ContextOrResultDmrId, MIL_INT64 InquireType, MIL_STRING &ValuePtr)
{
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
MdmrInquire(ContextOrResultDmrId, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
ValuePtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquire(ContextOrResultDmrId, InquireType, &ValuePtr[0]);
ValuePtr.resize(InternalStringSize - 1);
}
return RetValue;
}
inline MIL_INT MFTYPE MdmrInquireStringModel(MIL_ID ContextDmrId, MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position, MIL_INT64 PermittedCharEntry,
MIL_INT64 InquireType, MIL_STRING &UserVarPtr)
{
MIL_INT RetValue = 0;
MIL_INT InternalStringSize = 0;
MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, InquireType, &UserVarPtr[0]);
UserVarPtr.resize(InternalStringSize - 1);
}
return RetValue;
}
inline void MFTYPE MdmrGetResult(MIL_ID ResultDmrId, MIL_INT64 StringIndex, MIL_INT64 CharacterPosIndex, MIL_INT64 ResultType, MIL_STRING &ResultArrayPtr)
{
bool InternalFlagIndicatingToDoMilStringOperations = true;
if(StringIndex == M_ALL)
{
MIL_INT InternalNumberOfStrings = 0;
MdmrGetResult(ResultDmrId, M_DEFAULT, M_DEFAULT, M_STRING_NUMBER + M_TYPE_MIL_INT, &InternalNumberOfStrings);
if(InternalNumberOfStrings > 1)
{
InternalFlagIndicatingToDoMilStringOperations = false;
}
}
if(InternalFlagIndicatingToDoMilStringOperations)
{
MIL_INT InternalStringSize = 0;
//Inquire the byte content
MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, (ResultType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize);
if(InternalStringSize > 0)
{
ResultArrayPtr.assign(InternalStringSize, MIL_TEXT('\0'));
MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType, &ResultArrayPtr[0]);
ResultArrayPtr.resize(InternalStringSize - 1);
}
}
}
#endif
#endif /* M_MIL_USE_STRING*/
////////////////////////////////////////////////////////////////////////////////
// MIL_UNIQUE_ID support
#if M_MIL_USE_MIL_UNIQUE_ID
#if M_MIL_USE_SAFE_TYPE
template <> inline bool MilIsCorrectObjectType<&MdmrFree>(MIL_INT64 ObjectType)
{
return (ObjectType & ~M_USER_DEFINE_LOW_ATTRIBUTE) == M_DMR_OBJECT;
}
#endif
typedef MIL_UNIQUE_ID<&MdmrFree> MIL_UNIQUE_DMR_ID;
#if M_MIL_USE_MOVE_SEMANTICS
inline MIL_UNIQUE_DMR_ID MdmrAlloc(MIL_ID SysId, MIL_INT64 ContextType, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG)
{
return MIL_UNIQUE_DMR_ID(MdmrAlloc(SysId, ContextType, ControlFlag, M_NULL));
}
inline MIL_UNIQUE_DMR_ID MdmrAllocResult(MIL_ID SysId, MIL_INT64 ResultType, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG)
{
return MIL_UNIQUE_DMR_ID(MdmrAllocResult(SysId, ResultType, ControlFlag, M_NULL));
}
inline MIL_UNIQUE_DMR_ID MdmrRestore(MIL_CONST_TEXT_PTR FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG)
{
return MIL_UNIQUE_DMR_ID(MdmrRestore(FileName, SysId, ControlFlag, M_NULL));
}
#if M_MIL_USE_STRING
inline MIL_UNIQUE_DMR_ID MdmrRestore(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG)
{
return MIL_UNIQUE_DMR_ID(MdmrRestore(FileName, SysId, ControlFlag, M_NULL));
}
#endif // M_MIL_USE_STRING
template <MilFreeFuncType FreeFunc> inline void MdmrFree(const MIL_UNIQUE_ID<FreeFunc>&) = delete;
inline void MdmrStream(MilStreamParam MemPtrOrFileName,
MIL_ID SysId ,
MIL_INT64 Operation ,
MIL_INT64 StreamType ,
MIL_DOUBLE Version ,
MIL_INT64 ControlFlag ,
MIL_UNIQUE_DMR_ID* ContextDmrIdPtr ,
MIL_INT* SizeByteVarPtr )
{
MxxxStreamForMilUniqueId(MemPtrOrFileName, SysId, Operation, StreamType, Version, ControlFlag, ContextDmrIdPtr, SizeByteVarPtr, MdmrStream);
}
#endif // M_MIL_USE_MOVE_SEMANTICS
#endif // M_MIL_USE_MIL_UNIQUE_ID
// End of MIL_UNIQUE_ID support
////////////////////////////////////////////////////////////////////////////////
#endif // !M_MIL_LITE
#endif // __MIL_DMR_H__