ConfigFile

Dependents:   ConfigFile_TestProgram StarBoardOrangeExpansion1 StarBoardOrangeExpansion2 Drive2ChoroQ ... more

ConfigFile.h

Committer:
shintamainjp
Date:
2010-09-12
Revision:
4:940510a29b44
Parent:
3:7250e339328c
Child:
5:56d544b8e5c6

File content as of revision 4:940510a29b44:

/**
 * Configuration file interface class (Version 0.0.1)
 *
 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
 * http://shinta.main.jp/
 */
#include "mbed.h"

#ifndef _CONFIG_FILE_H_
#define _CONFIG_FILE_H_

/**
 * Configuration File class.
 */
class ConfigFile {
public:

    /**
     * Create a configuration file class.
     */
    ConfigFile();

    /**
     * Destroy a configuration file class.
     */
    ~ConfigFile();

    /**
     * Get a value for a key.
     *
     * @param key A target key name.
     * @param value A pointer to a value storage.
     * @param siz A size of a value storage.
     * @return A value or NULL.
     */
    bool getValue(char *key, char *value, size_t siz);

    /**
     * Set a set of a key and value.
     *
     * @param key A key.
     * @param value A value.
     *
     * @return True if it succeed.
     */
    bool setValue(char *key, char *value);

    /**
     * Remove a config.
     *
     * @param key A key.
     *
     * @return True if it succeed.
     */
    bool remove(char *key);

    /**
     * Remove all config.
     *
     * @return True if it succeed.
     */
    bool removeAll(void);

    /**
     * Read from the target file.
     *
     * @param file A target file name.
     */
    bool read(char *file);

    typedef enum {
        UNIX,
        MAC,
        DOS
    } FileFormat;

    /**
     * Write from the target file.
     *
     * @param file A pointer to a file name.
     * @param header A pointer to a header.
     * @param ff File format.
     */
    bool write(char *file, char *header = NULL, FileFormat ff = UNIX);

    /**
     * Output for debugging.
     *
     * @deprecated Please do not use this method.
     */
    void debout(void) {
        printf("===========================================================================\n");
        for (int i = 0; i < MAXCONFIG; i++) {
            config_t *cfg = configlist[i];
            printf("[%03d]:", i);
            if (cfg == NULL) {
                printf("NULL\n");
            } else {
                printf("'%s'='%s'\n", cfg->key, cfg->value);
            }
        }
        printf("===========================================================================\n");
    }
private:
    typedef struct {
        char *key;
        char *value;
    } config_t;
    config_t **configlist;
    static const int MAXCONFIG = 64;
    static const int MAXLEN_KEY = 64;
    static const int MAXLEN_VALUE = 128;
    static const char SEPARATOR = '=';

    config_t *search(char *key);
    bool add(config_t *cfg);
};

#endif