~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to source4/heimdal/lib/wind/generate.py

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/local/bin/python
 
2
# -*- coding: iso-8859-1 -*-
 
3
 
 
4
# $Id$
 
5
 
 
6
# Copyright (c) 2004 Kungliga Tekniska Högskolan
 
7
# (Royal Institute of Technology, Stockholm, Sweden). 
 
8
# All rights reserved. 
 
9
 
10
# Redistribution and use in source and binary forms, with or without 
 
11
# modification, are permitted provided that the following conditions 
 
12
# are met: 
 
13
 
14
# 1. Redistributions of source code must retain the above copyright 
 
15
#    notice, this list of conditions and the following disclaimer. 
 
16
 
17
# 2. Redistributions in binary form must reproduce the above copyright 
 
18
#    notice, this list of conditions and the following disclaimer in the 
 
19
#    documentation and/or other materials provided with the distribution. 
 
20
 
21
# 3. Neither the name of the Institute nor the names of its contributors 
 
22
#    may be used to endorse or promote products derived from this software 
 
23
#    without specific prior written permission. 
 
24
 
25
# THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
 
26
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 
27
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
 
28
# ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
 
29
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 
30
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
 
31
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
 
32
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
 
33
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
 
34
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
 
35
# SUCH DAMAGE. 
 
36
 
 
37
import datetime
 
38
import string
 
39
import os
 
40
 
 
41
class GeneratedFile :
 
42
    "Represents a generated file"
 
43
    def __init__(self, name) :
 
44
        "Create a new GeneratedFile with name"
 
45
        self.name  = os.path.basename(name)
 
46
        self.file  = open(name, 'w')
 
47
        self.file.write('/* ' + name + ' */\n')
 
48
        self.file.write('/* Automatically generated at ' +
 
49
                        datetime.datetime.now().isoformat() +
 
50
                        ' */\n\n')
 
51
    
 
52
    def close(self) :
 
53
        """End and close the file header"""
 
54
        self.file.close()
 
55
    
 
56
 
 
57
class Header(GeneratedFile) :
 
58
    "Represents a generated header file"
 
59
    guardTrans = string.maketrans('-.', '__')
 
60
    def makeGuard(self) :
 
61
        """Return a name to be used as ifdef guard"""
 
62
        return string.upper(string.translate(self.name, self.guardTrans))
 
63
 
 
64
    def __init__(self, name) :
 
65
        "Create a new Header with name"
 
66
        GeneratedFile.__init__(self, name)
 
67
        self.guard = self.makeGuard()
 
68
        self.file.write('#ifndef ' + self.guard + '\n')
 
69
        self.file.write('#define ' + self.guard + ' 1\n')
 
70
    
 
71
    def close(self) :
 
72
        """End and close the file header"""
 
73
        self.file.write('#endif /* ' + self.guard + ' */\n')
 
74
        GeneratedFile.close(self)
 
75
 
 
76
 
 
77
class Implementation(GeneratedFile) :
 
78
    "Represents a generated implementation file"
 
79
    def __init__(self, name) :
 
80
        "Create a new Implementation with name"
 
81
        GeneratedFile.__init__(self, name)