IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 9668


Ignore:
Timestamp:
Oct 19, 2006, 2:55:43 PM (20 years ago)
Author:
jhoblitt
Message:

VERSION to 0.30
add psTime support to the psdb templates

Location:
trunk/glueforge
Files:
4 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/glueforge/configure.ac

    r9420 r9668  
    11AC_PREREQ(2.59)
    22
    3 AC_INIT([glueforge], [0.29], [jhoblitt@cpan.org])
     3AC_INIT([glueforge], [0.30], [jhoblitt@cpan.org])
    44AC_CONFIG_SRCDIR([glueforge.in])
    55
  • trunk/glueforge/glueforge.in

    r8660 r9668  
    33# Copyright (C) 2005-2006  Joshua Hoblitt
    44#
    5 # $Id: glueforge.in,v 1.50 2006-08-28 23:50:20 jhoblitt Exp $
     5# $Id: glueforge.in,v 1.51 2006-10-20 00:55:43 jhoblitt Exp $
    66
    77use strict;
     
    9494    my $type = shift;
    9595
    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));
    99103
    100104    my %ttypes = (
     
    109113        F32     => 32.32,
    110114        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"',
    111119    );
    112120
    113     if ( $primitives{$type} ) {
     121    if ($primitives{$type}) {
    114122        return {
    115123            ctype   => $ctypes{$type},
    116124            mtype   => $mtypes{$type},
    117125            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        };
    119135    } elsif ( $type =~ /STR|STRING/ ) {
    120136        return {
    121137            ctype   => "char*",
    122             mtype   => 'PS_DATA_STR',
     138            mtype   => 'PS_DATA_STRING',
    123139            test    => '"a string"',
    124140        };
     
    168184    my @items;
    169185
     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
    170193    # setup items
    171194    for (my $i = 0; $i < @{$config}; $i++) {
     
    176199
    177200        push @items, {
     201            %{$mdtypes},
    178202            name    => $elem->{name},
    179203            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},
    183207            comment => $elem->{comment},
    184208            value   => $elem->{value},
    185209        };
    186210    }
     211=cut
    187212
    188213    $table{columns} = \@items;
     
    272297            name    => $column->{name},
    273298            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},
    277302            comment => $column->{comment},
    278303            value   => $column->{value},
     304            %{$mdtypes},
    279305        };
    280306    }
  • trunk/glueforge/templates/psdb/Makefile.am

    r9419 r9668  
    11template_files = \
    22        COPYING \
     3        metadata \
     4        metadata_from_params \
     5        metadata_from_struct \
     6        lookup_from_metadata \
    37    alloc.tt \
    48    alloc_at.tt \
     
    711    autogen_sh.tt \
    812    bootstrap_sh.tt \
    9     config.pl \
    1013    cleanup.tt \
    1114    cleanup_at.tt \
     
    1316    cleanup_h.tt \
    1417    code.tt \
     18    config.pl \
    1519    configure_ac.tt \
    1620    createtable.tt \
  • trunk/glueforge/templates/psdb/alloc.tt

    r9245 r9668  
    2323[% IF item.type == "STR" -%]
    2424    _object->[% item.name %] = psStringCopy([% item.name %]);
     25[% ELSIF item.mtype == "PS_DATA_TIME" -%]
     26    _object->[% item.name %] = psTimeCopy([% item.name %]);
    2527[% ELSE -%]
    2628    _object->[% item.name %] = [% item.name %];
     
    3638[% IF item.type == "STR" -%]
    3739    psFree(object->[% item.name %]);
     40[% ELSIF item.mtype == "PS_DATA_TIME" -%]
     41    psFree(object->[% item.name %]);
    3842[% END -%]
    3943[% END -%]
  • trunk/glueforge/templates/psdb/createtable.tt

    r9658 r9668  
    11bool [% table.namespace %]CreateTable(psDB *dbh)
    22{
    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 -%]
    254
    265    bool status = psDBCreateTable(dbh, [% table.namespace FILTER upper %]_TABLE_NAME, md);
  • trunk/glueforge/templates/psdb/insert.tt

    r7670 r9668  
    1111)
    1212{
    13     psMetadata      *md;
    14     bool            status;
     13[% INCLUDE metadata_from_params -%]
    1514
    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);
    3216    psFree(md);
    3317
  • trunk/glueforge/templates/psdb/metadatafromobject.tt

    r7670 r9668  
    11psMetadata *[% table.namespace %]MetadataFromObject(const [% table.object_name %] *object)
    22{
    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 %]
    194
    205    return md;
  • trunk/glueforge/templates/psdb/objectfrommetadata.tt

    r5907 r9668  
    33[% table.object_name %] *[% table.namespace %]ObjectFromMetadata(psMetadata *md)
    44{
    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 -%]
    135
    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 -%]
    277
    288    return [% table.object_name %]Alloc(
Note: See TracChangeset for help on using the changeset viewer.