123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- //---------------------------------------------------------------------------
- //
- // inifile.h - This file contains the class declaration for the FitIni Files
- //
- // The FitIni file is a ini style file.
- //
- //---------------------------------------------------------------------------//
- // Copyright (C) Microsoft Corporation. All rights reserved. //
- //===========================================================================//
- #ifndef INIFILE_H
- #define INIFILE_H
- //---------------------------------------------------------------------------
- // Include files
- #ifndef DSTD_H
- #include "dstd.h"
- #endif
- #ifndef DINIFILE_H
- #include "dinifile.h"
- #endif
- #ifndef FILE_H
- #include "file.h"
- #endif
- //---------------------------------------------------------------------------
- // Macro Definitions
- #ifndef NO_ERR
- #define NO_ERR 0x00000000
- #endif
- #define BLOCK_NOT_FOUND 0xFADA0000
- #define ID_NOT_FOUND 0xFADA0001
- #define DATA_NOT_CORRECT_TYPE 0xFADA0002
- #define BUFFER_TOO_SMALL 0xFADA0003
- #define NOT_A_FITINIFILE 0xFADA0004
- #define NO_RAM_FOR_INI_BLOCKS 0xFADA0005
- #define NO_MORE_BLOCKS 0xFADA0006
- #define TOO_MANY_BLOCKS 0xFADA0007
- #define NOT_ENOUGH_BLOCKS 0xFADA0008
- #define VARIABLE_NOT_FOUND 0xFADA0009
- #define SYNTAX_ERROR 0xFADA000A
- #define NOT_ENOUGH_ELEMENTS_FOR_ARRAY 0xFADA000B
- #define GET_NEXT_LINE 0xFADA000C
- #define USER_ARRAY_TOO_SMALL 0xFADA000D
- #define TOO_MANY_ELEMENTS 0xFADA000E
- //---------------------------------------------------------------------------
- // Enums
- //---------------------------------------------------------------------------
- // Structs
- struct IniBlockNode
- {
- char blockId[50];
- unsigned long blockOffset;
- };
- //---------------------------------------------------------------------------
- // FitIniFile
- class FitIniFile : public File
- {
- // Data Members
- //--------------
- protected:
- unsigned long totalBlocks; //Total number of blocks in file
- IniBlockNode *fileBlocks; //Data for blocks to speed up file
- char *currentBlockId; //Id of current block
- unsigned long currentBlockOffset; //Offset into file of block start
- unsigned long currentBlockSize; //Length of current block
- // Member Functions
- //------------------
- protected:
- long afterOpen (void);
- void atClose (void);
-
- long findNextBlockStart (char *line = NULL, unsigned long lineLen = 0);
- long countBlocks (void);
-
- long getNextWord (char *&line, char *buffer, unsigned long bufLen);
- float textToFloat (const char *num);
- double textToDouble (const char *num);
-
- long textToLong (const char *num);
- unsigned long textToULong (const char *num);
-
- short textToShort (const char *num);
- unsigned short textToUShort (const char *num);
-
- char textToChar (const char *num);
- unsigned char textToUChar (const char *num);
- bool booleanToLong (const char *num);
- float mathToFloat (const char *num);
-
- long mathToLong (const char *num);
- unsigned long mathToULong (const char *num);
-
- short mathToShort (const char *num);
- unsigned short mathToUShort (const char *num);
-
- char mathToChar (const char *num);
- unsigned char mathToUChar (const char *num);
- long floatToText (char *result, float num, unsigned long bufLen);
-
- long longToTextDec (char *result, long num, unsigned long bufLen);
- long longToTextHex (char *result, long num, unsigned long bufLen);
- long shortToTextDec (char *result, short num, unsigned long bufLen);
- long shortToTextHex (char *result, short num, unsigned long bufLen);
- long byteToTextDec (char *result, byte num, unsigned long bufLen);
- long byteToTextHex (char *result, byte num, unsigned long bufLen);
-
- long copyString (char* dest, char *src, unsigned long bufLen);
- public:
- FitIniFile (void);
- ~FitIniFile (void);
- virtual long open (const char* fName, FileMode _mode = READ, long numChildren = 50);
- virtual long open (FilePtr _parent, unsigned long fileSize, long numChildren = 50);
-
- virtual long create (char* fName);
- virtual long createWithCase( char* fName );
- virtual void close (void);
- virtual FileClass getFileClass (void)
- {
- return INIFILE;
- }
- long seekBlock (const char *blockId);
- long readIdFloat (const char *varName, float &value);
- long readIdDouble (const char *varName, double &value);
-
- long readIdBoolean (const char *varName, bool &value);
- long readIdLong (const char *varName, long &value);
- long readIdULong (const char *varName, unsigned long &value);
-
- long readIdShort (const char *varName, short &value);
- long readIdUShort (const char *varName, unsigned short &value);
-
- long readIdChar (const char *varName, char &value);
- long readIdUChar (const char *varName, unsigned char &value);
-
- long readIdString (const char *varName, char *result, unsigned long bufferSize);
- long getIdStringLength (const char *varName);
-
- long readIdFloatArray (const char *varName, float *result, unsigned long numElements);
-
- long readIdLongArray (const char *varName, long *result, unsigned long numElements);
- long readIdULongArray (const char *varName, unsigned long *result, unsigned long numElements);
-
- long readIdShortArray (const char *varName, short *result, unsigned long numElements);
- long readIdUShortArray (const char *varName, unsigned short *result, unsigned long numElements);
-
- long readIdCharArray (const char *varName, char *result, unsigned long numElements);
- long readIdUCharArray (const char *varName, unsigned char *result, unsigned long numElements);
-
- unsigned long getIdFloatArrayElements (const char *varName);
-
- unsigned long getIdLongArrayElements (const char *varName);
- unsigned long getIdULongArrayElements (const char *varName);
-
- unsigned long getIdShortArrayElements (const char *varName);
- unsigned long getIdUShortArrayElements (const char *varName);
-
- unsigned long getIdCharArrayElements (const char *varName);
- unsigned long getIdUCharArrayElements (const char *varName);
-
- long writeBlock (const char *blockId);
- long writeIdFloat (const char *varName, float value);
-
- long writeIdBoolean (const char *varName, bool value);
- long writeIdLong (const char *varName, long value);
- long writeIdULong (const char *varName, unsigned long value);
-
- long writeIdShort (const char *varName, short value);
- long writeIdUShort (const char *varName, unsigned short value);
-
- long writeIdChar (const char *varName, char value);
- long writeIdUChar (const char *varName, unsigned char value);
-
- long writeIdString (const char *varName, const char *result);
- long writeIdFloatArray (const char *varName, float *array, unsigned long numElements);
- long writeIdLongArray (const char *varName, long *array, unsigned long numElements);
- long writeIdUShortArray (const char *varName, unsigned short *array, unsigned long numElements);
- long writeIdUCharArray (const char *varName, unsigned char *array, unsigned long numElements);
- };
- //---------------------------------------------------------------------------
- #endif
- //---------------------------------------------------------------------------
- //
- // Edit Log
- //
- //
- //---------------------------------------------------------------------------
|