Changeset 9668
- Timestamp:
- Oct 19, 2006, 2:55:43 PM (20 years ago)
- Location:
- trunk/glueforge
- Files:
-
- 4 added
- 8 edited
-
configure.ac (modified) (1 diff)
-
glueforge.in (modified) (6 diffs)
-
templates/psdb/Makefile.am (modified) (3 diffs)
-
templates/psdb/alloc.tt (modified) (2 diffs)
-
templates/psdb/createtable.tt (modified) (1 diff)
-
templates/psdb/insert.tt (modified) (1 diff)
-
templates/psdb/lookup_from_metadata (added)
-
templates/psdb/metadata (added)
-
templates/psdb/metadata_from_params (added)
-
templates/psdb/metadata_from_struct (added)
-
templates/psdb/metadatafromobject.tt (modified) (1 diff)
-
templates/psdb/objectfrommetadata.tt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/glueforge/configure.ac
r9420 r9668 1 1 AC_PREREQ(2.59) 2 2 3 AC_INIT([glueforge], [0. 29], [jhoblitt@cpan.org])3 AC_INIT([glueforge], [0.30], [jhoblitt@cpan.org]) 4 4 AC_CONFIG_SRCDIR([glueforge.in]) 5 5 -
trunk/glueforge/glueforge.in
r8660 r9668 3 3 # Copyright (C) 2005-2006 Joshua Hoblitt 4 4 # 5 # $Id: glueforge.in,v 1.5 0 2006-08-28 23:50:20jhoblitt Exp $5 # $Id: glueforge.in,v 1.51 2006-10-20 00:55:43 jhoblitt Exp $ 6 6 7 7 use strict; … … 94 94 my $type = shift; 95 95 96 my %primitives = map { $_ => 1 } qw( S8 S16 S32 S64 U8 U16 U32 U64 F32 F64 ); 97 my %mtypes = map { $_ => "PS_DATA_$_" } keys %primitives; 98 my %ctypes = map { $_ => "ps$_" } keys %primitives; 96 my %primitives = map { $_ => 1 } 97 qw( S8 S16 S32 S64 U8 U16 U32 U64 F32 F64 ); 98 my %times = map { $_ => 1 } qw( UTC UT1 TAI TT ); 99 my %mtypes = (map({ $_ => "PS_DATA_$_" } keys %primitives), 100 map({ $_ => "PS_DATA_TIME" } keys %times)); 101 my %ctypes = (map({ $_ => "ps$_" } keys %primitives), 102 map({ $_ => "psTime*"} keys %times)); 99 103 100 104 my %ttypes = ( … … 109 113 F32 => 32.32, 110 114 F64 => 64.64, 115 UTC => '"0001-01-01T00:00:00Z"', 116 UT1 => '"0001-01-01T00:00:00Z"', 117 TAI => '"0001-01-01T00:00:00Z"', 118 TT => '"0001-01-01T00:00:00Z"', 111 119 ); 112 120 113 if ( $primitives{$type}) {121 if ($primitives{$type}) { 114 122 return { 115 123 ctype => $ctypes{$type}, 116 124 mtype => $mtypes{$type}, 117 125 test => $ttypes{$type}, 118 }; 126 }; 127 } 128 elsif ($times{$type}) { 129 return { 130 ctype => $ctypes{$type}, 131 mtype => $mtypes{$type}, 132 test => $ttypes{$type}, 133 timetype => "PS_TIME_$type", 134 }; 119 135 } elsif ( $type =~ /STR|STRING/ ) { 120 136 return { 121 137 ctype => "char*", 122 mtype => 'PS_DATA_STR ',138 mtype => 'PS_DATA_STRING', 123 139 test => '"a string"', 124 140 }; … … 168 184 my @items; 169 185 186 # setup one table per nested metadata 187 my @tables; 188 foreach my $meta (@{$config}) { 189 push @tables, tabledata_from_meta($meta); 190 } 191 192 =for off 170 193 # setup items 171 194 for (my $i = 0; $i < @{$config}; $i++) { … … 176 199 177 200 push @items, { 201 %{$mdtypes}, 178 202 name => $elem->{name}, 179 203 type => $elem->{type}, 180 ctype => $mdtypes->{ctype},181 mtype => $mdtypes->{mtype},182 test => $mdtypes->{test},204 # ctype => $mdtypes->{ctype}, 205 # mtype => $mdtypes->{mtype}, 206 # test => $mdtypes->{test}, 183 207 comment => $elem->{comment}, 184 208 value => $elem->{value}, 185 209 }; 186 210 } 211 =cut 187 212 188 213 $table{columns} = \@items; … … 272 297 name => $column->{name}, 273 298 type => $column->{type}, 274 ctype => $mdtypes->{ctype},275 mtype => $mdtypes->{mtype},276 test => $mdtypes->{test},299 # ctype => $mdtypes->{ctype}, 300 # mtype => $mdtypes->{mtype}, 301 # test => $mdtypes->{test}, 277 302 comment => $column->{comment}, 278 303 value => $column->{value}, 304 %{$mdtypes}, 279 305 }; 280 306 } -
trunk/glueforge/templates/psdb/Makefile.am
r9419 r9668 1 1 template_files = \ 2 2 COPYING \ 3 metadata \ 4 metadata_from_params \ 5 metadata_from_struct \ 6 lookup_from_metadata \ 3 7 alloc.tt \ 4 8 alloc_at.tt \ … … 7 11 autogen_sh.tt \ 8 12 bootstrap_sh.tt \ 9 config.pl \10 13 cleanup.tt \ 11 14 cleanup_at.tt \ … … 13 16 cleanup_h.tt \ 14 17 code.tt \ 18 config.pl \ 15 19 configure_ac.tt \ 16 20 createtable.tt \ -
trunk/glueforge/templates/psdb/alloc.tt
r9245 r9668 23 23 [% IF item.type == "STR" -%] 24 24 _object->[% item.name %] = psStringCopy([% item.name %]); 25 [% ELSIF item.mtype == "PS_DATA_TIME" -%] 26 _object->[% item.name %] = psTimeCopy([% item.name %]); 25 27 [% ELSE -%] 26 28 _object->[% item.name %] = [% item.name %]; … … 36 38 [% IF item.type == "STR" -%] 37 39 psFree(object->[% item.name %]); 40 [% ELSIF item.mtype == "PS_DATA_TIME" -%] 41 psFree(object->[% item.name %]); 38 42 [% END -%] 39 43 [% END -%] -
trunk/glueforge/templates/psdb/createtable.tt
r9658 r9668 1 1 bool [% table.namespace %]CreateTable(psDB *dbh) 2 2 { 3 psMetadata *md = psMetadataAlloc(); 4 [% FOREACH item = table.columns -%] 5 [% IF item.comment; 6 SET item.comment = "\"$item.comment\""; 7 ELSE; 8 SET item.comment = 'NULL'; 9 END; 10 -%] 11 [% IF item.type == "STR" -%] 12 if (!psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", [% item.mtype %], [% item.comment %], "[% item.value %]")) { 13 [% ELSIF item.mtype == "PS_DATA_TIME" -%] 14 [% item.ctype %] [% item.name %] = psTimeFromISO("[% item.value %]", [% item.timetype %]); 15 if (!psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", [% item.mtype %], [% item.comment %], [% item.name %])) { 16 psFree([% item.name %]); 17 [% ELSE -%] 18 if (!psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", [% item.mtype %], [% item.comment %], [% item.value %])) { 19 [% END -%] 20 psError(PS_ERR_UNKNOWN, false, "failed to add item [% item.name %]"); 21 psFree(md); 22 return false; 23 } 24 [% END -%] 3 [% INCLUDE metadata -%] 25 4 26 5 bool status = psDBCreateTable(dbh, [% table.namespace FILTER upper %]_TABLE_NAME, md); -
trunk/glueforge/templates/psdb/insert.tt
r7670 r9668 11 11 ) 12 12 { 13 psMetadata *md; 14 bool status; 13 [% INCLUDE metadata_from_params -%] 15 14 16 md = psMetadataAlloc(); 17 [% FOREACH item = table.columns -%] 18 [% IF item.type == "S32" or item.type == "F32" or item.type == "F64" -%] 19 if (!psMetadataAdd[% item.type %](md, PS_LIST_TAIL, "[% item.name %]", 0, NULL, [% item.name %])) { 20 [% ELSIF item.type == "STR" -%] 21 if (!psMetadataAddStr(md, PS_LIST_TAIL, "[% item.name %]", 0, NULL, [% item.name %])) { 22 [% ELSIF item.type == "BOOL" -%] 23 if (!psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", PS_DATA_BOOL, NULL, [% item.name %])) { 24 [% END -%] 25 psError(PS_ERR_UNKNOWN, false, "failed to add item [% item.name %]"); 26 psFree(md); 27 return false; 28 } 29 [% END -%] 30 31 status = psDBInsertOneRow(dbh, [% table.namespace FILTER upper %]_TABLE_NAME, md); 15 bool status = psDBInsertOneRow(dbh, [% table.namespace FILTER upper %]_TABLE_NAME, md); 32 16 psFree(md); 33 17 -
trunk/glueforge/templates/psdb/metadatafromobject.tt
r7670 r9668 1 1 psMetadata *[% table.namespace %]MetadataFromObject(const [% table.object_name %] *object) 2 2 { 3 psMetadata *md; 4 5 md = psMetadataAlloc(); 6 [% FOREACH item = table.columns -%] 7 [% IF item.type == "S32" or item.type == "F32" or item.type == "F64" -%] 8 if (!psMetadataAdd[% item.type %](md, PS_LIST_TAIL, "[% item.name %]", 0, NULL, object->[% item.name %])) { 9 [% ELSIF item.type == "STR" -%] 10 if (!psMetadataAddStr(md, PS_LIST_TAIL, "[% item.name %]", 0, NULL, object->[% item.name %])) { 11 [% ELSIF item.type == "BOOL" -%] 12 if (!psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", PS_DATA_BOOL, NULL, object->[% item.name %])) { 13 [% END -%] 14 psError(PS_ERR_UNKNOWN, false, "failed to add item [% item.name %]"); 15 psFree(md); 16 return NULL; 17 } 18 [% END -%] 3 [% INCLUDE metadata_from_struct %] 19 4 20 5 return md; -
trunk/glueforge/templates/psdb/objectfrommetadata.tt
r5907 r9668 3 3 [% table.object_name %] *[% table.namespace %]ObjectFromMetadata(psMetadata *md) 4 4 { 5 bool status;6 [% FOREACH item = table.columns -%]7 [% IF item.type == "STR" -%]8 [% indented("char", "*$item.name") %];9 [% ELSE-%]10 [% indented("$item.ctype", "$item.name") %];11 [% END -%]12 [% END -%]13 5 14 [% FOREACH item = table.columns -%] 15 [% IF item.type == "S32" or item.type == "F32" or item.type == "F64" -%] 16 [% item.name %] = psMetadataLookup[% item.type %](&status, md, "[% item.name %]"); 17 [% ELSIF item.type == "STR" -%] 18 [% item.name %] = psMetadataLookupPtr(&status, md, "[% item.name %]"); 19 [% ELSIF item.type == "BOOL" -%] 20 [% item.name %] = psMetadataLookupBool(&status, md, "[% item.name %]"); 21 [% END -%] 22 if (!status) { 23 psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item [% item.name %]"); 24 return false; 25 } 26 [% END -%] 6 [% INCLUDE lookup_from_metadata -%] 27 7 28 8 return [% table.object_name %]Alloc(
Note:
See TracChangeset
for help on using the changeset viewer.
