ConfigFile

Dependents:   ConfigFile_TestProgram StarBoardOrangeExpansion1 StarBoardOrangeExpansion2 Drive2ChoroQ ... more

Committer:
shintamainjp
Date:
Sun Sep 12 07:53:10 2010 +0000
Revision:
4:940510a29b44
Parent:
3:7250e339328c
Child:
5:56d544b8e5c6

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 3:7250e339328c 1 /**
shintamainjp 3:7250e339328c 2 * Configuration file interface class (Version 0.0.1)
shintamainjp 3:7250e339328c 3 *
shintamainjp 3:7250e339328c 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
shintamainjp 3:7250e339328c 5 * http://shinta.main.jp/
shintamainjp 3:7250e339328c 6 */
shintamainjp 0:6b4ba48753b9 7 #include "mbed.h"
shintamainjp 0:6b4ba48753b9 8
shintamainjp 0:6b4ba48753b9 9 #ifndef _CONFIG_FILE_H_
shintamainjp 0:6b4ba48753b9 10 #define _CONFIG_FILE_H_
shintamainjp 0:6b4ba48753b9 11
shintamainjp 0:6b4ba48753b9 12 /**
shintamainjp 0:6b4ba48753b9 13 * Configuration File class.
shintamainjp 0:6b4ba48753b9 14 */
shintamainjp 0:6b4ba48753b9 15 class ConfigFile {
shintamainjp 0:6b4ba48753b9 16 public:
shintamainjp 0:6b4ba48753b9 17
shintamainjp 0:6b4ba48753b9 18 /**
shintamainjp 0:6b4ba48753b9 19 * Create a configuration file class.
shintamainjp 0:6b4ba48753b9 20 */
shintamainjp 0:6b4ba48753b9 21 ConfigFile();
shintamainjp 4:940510a29b44 22
shintamainjp 0:6b4ba48753b9 23 /**
shintamainjp 0:6b4ba48753b9 24 * Destroy a configuration file class.
shintamainjp 0:6b4ba48753b9 25 */
shintamainjp 0:6b4ba48753b9 26 ~ConfigFile();
shintamainjp 4:940510a29b44 27
shintamainjp 0:6b4ba48753b9 28 /**
shintamainjp 0:6b4ba48753b9 29 * Get a value for a key.
shintamainjp 0:6b4ba48753b9 30 *
shintamainjp 0:6b4ba48753b9 31 * @param key A target key name.
shintamainjp 1:f02e081afe42 32 * @param value A pointer to a value storage.
shintamainjp 1:f02e081afe42 33 * @param siz A size of a value storage.
shintamainjp 0:6b4ba48753b9 34 * @return A value or NULL.
shintamainjp 0:6b4ba48753b9 35 */
shintamainjp 1:f02e081afe42 36 bool getValue(char *key, char *value, size_t siz);
shintamainjp 4:940510a29b44 37
shintamainjp 0:6b4ba48753b9 38 /**
shintamainjp 0:6b4ba48753b9 39 * Set a set of a key and value.
shintamainjp 0:6b4ba48753b9 40 *
shintamainjp 0:6b4ba48753b9 41 * @param key A key.
shintamainjp 0:6b4ba48753b9 42 * @param value A value.
shintamainjp 0:6b4ba48753b9 43 *
shintamainjp 0:6b4ba48753b9 44 * @return True if it succeed.
shintamainjp 0:6b4ba48753b9 45 */
shintamainjp 0:6b4ba48753b9 46 bool setValue(char *key, char *value);
shintamainjp 4:940510a29b44 47
shintamainjp 0:6b4ba48753b9 48 /**
shintamainjp 0:6b4ba48753b9 49 * Remove a config.
shintamainjp 0:6b4ba48753b9 50 *
shintamainjp 0:6b4ba48753b9 51 * @param key A key.
shintamainjp 0:6b4ba48753b9 52 *
shintamainjp 0:6b4ba48753b9 53 * @return True if it succeed.
shintamainjp 0:6b4ba48753b9 54 */
shintamainjp 0:6b4ba48753b9 55 bool remove(char *key);
shintamainjp 4:940510a29b44 56
shintamainjp 0:6b4ba48753b9 57 /**
shintamainjp 0:6b4ba48753b9 58 * Remove all config.
shintamainjp 0:6b4ba48753b9 59 *
shintamainjp 0:6b4ba48753b9 60 * @return True if it succeed.
shintamainjp 0:6b4ba48753b9 61 */
shintamainjp 0:6b4ba48753b9 62 bool removeAll(void);
shintamainjp 4:940510a29b44 63
shintamainjp 0:6b4ba48753b9 64 /**
shintamainjp 0:6b4ba48753b9 65 * Read from the target file.
shintamainjp 0:6b4ba48753b9 66 *
shintamainjp 0:6b4ba48753b9 67 * @param file A target file name.
shintamainjp 0:6b4ba48753b9 68 */
shintamainjp 0:6b4ba48753b9 69 bool read(char *file);
shintamainjp 4:940510a29b44 70
shintamainjp 2:d8febae84a45 71 typedef enum {
shintamainjp 2:d8febae84a45 72 UNIX,
shintamainjp 2:d8febae84a45 73 MAC,
shintamainjp 2:d8febae84a45 74 DOS
shintamainjp 2:d8febae84a45 75 } FileFormat;
shintamainjp 4:940510a29b44 76
shintamainjp 0:6b4ba48753b9 77 /**
shintamainjp 0:6b4ba48753b9 78 * Write from the target file.
shintamainjp 0:6b4ba48753b9 79 *
shintamainjp 4:940510a29b44 80 * @param file A pointer to a file name.
shintamainjp 4:940510a29b44 81 * @param header A pointer to a header.
shintamainjp 2:d8febae84a45 82 * @param ff File format.
shintamainjp 0:6b4ba48753b9 83 */
shintamainjp 4:940510a29b44 84 bool write(char *file, char *header = NULL, FileFormat ff = UNIX);
shintamainjp 4:940510a29b44 85
shintamainjp 0:6b4ba48753b9 86 /**
shintamainjp 0:6b4ba48753b9 87 * Output for debugging.
shintamainjp 0:6b4ba48753b9 88 *
shintamainjp 0:6b4ba48753b9 89 * @deprecated Please do not use this method.
shintamainjp 0:6b4ba48753b9 90 */
shintamainjp 0:6b4ba48753b9 91 void debout(void) {
shintamainjp 0:6b4ba48753b9 92 printf("===========================================================================\n");
shintamainjp 0:6b4ba48753b9 93 for (int i = 0; i < MAXCONFIG; i++) {
shintamainjp 0:6b4ba48753b9 94 config_t *cfg = configlist[i];
shintamainjp 0:6b4ba48753b9 95 printf("[%03d]:", i);
shintamainjp 0:6b4ba48753b9 96 if (cfg == NULL) {
shintamainjp 0:6b4ba48753b9 97 printf("NULL\n");
shintamainjp 0:6b4ba48753b9 98 } else {
shintamainjp 0:6b4ba48753b9 99 printf("'%s'='%s'\n", cfg->key, cfg->value);
shintamainjp 0:6b4ba48753b9 100 }
shintamainjp 0:6b4ba48753b9 101 }
shintamainjp 0:6b4ba48753b9 102 printf("===========================================================================\n");
shintamainjp 0:6b4ba48753b9 103 }
shintamainjp 0:6b4ba48753b9 104 private:
shintamainjp 0:6b4ba48753b9 105 typedef struct {
shintamainjp 0:6b4ba48753b9 106 char *key;
shintamainjp 0:6b4ba48753b9 107 char *value;
shintamainjp 0:6b4ba48753b9 108 } config_t;
shintamainjp 0:6b4ba48753b9 109 config_t **configlist;
shintamainjp 0:6b4ba48753b9 110 static const int MAXCONFIG = 64;
shintamainjp 0:6b4ba48753b9 111 static const int MAXLEN_KEY = 64;
shintamainjp 0:6b4ba48753b9 112 static const int MAXLEN_VALUE = 128;
shintamainjp 0:6b4ba48753b9 113 static const char SEPARATOR = '=';
shintamainjp 0:6b4ba48753b9 114
shintamainjp 0:6b4ba48753b9 115 config_t *search(char *key);
shintamainjp 0:6b4ba48753b9 116 bool add(config_t *cfg);
shintamainjp 0:6b4ba48753b9 117 };
shintamainjp 0:6b4ba48753b9 118
shintamainjp 0:6b4ba48753b9 119 #endif