手机探索者开发实录—代码产生器(下)
转载时请注明出处和作者联系方式
作者联系方式:李先静 <xianjimli at hotmail dot com>
代码产生器的代码:
gen_framework.sh
-
#!/bin/bash
-
if["$2"=""]
- then
-
echo$0"intf|implsome.def"
- exit0
- fi
- ACTION=$1
- INPUT=$2
- CLASS=${INPUT/.def/}
-
CLASS_NAME=`echo$CLASS|sed"s/_//g"`
- CLASS_UPPER=`echo$CLASS|tra-zA-Z`
- CLASS_LOWER=`echo$CLASS|trA-Za-z`
-
functiongen_h_begin()
- {
-
echo"#ifndef$CLASS_UPPER"$1"_H"
-
echo"#define$CLASS_UPPER"$1"_H"
-
echo""
-
echo"ME_DECLS_BEGIN"
-
echo""
-
return;
- }
-
functiongen_h_end()
- {
-
echo"ME_DECLS_END"
-
echo""
-
echo"#endif/*$CLASS_UPPER"$1"_H*/"
-
echo""
-
return;
- }
-
functiongen_intf()
- {
-
echo"#include/"mobile_explorer_types.h/""
- gen_h_begin
-
echo"struct_$CLASS_NAME;"
-
echo"typedefstruct_$CLASS_NAME$CLASS_NAME;"
-
echo""
- awk-F:'{
-
Class=$3;gsub(/_/,"",Class);
-
Func=$4;gsub(/_/,"",Func);
-
print"typedef"$2"(*"ClassFunc"Func)("$5");";
- }'$INPUT
-
echo"";
-
echo"struct_$CLASS_NAME"
-
echo"{"
- awk-F:'{
-
Class=$3;gsub(/_/,"",Class);
-
Func=$4;gsub(/_/,"",Func);
-
print""ClassFunc"Func"tolower($4)";";
- }'$INPUT
-
echo""
-
echo"charpriv[0];"
-
echo"};"
-
echo""
- awk-F:'{
- Class=$3;
- Func=$4;
-
print"staticinline"$2""tolower(Class)"_"tolower(Func)"("$5")";
-
print"{";
-
if($2!="void")
- {
-
print"me_return_val_if_fail(thiz!=NULL&&thiz->"tolower(Func)"!=NULL,ME_RET_PARAMS);";
- }
-
else
- {
-
print"me_return_if_fail(thiz!=NULL&&thiz->"tolower(Func)"!=NULL);";
- }
-
print"";
-
if($2!="void")
- {
-
printf"return";
- }
-
else
- {
-
printf"";
- }
-
printf"thiz->"tolower(Func)"(";
-
system("./param_gen_call.sh"$5);
-
print");"
-
if($2!="void")
- {
- }
-
else
- {
-
print"";
-
print"return;";
- }
-
print"}/n"
- }'$INPUT
- gen_h_end
-
return;
- }
- IMPL=$ACTION
- IMPL_UPPER=`echo$IMPL|tra-zA-Z`
- IMPL_LOWER=`echo$IMPL|trA-Za-z`
-
functiongen_impl_h
- {
-
echo"#include<$CLASS_LOWER.h>"
-
gen_h_begin"_"$IMPL_UPPER
-
echo"$CLASS_NAME*"$CLASS_LOWER"_"$IMPL_LOWER"_create();"
-
gen_h_end"_"$IMPL_UPPER
-
return;
- }
-
functiongen_impl_c
- {
-
echo"#include<"$CLASS_LOWER"_"$IMPL_LOWER".h>"
-
echo""
-
echo"typedefstruct_PrivInfo"
-
echo"{"
-
echo"unsignedintdummy;"
-
echo"}PrivInfo;"
-
echo""
- awk-vimpl=$IMPL-F:'{
- Class=$3;
- Func=$4;
-
print"static"$2""tolower(Class)"_"tolower(impl)"_"tolower(Func)"("$5")";
-
print"{";
-
if($2!="void")
- {
-
print"me_return_val_if_fail(thiz!=NULL,ME_RET_PARAMS);";
- }
-
else
- {
-
print"me_return_if_fail(thiz!=NULL);";
- }
-
print""
-
print"PrivInfo*priv=(PrivInfo*)thiz->priv;"
-
print""
-
if($2!="void")
- {
-
print"return("$2")0;";
- }
-
else
- {
-
print"return;";
- }
-
print"}/n"
- }'$INPUT
-
echo""
-
echo"$CLASS_NAME*"$CLASS_LOWER"_"$IMPL_LOWER"_create()"
-
echo"{"
-
echo"$CLASS_NAME*thiz=($CLASS_NAME*)malloc(sizeof($CLASS_NAME)+sizeof(PrivInfo));"
-
echo""
-
echo"if(thiz!=NULL)"
-
echo"{"
- awk-vimpl=$IMPL-F:'{
- Class=$3;
- Func=$4;
-
print"thiz->"tolower(Func)"="tolower(Class)"_"tolower(impl)"_"tolower(Func)";";
- }'$INPUT
-
echo"}"
-
echo""
-
echo"returnthiz;"
-
echo"}"
-
return;
- }
-
if["$ACTION"="intf"]
- then
-
echo"gen_intf>$CLASS_LOWER.h"
- gen_intf>$CLASS_LOWER.h
-
else
-
echo"gen_impl_h>$CLASS_LOWER"_"$IMPL_LOWER.h"
-
gen_impl_h>$CLASS_LOWER"_"$IMPL_LOWER.h
-
echo"gen_impl_c>$CLASS_LOWER"_"$IMPL_LOWER.c"
-
gen_impl_c>$CLASS_LOWER"_"$IMPL_LOWER.c
- fi
param_gen_call.sh
-
#!/bin/bash
- echo$*|awk-F,'
- {
-
for(i=1;i<=NF;i++)
- {
-
system("./param_gen_call_one.sh"$i);
-
if(i!=NF)
- {
-
printf(",");
- }
- }
- }'
param_gen_call_one.sh
-
#!/bin/bash
-
echo$*|awk'{printf$NF}'
~~end~~
分享到:
相关推荐
PHP项目开发全程实录代码
PHP项目开发实录-代码
Java项目开发全程实录-源代码.zip
android开发全程实录个章节源代码,全部齐全。
Python Web开发学习实录对应源代码
java项目开发全程实录PDF 和 代码全集
Java项目开发全程实录-源代码.rarJava项目开发全程实录-源代码.rarJava项目开发全程实录-源代码.rarJava项目开发全程实录-源代码.rar
C#项目开发全程实录源代码,这是书上的附带代码,应该说是比较有研究价值的。
C#项目开发全程实录(完整代码),绝对完整,欢迎下载共享。。。
PHP实力开发源码,包括数据库,配置,php项目开发全程实录源代码,适合学习PHP学习者,php项目开发全程实录源代码,php代码类资源
Java项目开发全程实录-源代码
asp.net项目开发全程实录asp.net项目开发全程实录asp.net项目开发全程实录asp.net项目开发全程实录asp.net项目开发全程实录asp.net项目开发全程实录asp.net项目开发全程实录asp.net项目开发全程实录asp.net项目开发...
明日科技《C#项目开发案例全程实录》(第二版) 源代码17个(12个例程+5个项目)
JAVA项目开发全程实录源代码, 初学者可以参考一下。
C#项目开发案例全程实录源代码C#项目开发案例全程实录源代码C#项目开发案例全程实录源代码C#项目开发案例全程实录源代码
php项目开发全程实录光盘源代码 DVD17小时语音视频详解 张仿彦 刘中华 杨丽 等编著
JAVA项目开发案例全程实录光盘源代码第一讲代码
Web服务开发学习实录(闫建强,王瑞敬编著)随书源代码
ASP.NET项目开发全程实录(源代码)包括随书光盘的所有案例源码 01供求信息网 02电子商务平台 03小区物业内部管理网 04图书馆管理系统 05企业办公自动化管理系统 06互动媒体学习社区 07在线考试网 08网上在线论坛 09...
教程名称:Android开发淘宝网手机客户端全程实录 视频教程课程目录:【】[Android应用实战淘宝网手机客户端全程实录(第一季)].MyTaoBao【】[Android应用实战淘宝网手机客户端全程实录(第一季)].MyTaoBao_final【】...