Changeset 23

Show
Ignore:
Timestamp:
12/22/07 19:17:40 (4 years ago)
Author:
Carlos
Message:

Some template magic

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/fbd/FacebookError.d

    r21 r23  
    33 * License: $(LINK2 http://www.opensource.org/licenses/zlib-license.php,zlib/libpng) 
    44 * Authors: Carlos Santander 
    5  * Date: December 1, 2007 
     5 * Date: December 22, 2007 
    66 * Version: 0.1 
    77 * See_Also: $(LINK2 http://developers.facebook.com/,Facebook Developers website) 
  • trunk/fbd/templates.di

    r20 r23  
    33 * License: $(LINK2 http://www.opensource.org/licenses/zlib-license.php,zlib/libpng) 
    44 * Authors: Carlos Santander 
    5  * Date: September 5, 2007 
     5 * Date: December 22, 2007 
    66 * Version: 0.1 
    77 * See_Also: $(LINK2 http://developers.facebook.com/,Facebook Developers website) 
     
    1010 
    1111package: 
    12 template ArrayProperty (T, char[] property, char[] array, char[] seq) 
    13 
    14     const 
    15         ArrayProperty = "private ArraySeq!(" ~ T.stringof ~ ") " ~ seq ~ "; private " ~ T.stringof ~ "[] " ~ array ~ "; public " ~ T.stringof ~ "[] " ~ property ~ " () { if (" ~ array ~ ".length == 0)" ~ array ~ " = " ~ seq ~ ".toArray (); return " ~ array ~ "; }"; 
    16 
     12    template ArrayProperty (T, char[] property, char[] array, char[] seq) 
     13    { 
     14        const 
     15            ArrayProperty = "private ArraySeq!(" ~ T.stringof ~ ") " ~ seq ~ "; private " ~ T.stringof ~ "[] " ~ array ~ "; public " ~ T.stringof ~ "[] " ~ property ~ " () { if (" ~ array ~ ".length == 0)" ~ array ~ " = " ~ seq ~ ".toArray (); return " ~ array ~ "; }"; 
     16    } 
     17 
     18    template DeclareConst (Vars...) 
     19    { 
     20        const DeclareConst = DeclareStatic!("const", Vars).decl; 
     21    } 
     22 
     23    template DeclareFinal (Vars...) 
     24    { 
     25        const DeclareFinal = DeclareStatic!("final", Vars).decl; 
     26    } 
     27 
     28    template XmlHandlerStaticCtor (char[] var) 
     29    { 
     30        const 
     31            XmlHandlerStaticCtor = "static this () { XmlHandler.handlers[" ~ var ~ "] = new typeof(this) (); } "; 
     32    } 
     33 
     34private: 
     35    template DeclareStatic (char[] attr, Vars...) 
     36    { 
     37        const tmp = Declare1Static!(attr, Vars[0], Vars[1]); 
     38 
     39        static if (Vars.length == 2) 
     40            const decl = tmp; 
     41        else 
     42            const decl = tmp ~ " " ~ DeclareStatic!(attr, Vars[2 .. $]).decl; 
     43    } 
     44 
     45    template Declare1Static (char[] attr, char[] var, char[] str) 
     46    { 
     47        const 
     48            Declare1Static = "private static " ~ attr ~ " " ~ var ~ " = `" ~ str ~ "`;"; 
     49    } 
  • trunk/fbd/util.d

    r21 r23  
    33 * License: $(LINK2 http://www.opensource.org/licenses/zlib-license.php,zlib/libpng) 
    44 * Authors: Carlos Santander 
    5  * Date: December 14, 2007 
     5 * Date: December 20, 2007 
    66 * Version: 0.1 
    77 * See_Also: $(LINK2 http://developers.facebook.com/,Facebook Developers website) 
     
    1010 
    1111import tango.text.convert.Integer : convert; 
    12 import tango.time.Time : Time; 
    13 import tango.time.TimeSpan : TimeSpan; 
     12import tango.time.Time : Time, TimeSpan; 
    1413import tango.util.collection.ArraySeq : ArraySeq; 
    1514 
  • trunk/fbd/xml.d

    r21 r23  
    33 * License: $(LINK2 http://www.opensource.org/licenses/zlib-license.php,zlib/libpng) 
    44 * Authors: Carlos Santander 
    5  * Date: December 11, 2007 
     5 * Date: December 22, 2007 
    66 * Version: 0.1 
    77 * See_Also: $(LINK2 http://developers.facebook.com/,Facebook Developers website) 
     
    8585    class XmlHandler_Error : XmlHandler 
    8686    { 
    87         private static const ERROR_RESPONSE = "error_response"; 
    88         private static const ERROR_CODE = "error_code"
    89         private static const ERROR_MSG = "error_msg"
     87        mixin (DeclareConst!("ERROR_RESPONSE", "error_response", "ERROR_CODE", 
     88           "error_code", "ERROR_MSG", "error_msg"))
     89        mixin (XmlHandlerStaticCtor!("ERROR_RESPONSE"))
    9090 
    9191        private char[] _code, _msg; 
    9292        private ArraySeq!(char[]) stack; 
    93  
    94         static this () 
    95         { 
    96             XmlHandler.handlers[ERROR_RESPONSE] = new XmlHandler_Error (); 
    97         } 
    9893 
    9994        this () 
     
    138133    class XmlHandler_AuthCreateToken : XmlHandler 
    139134    { 
    140         private static final RESPONSE = "auth_createToken_response"; 
     135        mixin (DeclareFinal!("RESPONSE", "auth_createToken_response")); 
     136        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     137 
    141138        private bool gettoken = false; 
    142139        private char[] _token; 
    143140 
    144         static this () 
    145         { 
    146             XmlHandler.handlers[RESPONSE] = new XmlHandler_AuthCreateToken (); 
    147         } 
    148  
    149141        char[] token () 
    150142        { 
     
    177169    class XmlHandler_AuthGetSession : XmlHandler 
    178170    { 
    179         private static final RESPONSE = "auth_getSession_response"
    180         private static const SESSION_KEY = "session_key"; 
    181         private static const UID = "uid"
    182         private static const EXPIRES = "expires"
    183         private static const SECRET = "secret"; 
     171        mixin (DeclareFinal!("RESPONSE", "auth_getSession_response"))
     172        mixin (DeclareConst!("SESSION_KEY", "session_key", "UID", "uid", 
     173           "EXPIRES", "expires", "SECRET", "secret"))
     174        mixin (XmlHandlerStaticCtor!("RESPONSE"))
     175 
    184176        private char[] _sesskey, _uid, _expires, _secret; 
    185177        private ArraySeq!(char[]) stack; 
    186  
    187         static this () 
    188         { 
    189             XmlHandler.handlers[RESPONSE] = new XmlHandler_AuthGetSession (); 
    190         } 
    191178 
    192179        this () 
     
    254241    class XmlHandler_UsersGetInfo : XmlHandler 
    255242    { 
    256         private static final RESPONSE = "users_getInfo_response"; 
    257         private static final USERF = "user"; 
    258         private const USERC = "user"; 
     243        mixin (DeclareFinal!("RESPONSE", "users_getInfo_response", "USERF", 
     244            "user")); 
     245        mixin (DeclareConst!("USERC", "user")); 
     246        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     247 
    259248        private ArraySeq!(char[]) stack; 
    260249        private char[] numberBuffer; 
     
    271260        mixin (ArrayProperty!(FacebookUser, "users", "_users", "_list")); 
    272261 
    273         static this () 
    274         { 
    275             XmlHandler.handlers[RESPONSE] = new XmlHandler_UsersGetInfo (); 
    276         } 
    277  
    278262        this () 
    279263        { 
     
    632616    class XmlHandler_FriendsGet : XmlHandler 
    633617    { 
    634         private static final RESPONSE = "friends_get_response"; 
    635         private static final UID = "uid"; 
     618        mixin (DeclareFinal!("RESPONSE", "friends_get_response", "UID", "uid")); 
     619        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     620 
    636621        private char[] _buffer; 
    637622        private bool getuid; 
    638623 
    639624        mixin (ArrayProperty!(char[], "friends", "_friends", "_list")); 
    640  
    641         static this () 
    642         { 
    643             XmlHandler.handlers[RESPONSE] = new XmlHandler_FriendsGet (); 
    644         } 
    645625 
    646626        this () 
     
    679659    class XmlHandler_UsersIsAppAdded : XmlHandler 
    680660    { 
    681         private static final RESPONSE = "users_isAppAdded_response"; 
     661        mixin (DeclareFinal!("RESPONSE", "users_isAppAdded_response")); 
     662        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     663 
    682664        private bool get = false; 
    683665        private bool _isAdded; 
    684666 
    685         static this () 
    686         { 
    687             XmlHandler.handlers[RESPONSE] = new XmlHandler_UsersIsAppAdded (); 
    688         } 
    689  
    690667        bool isAppAdded () 
    691668        { 
     
    717694    class XmlHandler_PublishStory : XmlHandler 
    718695    { 
    719         private static final RESPONSE = "feed_publishStoryToUser_response"; 
     696        mixin (DeclareFinal!("RESPONSE", "feed_publishStoryToUser_response")); 
     697        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     698 
    720699        private bool get = false; 
    721700        private bool _published; 
    722701 
    723         static this () 
    724         { 
    725             XmlHandler.handlers[RESPONSE] = new XmlHandler_PublishStory (); 
    726         } 
    727  
    728702        bool published () 
    729703        { 
     
    755729    class XmlHandler_FriendsGetAppUsers : XmlHandler 
    756730    { 
    757         private static final RESPONSE = "friends_getAppUsers_response"; 
    758         private static final UID = "uid"; 
     731        mixin (DeclareFinal!("RESPONSE", "friends_getAppUsers_response", "UID", 
     732            "uid")); 
     733        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     734 
    759735        private char[] _buffer; 
    760736        private bool getuid; 
    761737 
    762738        mixin (ArrayProperty!(char[], "friends", "_friends", "_list")); 
    763  
    764         static this () 
    765         { 
    766             XmlHandler.handlers[RESPONSE] = new XmlHandler_FriendsGetAppUsers (); 
    767         } 
    768739 
    769740        this () 
     
    802773    class XmlHandler_PublishAction : XmlHandler 
    803774    { 
    804         private static final RESPONSE = "feed_publishActionOfUser_response"; 
     775        mixin (DeclareFinal!("RESPONSE", "feed_publishActionOfUser_response")); 
     776        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     777 
    805778        private bool get = false; 
    806779        private bool _published; 
    807780 
    808         static this () 
    809         { 
    810             XmlHandler.handlers[RESPONSE] = new XmlHandler_PublishAction (); 
    811         } 
    812  
    813781        bool published () 
    814782        { 
     
    840808    class XmlHandler_NotificationsGet : XmlHandler 
    841809    { 
    842         private static final RESPONSE = "notifications_get_response"; 
    843         private const UNREAD = "unread"; 
    844         private const MOST_RECENT = "most_recent"; 
    845         private const UID = "uid"; 
    846         private const MESSAGES = "messages"; 
    847         private const POKES = "pokes"; 
    848         private const SHARES = "shares"; 
    849         private const EID = "eid"; 
    850         private const GID = "gid"; 
     810        mixin (DeclareFinal!("RESPONSE", "notifications_get_response")); 
     811        mixin (DeclareConst!("UNREAD", "unread", "MOST_RECENT", "most_recent", 
     812            "UID", "uid", "MESSAGES", "messages", "POKES", "pokes", "SHARES", 
     813            "shares", "EID", "eid", "GID", "gid")); 
     814        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     815 
    851816        private ArraySeq!(char[]) _stack; 
    852817        private int _unreadMessages, _unreadPokes, _unreadShares; 
     
    858823        mixin (ArrayProperty!(uint, "events", "eids", "_events")); 
    859824        mixin (ArrayProperty!(uint, "groups", "gids", "_groups")); 
    860  
    861         static this () 
    862         { 
    863             XmlHandler.handlers[RESPONSE] = new XmlHandler_NotificationsGet (); 
    864         } 
    865825 
    866826        this () 
     
    979939    class XmlHandler_PhotosGet : XmlHandler 
    980940    { 
    981         private static final RESPONSE = "photos_get_response"; 
    982         private const PID = "pid"; 
    983         private const AID = "aid"; 
    984         private const OWNER = "owner"; 
    985         private const SRC = "src"; 
    986         private const SRC_BIG = "src_big"; 
    987         private const SRC_SMALL = "src_small"; 
    988         private const LINK = "link"; 
    989         private const CAPTION = "caption"; 
    990         private const CREATED = "created"; 
     941        mixin (DeclareFinal!("RESPONSE", "photos_get_response")); 
     942        mixin (DeclareConst!("PID", "pid", "AID", "aid", "OWNER", "owner", 
     943            "SRC", "src", "SRC_BIG", "src_big", "SRC_SMALL", "src_small", 
     944            "LINK", "link", "CAPTION", "caption", "CREATED", "created")); 
     945        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     946 
    991947        private char[] buffer; 
    992948 
     
    1001957        mixin (ArrayProperty!(Time, "created", "a_created", "s_created")); 
    1002958 
    1003         static this () 
    1004         { 
    1005             XmlHandler.handlers[RESPONSE] = new XmlHandler_PhotosGet (); 
    1006         } 
    1007  
    1008959        this () 
    1009960        { 
     
    10821033    class XmlHandler_PhotosGetAlbums : XmlHandler 
    10831034    { 
    1084         private static final RESPONSE = "photos_getAlbums_response"; 
    1085         private const AID = "aid"; 
    1086         private const COVER_PID = "cover_pid"; 
    1087         private const OWNER = "owner"; 
    1088         private const NAME = "name"; 
    1089         private const CREATED = "created"; 
    1090         private const MODIFIED = "modified"; 
    1091         private const DESCRIPTION = "description"; 
    1092         private const LOCATION = "location"; 
    1093         private const LINK = "link"; 
    1094         private const SIZE = "size"; 
     1035        mixin (DeclareFinal!("RESPONSE", "photos_getAlbums_response")); 
     1036        mixin (DeclareConst!("AID", "aid", "COVER_PID", "cover_pid", "OWNER", 
     1037            "owner", "NAME", "name", "CREATED", "created", "MODIFIED", 
     1038            "modified", "DESCRIPTION", "description", "LOCATION", "location", 
     1039            "LINK", "link", "SIZE", "size")); 
     1040        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     1041 
    10951042        private char[] buffer; 
    10961043 
     
    11051052        mixin (ArrayProperty!(Time, "created", "crtd", "_created")); 
    11061053        mixin (ArrayProperty!(Time, "modified", "mdfd", "_modified")); 
    1107  
    1108         static this () 
    1109         { 
    1110             XmlHandler.handlers[RESPONSE] = new XmlHandler_PhotosGetAlbums (); 
    1111         } 
    11121054 
    11131055        this () 
     
    11921134    class XmlHandler_SetUserPreference : XmlHandler 
    11931135    { 
    1194         private static final RESPONSE = "data_setUserPreference_response"; 
    1195  
    1196         static this () 
    1197         { 
    1198             XmlHandler.handlers[RESPONSE] = new XmlHandler_SetUserPreference (); 
    1199         } 
     1136        mixin (DeclareFinal!("RESPONSE", "data_setUserPreference_response")); 
     1137        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
    12001138 
    12011139        override void startElement (char[] name) 
     
    12181156    class XmlHandler_GetUserPreference : XmlHandler 
    12191157    { 
    1220         private static final RESPONSE = "data_getUserPreference_response"; 
     1158        mixin (DeclareFinal!("RESPONSE", "data_getUserPreference_response")); 
     1159        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     1160 
    12211161        private bool get = false; 
    12221162        private char[] _value; 
    12231163 
    1224         static this () 
    1225         { 
    1226             XmlHandler.handlers[RESPONSE] = new XmlHandler_GetUserPreference (); 
    1227         } 
    1228  
    12291164        char[] value () 
    12301165        { 
     
    12561191    class XmlHandler_CreateObjectType : XmlHandler 
    12571192    { 
    1258         private static final RESPONSE = "data_createObjectType_response"; 
    1259  
    1260         static this () 
    1261         { 
    1262             XmlHandler.handlers[RESPONSE] = new XmlHandler_CreateObjectType (); 
    1263         } 
     1193        mixin (DeclareFinal!("RESPONSE", "data_createObjectType_response")); 
     1194        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
    12641195 
    12651196        override void startElement (char[] name) 
     
    12821213    class XmlHandler_GetObjectTypes : XmlHandler 
    12831214    { 
    1284         private static final RESPONSE = "data_getObjectTypes_response"; 
    1285         private const NAME = "name"; 
     1215        mixin (DeclareFinal!("RESPONSE", "data_getObjectTypes_response")); 
     1216        mixin (DeclareConst!("NAME", "name")); 
     1217        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     1218 
    12861219        private bool get; 
    12871220 
    12881221        mixin (ArrayProperty!(char[], "types", "_otypes", "_types")); 
    1289  
    1290         static this () 
    1291         { 
    1292             XmlHandler.handlers[RESPONSE] = new XmlHandler_GetObjectTypes (); 
    1293         } 
    12941222 
    12951223        this () 
     
    13241252    class XmlHandler_GetObjectType : XmlHandler 
    13251253    { 
    1326         private static final RESPONSE = "data_getObjectType_response"; 
    1327         private const OBJECT_PROPERTY_INFO = "object_property_info"; 
    1328         private const NAME = "name"; 
    1329         private const DATA_TYPE = "data_type"; 
    1330         private const INDEX_TYPE = "index_type"; 
     1254        mixin (DeclareFinal!("RESPONSE", "data_getObjectType_response")); 
     1255        mixin (DeclareConst!("OBJECT_PROPERTY_INFO", "object_property_info", 
     1256            "NAME", "name", "DATA_TYPE", "data_type", "INDEX_TYPE", 
     1257            "index_type")); 
     1258        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     1259 
    13311260        private ArraySeq!(char[]) stack; 
    13321261        private char[] buffer; 
    1333  
    1334         static this () 
    1335         { 
    1336             XmlHandler.handlers[RESPONSE] = new XmlHandler_GetObjectType (); 
    1337         } 
    13381262 
    13391263        mixin (ArrayProperty!(char[], "names", "_names", "lnames")); 
     
    13911315    class XmlHandler_CreateObject : XmlHandler 
    13921316    { 
    1393         private static final RESPONSE = "data_createObject_response"; 
     1317        mixin (DeclareFinal!("RESPONSE", "data_createObject_response")); 
     1318        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     1319 
    13941320        private long fbid; 
    13951321        private bool get; 
    13961322        private char[] buffer; 
    1397  
    1398         static this () 
    1399         { 
    1400             XmlHandler.handlers[RESPONSE] = new XmlHandler_CreateObject (); 
    1401         } 
    14021323 
    14031324        long objectId () 
     
    14331354    class XmlHandler_GetObjectProperty : XmlHandler 
    14341355    { 
    1435         private static final RESPONSE = "data_getObjectProperty_response"; 
     1356        mixin (DeclareFinal!("RESPONSE", "data_getObjectProperty_response")); 
     1357        mixin (XmlHandlerStaticCtor!("RESPONSE")); 
     1358 
    14361359        private bool get; 
    14371360        private char[] prop; 
    14381361 
    1439         static this () 
    1440         { 
    1441             XmlHandler.handlers[RESPONSE] = new XmlHandler_GetObjectProperty (); 
    1442         } 
    1443  
    14441362        char[] value () 
    14451363        {