From: <baz...@us...> - 2008-03-02 16:42:33
|
Revision: 8217 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=8217&view=rev Author: bazaarmagetron Date: 2008-03-02 08:42:36 -0800 (Sun, 02 Mar 2008) Log Message: ----------- Manuel Moos: GCPointer now also uses SmartPointerInterface. Modified Paths: -------------- clio/trunk/clio/clio/gcpointer.hpp clio/trunk/clio/clio/ifunctioninfo.cpp clio/trunk/clio/clio/smartpointer.hpp Property Changed: ---------------- clio/trunk/clio/ Property changes on: clio/trunk/clio ___________________________________________________________________ Name: bzr:revision-info - timestamp: 2008-03-02 17:20:28.611000061 +0100 committer: Manuel Moos <z-...@us...> properties: branch-nick: clio + timestamp: 2008-03-02 17:33:17.075000048 +0100 committer: Manuel Moos <z-...@us...> properties: branch-nick: clio Name: bzr:file-ids - clio/smartpointer.hpp smartpointer.hpp-20080302160338-uvr0quhoi9cxfks6-1 clio/rcpointer.hpp referencecounting.hp-20080302154101-7lofpbrairui4r6r-2 clio/rcpointer.cpp referencecounting.cp-20080302154101-7lofpbrairui4r6r-1 clio/rcobject.hpp rcobject.hpp-20080302162017-hp3f8sr2bd5hdbl7-2 clio/rcobject.cpp rcobject.cpp-20080302162017-hp3f8sr2bd5hdbl7-1 + Name: bzr:revision-id:v3-list-QlpoOTFBWSZTWZvbKhsAAAdRgAAQABK6798QIABURMgAAaeoNT1TxT1DQbKaeobXKiyAmlWT7Y5MkdJOtXDtB7w7DOGFBHiOBxaUIu7HQyyQSvxdyRThQkJvbKhs - 4 z-...@us...-20080222202821-mkuiwckx41jof2gj 5 z-...@us...-20080222202957-htiysaaxkiroqd7e 6 z-...@us...-20080222211806-jc50b77qlgn2dp8j 7 z-...@us...-20080222215601-p8y78c77ncvq5eb1 8 z-...@us...-20080222223809-mmh9wh6yzrdm7oa1 9 z-...@us...-20080222232123-uhnuqd9db0p27rkf 10 z-...@us...-20080222232154-k64q4ee9zuq5r2jp 11 z-...@us...-20080222234236-ny0hc8lwybz73rv6 12 z-...@us...-20080223000039-566psft2c96236kw 13 z-...@us...-20080223000530-4mtket15l6oeo1ju 14 z-...@us...-20080223001030-5t86d3u3bidpoq6r 15 z-...@us...-20080223002857-qvx8z72tmsoguku0 16 z-...@us...-20080223004917-abqn3vdfqb1euyzc 17 z-...@us...-20080223010025-h0nul9yntjvutdbq 18 z-...@us...-20080223013357-1nzhrjwjr4g0h7g9 19 z-...@us...-20080223015240-btmt95d1vvlip4gl 20 z-...@us...-20080223124731-dlwuagon76gq2o3g 21 z-...@us...-20080223133015-0hjqyrki59ydwdcv 22 z-...@us...-20080223135113-icwd4g99yev9n0u2 23 z-...@us...-20080223152916-8rm942q1rmjlueca 24 z-...@us...-20080223174524-3lb2wm6tt5nytd4b 25 z-...@us...-20080223174610-gwmr3fn8456rwvmg 26 z-...@us...-20080223183115-ub0hshkf3zfs69ko 27 z-...@us...-20080223185539-cvhsltp2u12d5lgc 28 z-...@us...-20080223211352-km18u9bp9qhufyta 29 z-...@us...-20080223225132-94n2bwt307fujbg4 30 z-...@us...-20080223234541-mqp3d64uyn3no98y 31 z-...@us...-20080223235231-5lshcanhqlkwv36n 32 z-...@us...-20080224001425-n6xziwrp0hh3nz2f 33 z-...@us...-20080224161454-lyyn0grllfn5qx8w 34 z-...@us...-20080224180639-fr6dqfch7kboocs0 35 z-...@us...-20080224181843-8iq9zyjoz4dprm8b 36 z-...@us...-20080224224147-cmxp11hux8yn3jbp 37 z-...@us...-20080224224848-0h65c9bpg637lgar 38 z-...@us...-20080224225219-0arhdm8hw42hptrf 39 z-...@us...-20080225000421-fh9p1qmu32awa41y 40 z-...@us...-20080225000607-bsvlilqbv5ssltr3 41 z-...@us...-20080225003311-fnfdbdvp3p2bw8b4 42 z-...@us...-20080225013618-jrkbe6q8gpdzbj3n 43 z-...@us...-20080225015144-8j759e33zdztmena 44 z-...@us...-20080225022114-1360a7t61rtei61d 45 z-...@us...-20080225023750-vf22upkbeiyoclbc 46 z-...@us...-20080225024308-j2a0nomtfuzfbjf8 47 z-...@us...-20080225100512-ck04wcqo0w3jibyq 48 z-...@us...-20080225103727-f42008yfu3y6q5r5 49 z-...@us...-20080225113757-opine59p0ak9r6h0 50 z-...@us...-20080225115932-akfi8jo7apw0phkk 51 z-...@us...-20080225120844-31fhi28emjcs4ys6 52 z-...@us...-20080225122224-wrmmr1nt5w9106rg 53 z-...@us...-20080225123606-ts2l2h3aivk9pplp 54 z-...@us...-20080225145431-x956npu0w5htu7sa 55 z-...@us...-20080225152517-hejvwwjukez9aemh 56 z-...@us...-20080225154230-rpq3t8xnbu99mx4t 57 z-...@us...-20080225162001-ukwye8clhep133jz 58 z-...@us...-20080225162148-mvmfjwz461o7xvaa 59 z-...@us...-20080225164010-oej2am8f8ysxnu3n 60 z-...@us...-20080225175844-w74is4pxw6zefuou 61 z-...@us...-20080225185644-df7z71i5bh7056tw 62 z-...@us...-20080225231713-lk9zjwf6tlmck94z 63 z-...@us...-20080226004842-kj1448gvijflyn6b 64 z-...@us...-20080226012214-xipk2o8idaj0rzoz 65 z-...@us...-20080226013159-8zq7m6hatobv71x4 66 z-...@us...-20080226110837-nfl4khd9y39rdmir 67 z-...@us...-20080226111231-7fvp5r7eu9flwx7s 68 z-...@us...-20080226121838-20m97dmv5sj8kifs 69 z-...@us...-20080226122134-71pekd0jywe5n39l 70 z-...@us...-20080226122505-1u5cfryv0elid3f2 71 z-...@us...-20080226123432-rzi9qkm2whs3sad6 72 z-...@us...-20080226133113-lyap55resu8kx0gm 73 z-...@us...-20080226133403-riqoo03f2f2a4gfz 74 z-...@us...-20080226134345-0tnwohpjgizklima 75 z-...@us...-20080226135301-1han96uhxd6h20o1 76 z-...@us...-20080226152207-k1x8v7lhaohj7a2t 77 z-...@us...-20080226164517-0fe0sjgs2w3s068q 78 z-...@us...-20080226180445-7mirqm5kadxsw7xe 79 z-...@us...-20080226180620-r5zevfu34hhift7u 80 z-...@us...-20080226182045-3z6m4ro8plxl54ez 81 z-...@us...-20080226182221-kwy2lawqkrnxe0d1 82 z-...@us...-20080226183252-zzixyvv6qpvfa890 83 z-...@us...-20080226215727-f2gnksz8mhrz3724 84 z-...@us...-20080226225036-eqqn8w2xg9e5rwb0 85 z-...@us...-20080227010033-yv56bad7bzsigjsa 86 z-...@us...-20080227010301-sdd19fx9u1exk8vm 87 z-...@us...-20080227073015-l4d401obwe0pzikc 88 z-...@us...-20080227080340-rficjl3b14lpa7e2 89 z-...@us...-20080227085925-zbxz1mxphbo1wjbz 90 z-...@us...-20080227090604-hk5xhmg1o6qgn7dd 91 z-...@us...-20080227091521-tv7nw3wvujyoa3m8 92 z-...@us...-20080227104314-2qtpk2aissulpfh2 93 z-...@us...-20080227104725-uypq0ke8hneli474 94 z-...@us...-20080227105641-cz7upcrqj5wq20iq 95 z-...@us...-20080227132905-2asg8nz2d4w5xh7p 96 z-...@us...-20080227133735-ox85ierzxh7ocaen 97 z-...@us...-20080227134040-6cg8dc85c3obbrit 98 z-...@us...-20080227144423-xy2pa72pkhqxr2oh 99 z-...@us...-20080227145130-vnavq6f9nsagzjoy 100 z-...@us...-20080227150258-mvtbnc26tyh4o8jf 101 z-...@us...-20080227151213-4a2xdl42ltm7mm03 102 z-...@us...-20080227161100-6bju6aqz2ur87uqu 103 z-...@us...-20080227162454-xph6ydcyzpqs57xg 104 z-...@us...-20080227184352-8zaz7csbk6jz4erv 105 z-...@us...-20080227190955-5dd543q0xownga39 106 z-...@us...-20080227204251-p232ej27cbgx5xa7 107 z-...@us...-20080227214733-agq3mzdrf6y4on8g 108 z-...@us...-20080227215416-kva477sibklm83pe 109 z-...@us...-20080227235335-m624yk0e08mw7wx3 110 z-...@us...-20080228005043-z78tn7t05alfio3k 111 z-...@us...-20080228093018-e3cnw0d155gcc5qr 112 z-...@us...-20080228095512-ntv08eya23u6wyyo 113 z-...@us...-20080228100306-minrtbi1u8gwqby9 114 z-...@us...-20080228110824-1lafx6y4tli2xnyc 115 z-...@us...-20080228115234-h92vhxinv9eod5ej 116 z-...@us...-20080228120634-hza5d4m8u3b1nb7g 117 z-...@us...-20080228122809-lqq2ngu1mnm56juc 118 z-...@us...-20080228145313-ofigzpepw4tyxsiu 119 z-...@us...-20080228160320-etbo79xsij7smkcq 120 z-...@us...-20080228182831-a844ukmujm3j9qnk 121 z-...@us...-20080229002456-hji8z1iean0on5eq 122 z-...@us...-20080229004316-mqyxd4md1s3sxrm1 123 z-...@us...-20080229010117-2lkkd91emeuzdsxj 124 z-...@us...-20080229010159-gexf0o6f60d3omj9 125 z-...@us...-20080229010218-0o3p8yrpu17finum 126 z-...@us...-20080229092901-wu5balopdmz3u51d 127 z-...@us...-20080229095653-ax42mh9yrpjl2m8d 128 z-...@us...-20080229100052-49u8k4ragr4uvqnp 129 z-...@us...-20080229100427-drr604b1spi7pyk3 130 z-...@us...-20080229100510-pk4ct7i7oxv3iz1v 131 z-...@us...-20080229100629-1o9ihd6dq1rlfpiw 132 z-...@us...-20080229102804-xl54jiu0okbo84xa 133 z-...@us...-20080229124601-mucvkg880j1sjunk 134 z-...@us...-20080229124610-pn11ojeapc05ng3v 135 z-...@us...-20080229141444-vtcwayhxgrr2jj81 136 z-...@us...-20080301165305-izpp9vrehxiq4ah5 137 z-...@us...-20080301165732-2firt23a7a29w8u5 138 z-...@us...-20080301172539-xy2dvqkacoiop1dj 139 z-...@us...-20080301190333-uxq3wntkfdgk3d8o 140 z-...@us...-20080301202548-afa9kbqfd3ow5n31 141 z-...@us...-20080301202830-egxcka4daoyp3kyz 142 z-...@us...-20080301210838-h04zix77k96zxnt0 143 z-...@us...-20080301222320-58moauuddlh9lh7w 144 z-...@us...-20080301234658-ksr2nj9cs5oc0f8t 145 z-...@us...-20080301235741-akb3t0yzp21gbvhn 146 z-...@us...-20080302002051-dbdlds2ok3yi1plb 147 z-...@us...-20080302144935-veoxnebqdt0jfqra 148 z-...@us...-20080302151423-95e2mqnkuba3jsol 149 z-...@us...-20080302153627-19izofatji00soyt 150 z-...@us...-20080302162028-ij5omo2i8b0r1ytd + 4 z-...@us...-20080222202821-mkuiwckx41jof2gj 5 z-...@us...-20080222202957-htiysaaxkiroqd7e 6 z-...@us...-20080222211806-jc50b77qlgn2dp8j 7 z-...@us...-20080222215601-p8y78c77ncvq5eb1 8 z-...@us...-20080222223809-mmh9wh6yzrdm7oa1 9 z-...@us...-20080222232123-uhnuqd9db0p27rkf 10 z-...@us...-20080222232154-k64q4ee9zuq5r2jp 11 z-...@us...-20080222234236-ny0hc8lwybz73rv6 12 z-...@us...-20080223000039-566psft2c96236kw 13 z-...@us...-20080223000530-4mtket15l6oeo1ju 14 z-...@us...-20080223001030-5t86d3u3bidpoq6r 15 z-...@us...-20080223002857-qvx8z72tmsoguku0 16 z-...@us...-20080223004917-abqn3vdfqb1euyzc 17 z-...@us...-20080223010025-h0nul9yntjvutdbq 18 z-...@us...-20080223013357-1nzhrjwjr4g0h7g9 19 z-...@us...-20080223015240-btmt95d1vvlip4gl 20 z-...@us...-20080223124731-dlwuagon76gq2o3g 21 z-...@us...-20080223133015-0hjqyrki59ydwdcv 22 z-...@us...-20080223135113-icwd4g99yev9n0u2 23 z-...@us...-20080223152916-8rm942q1rmjlueca 24 z-...@us...-20080223174524-3lb2wm6tt5nytd4b 25 z-...@us...-20080223174610-gwmr3fn8456rwvmg 26 z-...@us...-20080223183115-ub0hshkf3zfs69ko 27 z-...@us...-20080223185539-cvhsltp2u12d5lgc 28 z-...@us...-20080223211352-km18u9bp9qhufyta 29 z-...@us...-20080223225132-94n2bwt307fujbg4 30 z-...@us...-20080223234541-mqp3d64uyn3no98y 31 z-...@us...-20080223235231-5lshcanhqlkwv36n 32 z-...@us...-20080224001425-n6xziwrp0hh3nz2f 33 z-...@us...-20080224161454-lyyn0grllfn5qx8w 34 z-...@us...-20080224180639-fr6dqfch7kboocs0 35 z-...@us...-20080224181843-8iq9zyjoz4dprm8b 36 z-...@us...-20080224224147-cmxp11hux8yn3jbp 37 z-...@us...-20080224224848-0h65c9bpg637lgar 38 z-...@us...-20080224225219-0arhdm8hw42hptrf 39 z-...@us...-20080225000421-fh9p1qmu32awa41y 40 z-...@us...-20080225000607-bsvlilqbv5ssltr3 41 z-...@us...-20080225003311-fnfdbdvp3p2bw8b4 42 z-...@us...-20080225013618-jrkbe6q8gpdzbj3n 43 z-...@us...-20080225015144-8j759e33zdztmena 44 z-...@us...-20080225022114-1360a7t61rtei61d 45 z-...@us...-20080225023750-vf22upkbeiyoclbc 46 z-...@us...-20080225024308-j2a0nomtfuzfbjf8 47 z-...@us...-20080225100512-ck04wcqo0w3jibyq 48 z-...@us...-20080225103727-f42008yfu3y6q5r5 49 z-...@us...-20080225113757-opine59p0ak9r6h0 50 z-...@us...-20080225115932-akfi8jo7apw0phkk 51 z-...@us...-20080225120844-31fhi28emjcs4ys6 52 z-...@us...-20080225122224-wrmmr1nt5w9106rg 53 z-...@us...-20080225123606-ts2l2h3aivk9pplp 54 z-...@us...-20080225145431-x956npu0w5htu7sa 55 z-...@us...-20080225152517-hejvwwjukez9aemh 56 z-...@us...-20080225154230-rpq3t8xnbu99mx4t 57 z-...@us...-20080225162001-ukwye8clhep133jz 58 z-...@us...-20080225162148-mvmfjwz461o7xvaa 59 z-...@us...-20080225164010-oej2am8f8ysxnu3n 60 z-...@us...-20080225175844-w74is4pxw6zefuou 61 z-...@us...-20080225185644-df7z71i5bh7056tw 62 z-...@us...-20080225231713-lk9zjwf6tlmck94z 63 z-...@us...-20080226004842-kj1448gvijflyn6b 64 z-...@us...-20080226012214-xipk2o8idaj0rzoz 65 z-...@us...-20080226013159-8zq7m6hatobv71x4 66 z-...@us...-20080226110837-nfl4khd9y39rdmir 67 z-...@us...-20080226111231-7fvp5r7eu9flwx7s 68 z-...@us...-20080226121838-20m97dmv5sj8kifs 69 z-...@us...-20080226122134-71pekd0jywe5n39l 70 z-...@us...-20080226122505-1u5cfryv0elid3f2 71 z-...@us...-20080226123432-rzi9qkm2whs3sad6 72 z-...@us...-20080226133113-lyap55resu8kx0gm 73 z-...@us...-20080226133403-riqoo03f2f2a4gfz 74 z-...@us...-20080226134345-0tnwohpjgizklima 75 z-...@us...-20080226135301-1han96uhxd6h20o1 76 z-...@us...-20080226152207-k1x8v7lhaohj7a2t 77 z-...@us...-20080226164517-0fe0sjgs2w3s068q 78 z-...@us...-20080226180445-7mirqm5kadxsw7xe 79 z-...@us...-20080226180620-r5zevfu34hhift7u 80 z-...@us...-20080226182045-3z6m4ro8plxl54ez 81 z-...@us...-20080226182221-kwy2lawqkrnxe0d1 82 z-...@us...-20080226183252-zzixyvv6qpvfa890 83 z-...@us...-20080226215727-f2gnksz8mhrz3724 84 z-...@us...-20080226225036-eqqn8w2xg9e5rwb0 85 z-...@us...-20080227010033-yv56bad7bzsigjsa 86 z-...@us...-20080227010301-sdd19fx9u1exk8vm 87 z-...@us...-20080227073015-l4d401obwe0pzikc 88 z-...@us...-20080227080340-rficjl3b14lpa7e2 89 z-...@us...-20080227085925-zbxz1mxphbo1wjbz 90 z-...@us...-20080227090604-hk5xhmg1o6qgn7dd 91 z-...@us...-20080227091521-tv7nw3wvujyoa3m8 92 z-...@us...-20080227104314-2qtpk2aissulpfh2 93 z-...@us...-20080227104725-uypq0ke8hneli474 94 z-...@us...-20080227105641-cz7upcrqj5wq20iq 95 z-...@us...-20080227132905-2asg8nz2d4w5xh7p 96 z-...@us...-20080227133735-ox85ierzxh7ocaen 97 z-...@us...-20080227134040-6cg8dc85c3obbrit 98 z-...@us...-20080227144423-xy2pa72pkhqxr2oh 99 z-...@us...-20080227145130-vnavq6f9nsagzjoy 100 z-...@us...-20080227150258-mvtbnc26tyh4o8jf 101 z-...@us...-20080227151213-4a2xdl42ltm7mm03 102 z-...@us...-20080227161100-6bju6aqz2ur87uqu 103 z-...@us...-20080227162454-xph6ydcyzpqs57xg 104 z-...@us...-20080227184352-8zaz7csbk6jz4erv 105 z-...@us...-20080227190955-5dd543q0xownga39 106 z-...@us...-20080227204251-p232ej27cbgx5xa7 107 z-...@us...-20080227214733-agq3mzdrf6y4on8g 108 z-...@us...-20080227215416-kva477sibklm83pe 109 z-...@us...-20080227235335-m624yk0e08mw7wx3 110 z-...@us...-20080228005043-z78tn7t05alfio3k 111 z-...@us...-20080228093018-e3cnw0d155gcc5qr 112 z-...@us...-20080228095512-ntv08eya23u6wyyo 113 z-...@us...-20080228100306-minrtbi1u8gwqby9 114 z-...@us...-20080228110824-1lafx6y4tli2xnyc 115 z-...@us...-20080228115234-h92vhxinv9eod5ej 116 z-...@us...-20080228120634-hza5d4m8u3b1nb7g 117 z-...@us...-20080228122809-lqq2ngu1mnm56juc 118 z-...@us...-20080228145313-ofigzpepw4tyxsiu 119 z-...@us...-20080228160320-etbo79xsij7smkcq 120 z-...@us...-20080228182831-a844ukmujm3j9qnk 121 z-...@us...-20080229002456-hji8z1iean0on5eq 122 z-...@us...-20080229004316-mqyxd4md1s3sxrm1 123 z-...@us...-20080229010117-2lkkd91emeuzdsxj 124 z-...@us...-20080229010159-gexf0o6f60d3omj9 125 z-...@us...-20080229010218-0o3p8yrpu17finum 126 z-...@us...-20080229092901-wu5balopdmz3u51d 127 z-...@us...-20080229095653-ax42mh9yrpjl2m8d 128 z-...@us...-20080229100052-49u8k4ragr4uvqnp 129 z-...@us...-20080229100427-drr604b1spi7pyk3 130 z-...@us...-20080229100510-pk4ct7i7oxv3iz1v 131 z-...@us...-20080229100629-1o9ihd6dq1rlfpiw 132 z-...@us...-20080229102804-xl54jiu0okbo84xa 133 z-...@us...-20080229124601-mucvkg880j1sjunk 134 z-...@us...-20080229124610-pn11ojeapc05ng3v 135 z-...@us...-20080229141444-vtcwayhxgrr2jj81 136 z-...@us...-20080301165305-izpp9vrehxiq4ah5 137 z-...@us...-20080301165732-2firt23a7a29w8u5 138 z-...@us...-20080301172539-xy2dvqkacoiop1dj 139 z-...@us...-20080301190333-uxq3wntkfdgk3d8o 140 z-...@us...-20080301202548-afa9kbqfd3ow5n31 141 z-...@us...-20080301202830-egxcka4daoyp3kyz 142 z-...@us...-20080301210838-h04zix77k96zxnt0 143 z-...@us...-20080301222320-58moauuddlh9lh7w 144 z-...@us...-20080301234658-ksr2nj9cs5oc0f8t 145 z-...@us...-20080301235741-akb3t0yzp21gbvhn 146 z-...@us...-20080302002051-dbdlds2ok3yi1plb 147 z-...@us...-20080302144935-veoxnebqdt0jfqra 148 z-...@us...-20080302151423-95e2mqnkuba3jsol 149 z-...@us...-20080302153627-19izofatji00soyt 150 z-...@us...-20080302162028-ij5omo2i8b0r1ytd 151 z-...@us...-20080302163317-pd7nd8zn36cp2awy Modified: clio/trunk/clio/clio/gcpointer.hpp =================================================================== --- clio/trunk/clio/clio/gcpointer.hpp 2008-03-02 16:25:50 UTC (rev 8216) +++ clio/trunk/clio/clio/gcpointer.hpp 2008-03-02 16:42:36 UTC (rev 8217) @@ -3,6 +3,7 @@ #include "gcmarker.hpp" #include "classinfo.hpp" +#include "smartpointer.hpp" #include <IoObject.h> @@ -80,27 +81,28 @@ // the smart pointer handling GC marking automagically. Note that unlike reference counting smart // pointers, this one will be invalid in the destructor of the object it belongs to, because // GCing can happen in any order. -template< class T > class GCPointer: public GCAutoMarker +template< class T > class GCPointerBase: public GCAutoMarker { public: typedef GCPointerHelper<T> Helper; + typedef T TYPE; // standard smart pointer stuff. The nice thing about GC is that nothing special // has to be done on assignment. - GCPointer(): target_( Helper::GetDefault( GetOwner()->GetState() ) ) {} - GCPointer( T * other ): target_( other ) { OnSet(); } - GCPointer( GCPointer const & other ): GCAutoMarker(), target_( other.target_ ) { OnSet(); } - GCPointer & operator = ( T * other ){ target_ = other; OnSet(); return *this; } - GCPointer & operator = ( GCPointer const & other ){ target_ = other.target_; OnSet(); return *this; } - operator T *() const { return target_; } - T & operator *() const { return *target_; } - T * operator ->() const { return target_; } + GCPointerBase() + : target_( Helper::GetDefault( GetOwner()->GetState() ) ) + {} - bool operator==( T const * x ) const { return target_ == x; } - bool operator!=( T const * x ) const { return target_ != x; } - bool operator==( GCPointer<T> const & x) const { return target_ == x.target_; } - bool operator!=( GCPointer<T> const & x) const { return target_ != x.target_; } + void Set( T * target ) + { + target_ = target; + OnSet(); + } + T * Get() const + { + return target_; + } protected: // called when a new target is set void OnSet() @@ -126,7 +128,26 @@ T * target_; }; -// don't use IoObject * in your code, use these: +// smart pointer wrapper for it +template< class T > +class GCPointer: public SmartPointerInterface< GCPointerBase< T > > +{ +public: + // just delegate constructors + GCPointer() + {} + + GCPointer( const GCPointer & other ) + : SmartPointerInterface< GCPointerBase< T > >( other ) + {} + + template< class OTHER > + GCPointer( OTHER const & other ) + : SmartPointerInterface< GCPointerBase< T > >( other ) + {} +}; + +// don't use IoObject * in your code, use these smart wrappers: typedef GCPointer< IoObject > IoObjectPointer; } Modified: clio/trunk/clio/clio/ifunctioninfo.cpp =================================================================== --- clio/trunk/clio/clio/ifunctioninfo.cpp 2008-03-02 16:25:50 UTC (rev 8216) +++ clio/trunk/clio/clio/ifunctioninfo.cpp 2008-03-02 16:42:36 UTC (rev 8217) @@ -240,7 +240,7 @@ PoolStacker::Retain( object ); } - IoObjectPointer ret = NULL; + IoObjectPointer ret; IFunctionInfo const * executer = this; if ( Overloads::Next() ) Modified: clio/trunk/clio/clio/smartpointer.hpp =================================================================== --- clio/trunk/clio/clio/smartpointer.hpp 2008-03-02 16:25:50 UTC (rev 8216) +++ clio/trunk/clio/clio/smartpointer.hpp 2008-03-02 16:42:36 UTC (rev 8217) @@ -1,6 +1,8 @@ #ifndef CLIO_SMARTPOINTER_H #define CLIO_SMARTPOINTER_H +#include <assert.h> + namespace clio { @@ -42,6 +44,12 @@ Set( other.Get() ); } + // conversion constructor from ints ( so initializing from 0 or NULL works ) + explicit SmartPointerInterface( int other ) + { + assert( !other ); + } + // conversion constructor for plain pointers template< class T > explicit SmartPointerInterface( T * other ) @@ -93,8 +101,7 @@ } // implicit conversion operators - template< class T > - operator T * () const + operator TYPE * () const { return this->Get(); } @@ -123,6 +130,16 @@ { return this->Get() != x.Get(); } + + bool operator!() const + { + return !this->Get(); + } + + operator bool() const + { + return this->Get(); + } }; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |