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
/*******************************************************/
/* "C" Language Integrated Production System */
/* */
/* CLIPS Version 6.40 08/27/19 */
/* */
/* STRING_TYPE FUNCTIONS HEADER FILE */
/*******************************************************/
/*************************************************************/
/* Purpose: */
/* */
/* Principal Programmer(s): */
/* Gary D. Riley */
/* */
/* Contributing Programmer(s): */
/* */
/* Revision History: */
/* */
/* 6.23: Correction for FalseSymbol/TrueSymbol. DR0859 */
/* */
/* 6.30: Support for long long integers. */
/* */
/* Removed conditional code for unsupported */
/* compilers/operating systems (IBM_MCW and */
/* MAC_MCW). */
/* */
/* Used gensprintf instead of sprintf. */
/* */
/* Changed integer type/precision. */
/* */
/* Changed garbage collection algorithm. */
/* */
/* Added support for UTF-8 strings to str-length, */
/* str-index, and sub-string functions. */
/* */
/* Added const qualifiers to remove C++ */
/* deprecation warnings. */
/* */
/* 6.40: Removed LOCALE definition. */
/* */
/* Pragma once and other inclusion changes. */
/* */
/* Added support for booleans with <stdbool.h>. */
/* */
/* Removed use of void pointers for specific */
/* data structures. */
/* */
/* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
/* */
/* UDF redesign. */
/* */
/* Added str-replace function. */
/* */
/*************************************************************/
#ifndef _H_strngfun
#pragma once
#define _H_strngfun
#include "entities.h"
typedef enum
{
EE_NO_ERROR = 0,
EE_PARSING_ERROR,
EE_PROCESSING_ERROR
} EvalError;
typedef enum
{
BE_NO_ERROR = 0,
BE_COULD_NOT_BUILD_ERROR,
BE_CONSTRUCT_NOT_FOUND_ERROR,
BE_PARSING_ERROR,
} BuildError;
BuildError Build(Environment *,const char *);
EvalError Eval(Environment *,const char *,CLIPSValue *);
void StringFunctionDefinitions(Environment *);
void StrCatFunction(Environment *,UDFContext *,UDFValue *);
void SymCatFunction(Environment *,UDFContext *,UDFValue *);
void StrLengthFunction(Environment *,UDFContext *,UDFValue *);
void UpcaseFunction(Environment *,UDFContext *,UDFValue *);
void LowcaseFunction(Environment *,UDFContext *,UDFValue *);
void StrCompareFunction(Environment *,UDFContext *,UDFValue *);
void SubStringFunction(Environment *,UDFContext *,UDFValue *);
void StrIndexFunction(Environment *,UDFContext *,UDFValue *);
void EvalFunction(Environment *,UDFContext *,UDFValue *);
void BuildFunction(Environment *,UDFContext *,UDFValue *);
void StringToFieldFunction(Environment *,UDFContext *,UDFValue *);
void StringToField(Environment *,const char *,UDFValue *);
void StrReplaceFunction(Environment *,UDFContext *,UDFValue *);
#endif /* _H_strngfun */