config_file.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is MPEG4IP.
  13.  * 
  14.  * The Initial Developer of the Original Code is Cisco Systems Inc.
  15.  * Portions created by Cisco Systems Inc. are
  16.  * Copyright (C) Cisco Systems Inc. 2000, 2001.  All Rights Reserved.
  17.  * 
  18.  * Contributor(s): 
  19.  *              Bill May        wmay@cisco.com
  20.  */
  21. #ifndef __CONFIG_FILE_H__
  22. #define __CONFIG_FILE_H__ 1
  23. #include "systems.h"
  24. enum {
  25.   CONFIG_INT,
  26.   CONFIG_STRING,
  27. };
  28. typedef struct config_variable_t {
  29.   uint32_t config_index;
  30.   const char *config_name;
  31.   int config_type;
  32.   int default_value;
  33.   const char * default_string;
  34. } config_variable_t;
  35. class CConfig {
  36.  public:
  37.   CConfig(const config_variable_t *foo, uint32_t max);
  38.   CConfig(const config_variable_t *foo, uint32_t max, const char *name);
  39.   ~CConfig(void);
  40.   int get_config_type(uint32_t cindex);
  41.   int get_config_value(int cindex);
  42.   int get_config_value(uint32_t cindex) { return get_config_value((int)cindex); };
  43.   int get_config_default_value(uint32_t cindex);
  44.   const char *get_config_string(uint32_t cindex);
  45.   const char *get_config_default_string(uint32_t cindex);
  46.   int read_config_file(const char *name = NULL);
  47. #ifdef _WIN32
  48.   int read_config_file(const char *reg_name, const char *config_section);
  49. #endif
  50.   void write_config_file(const char *name = NULL);
  51. #ifdef _WIN32
  52.   void write_config_file(const char *reg_name, const char *config_section);
  53. #endif
  54.   void set_config_value(uint32_t cindex, int value)
  55.     {
  56.       m_values[cindex] = value;
  57.       m_changed = 1;
  58.     };
  59.   void set_config_string(uint32_t cindex, char *str)
  60.     {
  61.       if (m_strings[cindex] != NULL) free(m_strings[cindex]);
  62.       m_strings[cindex] = str;
  63.       m_changed = 1;
  64.     };
  65.   void move_config_strings(uint32_t dest_index, uint32_t from_index)
  66.     {
  67.       if (m_strings[dest_index] != NULL) free(m_strings[dest_index]);
  68.       m_strings[dest_index] = m_strings[from_index];
  69.       m_strings[from_index] = NULL;
  70.       m_changed = 1;
  71.     };
  72.   int changed (void) { return m_changed; };
  73.  private:
  74.   void init(void);
  75.   char *find_name (char *ptr, uint32_t &index);
  76.   void get_default_name(char *buffer);
  77.   const config_variable_t *m_config_var;
  78.   uint32_t m_config_max;
  79.   int *m_types;
  80.   int *m_values;
  81.   char **m_strings;
  82.   int m_changed;
  83. };
  84. #endif