amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > table container? [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

27.10.2005, 12:04 Uhr

Mad_Dog
Posts: 1944
Nutzer
Hallo,

Ich bin gerade dabei, ein altes, mit dem Borland C++ Builder (Windows) entwickeltes Programm für den gcc flott zu machen.

Dabei bin ich auf folgendes gestoßen:

code:
table<int,unsigned int> portidz_tab;


Einen Container Namens "table" kennt STL aber nicht. Scheint was spezielles von Borland zu sein.

Dieser table Container hat - wie ich dem Programm entnehme - die Methoden number_of_lines, index, get_keys und push_back.

Leider habe ich nirgens ne Beschreibung dazu finden können. Hat jemand genauere Infos dazu?
--

http://www.norman-interactive.com

[ - Antworten - Zitieren - Direktlink - ]

27.10.2005, 12:42 Uhr

Solar
Posts: 3680
Nutzer
number_of_lines?

Oh, au, auerha...

Da hatte jemand wenig Peilung von der STL. Kanonisch heißt das size(), bei strings auch length()... von daher würde ich fast vermuten, daß dieses Template nicht von Borland kommt.

Schau' Dir mal <map> an. Das könnte in etwa das sein, was Du suchst - schwer zu sagen ohne genauere Info dazu, was Dein table<> so leistet.

[ - Antworten - Zitieren - Direktlink - ]

27.10.2005, 13:01 Uhr

Mad_Dog
Posts: 1944
Nutzer
Zitat:
Original von Solar:
number_of_lines?

Oh, au, auerha...

Da hatte jemand wenig Peilung von der STL. Kanonisch heißt das size(), bei strings auch length()... von daher würde ich fast vermuten, daß dieses Template nicht von Borland kommt.


Wie gesagt: Der ursprüngliche Code stammt nicht von mir. I-)
Ich soll das Teil jetzt eben für gcc flott machen...
Der Borland Compiler verdaut auch diese seltamen container mit der number_of_lines Methode. Ich hab keine Ahnung, wo dieser Container definiert ist - im Programmcode konnte ich es nirgens finden.

Muß wohl aus irgendeiner include-Datei kommen... ?(

Zitat:
Schau' Dir mal <map> an. Das könnte in etwa das sein, was Du suchst - schwer zu sagen ohne genauere Info dazu, was Dein table<> so leistet.

Ja... irgendwie muß ich das wohl ersetzen, oder aber selbst so einen table Container basteln... Vielleicht soll "table" sowas ähnliches wie "pair" sein? ?(



--

http://www.norman-interactive.com

[ - Antworten - Zitieren - Direktlink - ]

27.10.2005, 13:10 Uhr

Mad_Dog
Posts: 1944
Nutzer
Hier noch ein paar Codeschnipsel:

code:
class Porttable
        {
                public:
                //Porttable(ostream * logfile=&cout,const debugmode mode=debug::NODEBUG);
                ~Porttable();
                Porttable & regist(const PolygonGEO & p,const unsigned int index);
                void print(ostream & os) const;
                
                private:
                
                table<int,unsigned int> portidz_tab;                
                //int           -> interne Portnummer
                //unsigned int  -> Index zum Zugriff auf das zugehörige Polygon im PolygonContainer

                table<Edge,int>         portnr_tab;
                //Edge          -> Kante
                //int           -> interne Portnummer
        };


Diese Klasse dient dazu, die Anschlüsse eines 3D Modells einer integrierten Microwellenschaltung abzubilden...

Und hier kommen die Metoden dieses ominösen "table" Containers zum Einsatz:

code:
Porttable & Porttable::regist(const PolygonGEO & p,const unsigned int index)
                {
                        vector<Edge> help;                //Kante die untersucht wird
                        vector<unsigned int> polygonidz;  //nimmt die Polygonindizes auf
                        int portnr;                           //Portnummer
                        unsigned int number_of_keys_port;  //Anzahl der Schlüssel mit dem Port portnr
                        unsigned int number_of_edges=p.size();    //Anzahl der Kanten im Polygon
                        for(uint32 i=0;i<number_of_edges;i++)
                        //Kanten abgrasen
                        {
                           help=p.getEdge(i);
                           if(!help.empty())
                           {
                                portnr=help[0].getport();
                                if(portnr!=0)
                                //Kante hat eine Portnummer -> in Tabellen eintragen
                                {
                                        number_of_keys_port=portidz_tab.number_of_lines(portnr);
                                        if(number_of_keys_port>0)
                                        //Port ist bereits registriert
                                        {
                                                polygonidz=portidz_tab[portidz_tab.index(portnr)];
                                                if(find(polygonidz.begin(),polygonidz.end(),index)==polygonidz.end())
                                                //wahr wenn Polygonindex noch nicht registriert
                                                {
                                                        portidz_tab.push_back(portnr,index);
                                                        //portnr_tab.push_back(help[0],portnr);
                                                };
                                        }
                                        else
                                        {
                                                portidz_tab.push_back(portnr,index);
                                                //portnr_tab.push_back(help[0],portnr);
                                        };
                                        
                                };
                           };
                        };
                        return *this;
                };



--

http://www.norman-interactive.com

[ Dieser Beitrag wurde von Mad_Dog am 27.10.2005 um 14:41 Uhr editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

27.10.2005, 13:20 Uhr

Solar
Posts: 3680
Nutzer
Bevor Du Dein eigenes table-Template schreibst, durchsuche erst einmal die Header nach einer Definition. (Templatedefinitionen stehen eigentlich immer in einem Header, da die wenigsten Compiler das seit 1998 standardisierte "export" beherrschen.)

Wenn Du "template table" nichts findest, such' nach einem entsprechenden typedef davon...

[ - Antworten - Zitieren - Direktlink - ]

28.10.2005, 09:33 Uhr

Mad_Dog
Posts: 1944
Nutzer
Zitat:
Original von Solar:
Wenn Du "template table" nichts findest, such' nach einem entsprechenden typedef davon...


Hab ich gemacht - und nix dabei gefunden. Aber zum Glück hat sich herausgestellt, daß das entsprechende Modul eine von vielen Altlasten in dem Programm war. An dem Teil haben im Laufe der Jahre schon ca. 5 verschiedene Diplomanten oder Praktikanten rumgewerkelt und die ersten zwei davon waren Frauen (nix gegen Frauen, aber sich als Mann in deren Gedankengänge reinzuversetzen ist nicht immer leicht ;) ).

Jetzt hab ich dieses < 300000 Zeilen Monster soweit gebändigt, daß es auch vom g++ compiliert wird - nur der Linker zickt noch rum.

--

http://www.norman-interactive.com

[ Dieser Beitrag wurde von Mad_Dog am 28.10.2005 um 09:38 Uhr editiert. ]

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > table container? [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.