免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: always8
打印 上一主题 下一主题

有没有人愿意参加这个项目(处理配制文件的C接口:libconf) [复制链接]

论坛徽章:
0
41 [报告]
发表于 2006-02-14 10:06 |只看该作者
楼主的想法还是可行的嘛!
1、不是试图存取所有的配置文件。而是实现这样一个接口,这样别人在开发中需要存取自己的配置文件时,就不需要直接操作文件了,直接调用相关函数,象vcl中的TIniFile。
2、不太复杂的功能,还是不麻烦XML了吧,否则使用者还需要XML库。

论坛徽章:
0
42 [报告]
发表于 2006-02-14 23:33 |只看该作者
每个人都按照自己的理解去曲解LZ的意思,不知道这样编出来的程序是不是也会曲解配置文件的意思

论坛徽章:
0
43 [报告]
发表于 2006-02-14 23:53 |只看该作者
以前做过一个. 贴个头文件供参考.


  1. #ifndef opt_h
  2. #define opt_h

  3. #define Max_Opt_Num   40

  4. typedef struct
  5. {
  6.   char   Name[60];
  7.   char * Addr;
  8.   char   Type;
  9. }Opt_Def_Stru;

  10. class TXmlNode;
  11. class TIni;

  12. class TOpt
  13. {
  14. public:
  15.   Opt_Def_Stru mOpts[Max_Opt_Num];
  16.   int mOpt_Num;

  17. public:
  18.   TOpt();
  19.   int Def(char * opt,char * addr,char type='S');
  20.   int Def(char * opt,int * addr);

  21.   int Get_Cmd(char * cmd);
  22.   int Get_Argv(int argc,char * argv[]);
  23.   int Get_Env();
  24.   int Get_Xml_Prop(TXmlNode * node);
  25.   int Get_Xml_Item(TXmlNode * node);
  26.   int Get_Ini_Prop(TIni * ini, char * grp);

  27.   int Show();

  28.   virtual int Show_Ext();
  29.   virtual int Get_Ext();
  30. protected:
  31.   int Set_Value(int id,char * val);
  32. };

  33. #endif



复制代码

论坛徽章:
0
44 [报告]
发表于 2006-02-14 23:56 |只看该作者
可以从环境变量/命令行参数/ini文件/xml文件中读配置, 下面是一个具体的用例.


  1. typedef struct
  2. {
  3.   char Db_Type_Name[60];
  4.   int  Db_Type;
  5.   char Db_Name[300];
  6.   char User_Name[60];
  7.   char Password[60];
  8.   char Host[60];
  9.   int  Port;

  10.   int  Direct_Mode;
  11. }Db_Set_Info_Stru;

  12. #include <opt.h>

  13. class TDb_Opt : public TOpt
  14. {
  15. public:
  16.   Db_Set_Info_Stru * mInfo;
  17. public:
  18.   TDb_Opt(Db_Set_Info_Stru * ptr);
  19.   int Get_Ext();
  20.   int Show_Ext();
  21. };

  22. TDb_Opt::TDb_Opt(Db_Set_Info_Stru * ptr)
  23. {
  24.   mInfo = ptr;
  25.   mOpt_Num = 0;

  26.   memset(ptr,0,sizeof(Db_Set_Info_Stru));

  27.   Def("type",ptr->Db_Type_Name);
  28.   Def("dbname",ptr->Db_Name);
  29.   Def("user",ptr->User_Name);
  30.   Def("password",ptr->Password);
  31.   Def("host",ptr->Host);
  32.   Def("port",&ptr->Port);
  33.   Def("direct_mode",&ptr->Direct_Mode);
  34. };

  35. int TDb_Opt::Get_Ext()
  36. {
  37.   mInfo->Db_Type = Get_Db_Type(mInfo->Db_Type_Name);
  38.   return 1;
  39. };

  40. int TDb_Opt::Show_Ext()
  41. {
  42.   printf("DB_TYPE : %d\n",mInfo->Db_Type);
  43.   return 1;
  44. };

复制代码

论坛徽章:
0
45 [报告]
发表于 2006-02-15 08:58 |只看该作者

回43楼

看到类,我就不想看下去了。
类中的数据最好private

论坛徽章:
0
46 [报告]
发表于 2006-02-18 01:29 |只看该作者
libconf项目已经成功在SourceForge上注册,由于名称的原因改为:conflib
要参加的人请发E-mail至always_dearest@hotmail.com
内容包括:在SourceForge上的用户名,E-mail,英文名(用于THANKING文档),技术,是否会使用
CVS等。符合条件的人会被加入到libconf的开发行列中,并且会收到一封邮件,包含一份开发者文档。

Developers.rar

1.16 KB, 下载次数: 15

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
47 [报告]
发表于 2006-02-18 01:41 |只看该作者
原帖由 soul_of_moon 于 2006-2-15 08:58 发表
看到类,我就不想看下去了。
类中的数据最好private

那都是骗自己的。

论坛徽章:
0
48 [报告]
发表于 2006-02-20 11:31 |只看该作者
我看这个项目技术倒不是问题。重要的是设计,接口必须设计的足够通用,足够灵活,而且要足够简便(至少要简便到调用这个库比自己写简单)才会有人用。因为现在类似的实现已经有一大摞了。
我也有兴趣做个观察员。呵呵。

论坛徽章:
0
49 [报告]
发表于 2006-02-21 16:26 |只看该作者
shit
这几天看了好多这方面的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP