[EMAIL PROTECTED] dijo:
> Quoting Horst von Brand <[EMAIL PROTECTED]>:
> > C es el ejemplo clasico de lenguaje procedural, C++ es una extension OO
> > (bastante mal lograda) a C.

> Yo tengo entendido que una forma muy eficiente de escribir codigo C
> "puro" basado en objetos (distinto a OO, ya que no hay herencia),

Todo puede arreglarse...

>                                                                   es
> utilizando estructuras con campos que son punteros a funciones que tienen
> como primer parametro generalmente una variable de la susodicha
> estructura,

Un puntero a la estructura, mas bien.

>             el famoso "objeto" this, con lo cual se tienen en las
> estructuras los datos y los métodos que manipulan esos datos :-) creo que
> gran parte del kernel de linux esta escrito así... o me equivoco, doc?

Yep. Tiene algunas otras gracias:

- Puedes cambiar (!) la funcion invocada sobre la marcha

- Se puede arreglar facilmente el llamar "otras" funciones alrededor del
  metodo (p.ej. alguna funcion padre, etc)

- Se pueden manejar "metodos por omision": Si no hay metodo, llame a...

Tiene sus problemas. Pero funciona. En todo caso, al interior del nucleo
las mas de las veces son objetos instanciados con operaciones diferentes. O
sea, tienes algo como (de include/linux/fs.h):

   struct file_operations {
        struct module *owner;
        loff_t (*llseek) (struct file *, loff_t, int);
        ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
        ssize_t (*aio_read) (struct kiocb *, char __user *, size_t, loff_t);
        ssize_t (*write) (struct file *, const char __user *, size_t,
                          loff_t *);
        ssize_t (*aio_write) (struct kiocb *, const char __user *, size_t,
                              loff_t);
        /* etc */
   };

Y cada tipo de archivo tiene asociada una estructura de estas (llenada con
las funciones correctas del caso). Cada vez que se quiere hacer un write
llamas a la funcion write parte de esta estructura que corresponde a ese
archivo. Un archivo (struct file) es a su vez una estructura que contiene
un puntero a la struct file_operations propia a ese tipo de archivo.
Enredado y todo, uno se acostumbra; y es la manera en que tipicamente C++
internamente implementa funciones virtuales.
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513
From [EMAIL PROTECTED]  Tue Mar  9 18:43:56 2004
From: [EMAIL PROTECTED] (Victor Hugo dos Santos)
Date: Tue Mar  9 18:44:11 2004
Subject: Varias perguntas sobre CVS
Message-ID: <[EMAIL PROTECTED]>

Hola a todos,

Estoy configurando CVS por acá y alguna dudas me viene a la cabeza.


- Se puede utilizar autenticación pserver y rsh (decidir utilizar rsh) mas no 
me agrada la idea de que los usuarios tengan un shell valido (/bin/bash) en el 
sistema, probé con "false" y "nologin"  y no funciona!!!!  :-(  

Existe alguna alternativa para esto ???? 


- Como se define quien tienes derecho de escribir en el directorio y quien no 
tiene permiso para escribir???  
Esto funciona en base al sistema de archivo UNIX??? 
O sea, se estoy en el grupo "cvs" (o otro que tenga acceso de escritura) a los 
archivos, entonces, tengo los permisos necesarios ???

Y en el caso del usuario anónimo, simplemente vas a tener permiso de lectura, 
ya que los archivos tienen permiso 644 ???  O existe algún otro método para 
crear el  usuario anónimo ???


- Como se establece quien es administrador y quien no es ????
Tengo entendido que algunas tareas (creación de tag y ramas, por ejemplo) 
solamente la pueden realizar el admin ???


- Donde quedan guardadas las versiones ???
Por ejemplo, se estoy trabajando con la versión 2.2 de un archivo y me tenga 
que volver a trabajar con la versión 1.4.2, como podría recuperar esta versión 
???

utilice las opciones para crear tag y ramas y mirando los archivos en el 
servidor(*,v) ,  se mira que se realizaron las ramas... Mas no encuentro donde 
están las informaciones viejas, o sea, pensaba que iba creando en el directorio 
archivos como:

archivo.c_1.1.1.1
archivo.c_1.2
archivo.c_2.0

o por ultimo algún local donde quedara guardado las modificaciones viejas, mas 
no encontré estas en ninguna parte .


Estaba leyendo varios manuales en la red, que no me acallaron las dudas de mas 
arriba.. 
Ahora estoy en la pagina oficial de CVS, se alguien tiene algún sitio que tenga 
información extra interesante sobre el tema, quedaría agradecido que me lo 
enviara.    Obs.: Ya visite el sitio de fcatrin  :D 


Gracias

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Victor Hugo dos Santos
Linux Counter #224399
La Serena - IV Región - Chile

Responder a