#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# version 0.1
#
############
## TODO ##
############
#
# [X] Suivre les #include
# [ ] Déclarations des variables
# [ ] Supprimer la valeur après le "="
# [ ] Fonctions
# [ ] permettre la mise en forme des fonctions ne possédant pas de bloc {}
# [ ] C++
# [ ] Voir si ca fonctionne
#
import os, os.path, sys, string, re;
SHORT_CONST=1
if 1<len(sys.argv): input_name=sys.argv[1]
else:
print "Please select a file to create the header"
sys.exit(1);
if 2<len(sys.argv): output_name=sys.argv[2]
else: output_name=string.replace(file+'.h', '.c.h', '.h');
if 3<len(sys.argv): CONST=sys.argv[3]
elif SHORT_CONST: CONST="_"+re.sub('[^A-Z]', '_', string.upper(os.path.basename(output_name)))
else: CONST="_"+re.sub('[^A-Z]', '_', string.upper(output_name))
os.system('indent -l0 -npsl < '+input_name+' 2>/dev/null > '+output_name);
def add_file(filename, list=[]):
if not os.access(filename, os.F_OK):
list.append("/* Can't find file '"+filename+"' */\n")
return list;
buffer = open(filename, 'r')
while 1:
line=buffer.readline();
if len(line) == 0: break; # EOF
match=re.match('#[\\s]*include[\\s]+"([^"]+)"', line)
if match:
list.append("/* "+string.strip(line)+" */\n");
list = add_file(os.path.dirname(filename)+'/'+match.group(1), list)
list.append("/* END "+string.strip(line)+" */\n");
else: list.append(line);
buffer.close()
return list
lines = add_file(output_name)
buffer = open(output_name, 'w')
buffer.write("#ifndef "+CONST+"\n#define "+CONST+"\n\n");
# for line in lines: print string.rstrip(line);
i=0
# line='//'
len_lines=len(lines)
while i < len_lines:
line=string.rstrip(lines[i]); i+=1
nudeline=string.rstrip(line.split('//')[0])
if len(nudeline) and nudeline[-1]==")" and i<len_lines and len(lines[i]) and lines[i][0]=="{":
buffer.write(line+";\n")
# Entering function block code
i+=1
while i < len_lines:
line=string.rstrip(lines[i]); i+=1
if len(line) and line[0]=="}": break
elif len(line):
buffer.write(line+"\n")
buffer.write("\n#endif\n");
buffer.close();
Journal [Script Python] Création automatique des fichiers headers en C
Voici un peutut script python qui est la réponse à ma question: http://linuxfr.org/forums/19/5740.html(...)
# Utilisation
Posté par Mildred (site web personnel) . Évalué à 1.
# C'est bien sympa mais...
Posté par Uld (site web personnel) . Évalué à 0.
Non j'dis pas ca pour faire chier mais faudra m'expliquer pourquoi en faire un journal...
[^] # Re: C'est bien sympa mais...
Posté par Mildred (site web personnel) . Évalué à 0.
# Scons
Posté par nojhan (site web personnel, Mastodon) . Évalué à 1.
http://www.scons.org/(...)
[^] # Re: Scons
Posté par Mildred (site web personnel) . Évalué à 1.
J'ai juste envie de générer un fichier header.
peut être que Scons le permet mais je n'ai plus trop envie de lire tout le site en anglais ...
Sinon, merci
# Bug
Posté par Mildred (site web personnel) . Évalué à 1.
Lorsque une partie du code d'une fonction est commenté et que ce code contient une ligne qui contient le caractère "}" en première position, la fin de la fonction n'est plus trouvée au bon endroit.
[^] # Re: Bug
Posté par Mildred (site web personnel) . Évalué à 1.
[^] # Re: Bug
Posté par Mildred (site web personnel) . Évalué à 1.
# Toute nouvelle version
Posté par Mildred (site web personnel) . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.