Schrift
[thread]1123[/thread]

vector in C? (Seite 2)



<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
Dubu
 2005-05-05 01:57
#11165 #11165
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@renee: So ganz ist mir nicht klar, warum du gezwungen bist, C statt C++ zu verwenden. Gerade fuer die Interaktion mit anderen Programmen sollte es doch ziemlich egal sein, was von beidem du nutzt. Es ist ja nicht mal ein grosses Problem, C-Code mit C++-Code zu linken ...
esskar
 2005-05-05 03:48
#11166 #11166
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
habs nicht getestet oder kompiliert; ist aber vielleicht ein Anfang mit dem du arbeiten kannst!

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#define max(x, y) ( (x) > (y) ? (x) : (y) )

typedef struct tagString {
   char *Buffer;
   unsigned int Length;
   unsigned int Size;
} String;

String *str_create(const char *str) {
   String *retval = (String *)malloc(sizeof(String));

   memset(retval, 0, sizeof(String));
   if(str != NULL) {
       retval->Length = strlen(str);
       retval->Size = max(retval->Length + 1, 64);
       retval->Buffer = (char *)malloc(retval->Size);
       strncpy(retval->Buffer, str, retval->Size);
   }

   return retval;
}

String *str_destroy(String *str) {
   if(str != NULL) {
       if(str->Buffer != NULL) free(str->Buffer);
       free(str);
   }

   return NULL;
}

String *str_concate(String *str, const char *buffer) {
   if(str != NULL && str->Buffer != NULL && buffer != NULL) {
       int len = strlen(buffer);
       if(str->Length + len >= str->Size) {
          str->Size += max(len + 1, 64);
          str->Buffer = (char *)realloc(str->Buffer, str->Size);
       }
       strncat(str->Buffer, buffer, str->Size);
   }

   return str;
}

typedef struct tagStringVector {
  String **Array;
  unsigned int Length;
  unsigned int Size;
} StringVector;

StringVector *strvec_create() {
  StringVector *retval = (StringVector *)malloc(sizeof(StringVector));

  memset(retval, 0, sizeof(StringVector));

  return retval;
}

StringVector *strvec_destroy(StringVector *strvec) {
  if(strvec != NULL) {
     unsigned int i;
     for(i = 0; i < strvec->Length; ++i) {
        strvec->Array[i] = str_destroy(strvec->Array[i]);
     }
     if(strvec->Array != NULL) free(strvec->Array);
     free(strvec);
  }
  return NULL;
}

void strvec_push(StringVector *strvec, const char *buffer) {
   String *str = str_create(buffer);

   if(strvec->Length >= strvec->Size) {
       strvec->Size += 8;
       if(strvec->Array == NULL)
           strvec->Array = (String **)malloc(
               strvec->Size * sizeof(String *)
           );
       else
           strvec->Array = (String **)realloc(
               strvec->Array,
               strvec->Size * sizeof(String *)
           );
   }

   strvec->Array[strvec->Length++] = str;
}

String *strvec_str_at(StringVector *strvec, unsigned int idx) {
   if(strvec && strvec->Length > idx)
       return strvec->Array[idx];
   else
       return NULL;
}

const char *strvec_ptr_at(StringVector *strvec, unsigned int idx) {
   String *str = strvec_str_at(strvec, idx);
   if(str != NULL)
       return str->Buffer;
   else
       return NULL;
}


Fragen?\n\n

<!--EDIT|esskar|1115659358-->
renee
 2005-05-05 13:59
#11167 #11167
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Dubu: das Programm muss auf zwei Servern laufen, wobei auf dem einen Server die ganzen C++-Librarys nicht vorhanden sind. Dann wird das Programm abgebrochen... Die C-Librarys sind aber vollständig vorhanden...

@esskar: Ich werde mir den Ansatz am Montag mal genauer anschauen, die nächsten Tage bin ich in München ;)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Dubu
 2005-05-05 14:19
#11168 #11168
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=renee,05.05.2005, 11:59]@Dubu: das Programm muss auf zwei Servern laufen, wobei auf dem einen Server die ganzen C++-Librarys nicht vorhanden sind. Dann wird das Programm abgebrochen...[/quote]
Dann wuerde ich das Programm statisch linken, da hast du keine Abhaengigkeit von Shared Libraries mehr.
esskar
 2005-05-05 15:53
#11169 #11169
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
oder einfach die c++ libs installieren!
renee
 2005-05-09 00:24
#11170 #11170
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
die admins haben schon ein wenig was probiert, aber dann traten andere Fehler auf...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2005-05-09 02:31
#11171 #11171
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=renee,08.05.2005, 22:24]die admins haben schon ein wenig was probiert, aber dann traten andere Fehler auf...[/quote]
inwiefern?
renee
 2005-05-09 10:48
#11172 #11172
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Fehlermeldung kann ich Dir jetzt nicht sagen, da die Änderungen wieder zurückgenommen wurden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2005-05-09 18:05
#11173 #11173
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wie sieht es mit meinem Ansatz aus?
Kommst du damit voran?
renee
 2005-05-09 18:15
#11174 #11174
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich bin gerade dabei, mich in den Code einzulesen... Ich möchte ja auch verstehen, was Du mir da vorgesetzt hast. Dann kann ich das in Zukunft vielleicht auch selbst machen ;)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2005-05-04 13:10.