1 /*
2 *****************************************************************
3 *****************************************************************
4 *******                                                  ********
5 ****** Copyright (C) 1988-2010 Tecplot, Inc.              *******
6 *******                                                  ********
7 *****************************************************************
8 *****************************************************************
9 */
10 #if defined EXTERN
11 #  undef EXTERN
12 #endif
13 #if defined STRLISTMODULE
14 #  define EXTERN
15 #else
16 #  define EXTERN extern
17 #endif
18 
19 #if !defined ARRLIST_h
20 #  error "Include ARRLIST.h before including STRLIST.h"
21 #endif
22 
23 /*
24  *
25  * For building pltview.exe under Windows, we use
26  * tecio.dll (which is linked to pltview).
27  * Since pltview.exe uses a few of the
28  * functions here, they need to be exported into
29  * the tecio.dll, thus "TECXXX.h" is included for the
30  * LIBFUNCTION & LIBCALL keywords. They are not
31  * documented with the other TECXXX() functions,
32  * however.
33  *
34  * If pltview requires other string functions
35  * in the future, they can be added to the dll
36  * by adding LIBFUNCTION & LIBCALL as in
37  * StringListDealloc(), etc. below.
38  *
39  * When building the tecplot kernel, LIBFUNCTION
40  * and LIBCALL are nop's.
41  *
42  */
43 #include "TECXXX.h"
44 
45 EXTERN Boolean_t     StringListValid(StringList_pa StringList);
46 EXTERN void          StringListClear(StringList_pa StringList);
47 EXTERN void          StringListRemoveStrings(StringList_pa StringList,
48                                              LgIndex_t     StringOffset,
49                                              LgIndex_t     Count);
50 EXTERN void          StringListRemoveString(StringList_pa StringList,
51                                             LgIndex_t     StringOffset);
52 LIBFUNCTION void LIBCALL StringListDealloc(StringList_pa* StringList);
53 EXTERN StringList_pa StringListAlloc(void);
54 EXTERN Boolean_t     StringListAppendString(StringList_pa StringList,
55                                             char   const* String);
56 LIBFUNCTION LgIndex_t LIBCALL StringListCount(StringList_pa StringList);
57 LIBFUNCTION char* LIBCALL StringListGetString(StringList_pa StringList,
58                                               LgIndex_t     StringOffset);
59 
60 #if defined USE_MACROS_FOR_FUNCTIONS
61 #  define StringListGetStringRef StringListGetStringRef_MACRO
62 #else
63 #  define StringListGetStringRef StringListGetStringRef_FUNC
64 #endif
65 
66 #if !defined USE_MACROS_FOR_FUNCTIONS
67 EXTERN char const* StringListGetStringRef_FUNC(StringList_pa StringList,
68                                                LgIndex_t     StringOffset);
69 #endif
70 /**
71  * To maintain the string list's integrity the result is cast to a
72  * (char const*) to minimize the risk of users passing the result
73  * to FREE_ARRAY.
74  */
75 #define StringListGetStringRef_MACRO(StringList, StringOffset) \
76    static_cast<char const*>(ArrayListGetCharPtr(reinterpret_cast<ArrayList_pa>(StringList), StringOffset))
77 
78 EXTERN Boolean_t     StringListSetString(StringList_pa StringList,
79                                          LgIndex_t     StringOffset,
80                                          char const*   String);
81 EXTERN Boolean_t     StringListInsertString(StringList_pa StringList,
82                                             LgIndex_t     StringOffset,
83                                             char const*   String);
84 EXTERN StringList_pa StringListCopy(StringList_pa StringList);
85 EXTERN Boolean_t     StringListAppend(StringList_pa Target,
86                                       StringList_pa Source);
87 
88 EXTERN char*         StringListToNLString(StringList_pa StringList);
89 EXTERN StringList_pa StringListFromNLString(char const* String);
90 EXTERN char**        StringListToArray(StringList_pa StringList);
91 EXTERN StringList_pa StringListFromArray(char const** StringArray,
92                                          LgIndex_t    Count);
93 EXTERN StringList_pa StringListFromCompound(char const* String);
94 EXTERN char*         StringListToCompound(StringList_pa StringList,
95                                            char          GroupJoinCharacter,
96                                            char const*   CharsToEscape);
97 #if defined TECPLOTKERNEL
98 /* CORE SOURCE CODE REMOVED */
99 #endif
100