Sample code for 30+ languages & platforms
Tcl

Implement Preprocessor #include with StringBuilder

Demonstrates how to implement #include with a Chilkat StringBuilder.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

# First build a string that has a preprocessor include
set sbSrc [new_CkStringBuilder]

CkStringBuilder_Append $sbSrc "1\r\n2\r\n3\r\n"
CkStringBuilder_Append $sbSrc "#include <qa_data/txt/helloWorld.txt>\r\n"
CkStringBuilder_Append $sbSrc "4\r\n5\r\n"

puts [CkStringBuilder_getAsString $sbSrc]

# sbSrc contains:
# 	1
# 	2
# 	3
# 	#include <qa_data/txt/helloWorld.txt>
# 	4
# 	5

# The qa_data/txt/helloWorld.txt file contains "Hello World!"

set filePath [CkStringBuilder_getAfterBetween $sbSrc "#include" "<" ">"]
if {[CkStringBuilder_get_LastMethodSuccess $sbSrc] != 1} then {
    puts "No #include's found."
    delete_CkStringBuilder $sbSrc
    exit
}

puts "filePath: $filePath"

# Load the contents of the filePath
set sbIncludeFile [new_CkStringBuilder]

CkStringBuilder_LoadFile $sbIncludeFile $filePath "utf-8"

# Replace the first occurrence of #include <...> line with the contents of the include file.
CkStringBuilder_ReplaceAllBetween $sbSrc "#include" ">" [CkStringBuilder_getAsString $sbIncludeFile] 1

puts [CkStringBuilder_getAsString $sbSrc]

# sbSrce now contains:
# 	1
# 	2
# 	3
# 	Hello World!
# 	4
# 	5

delete_CkStringBuilder $sbSrc
delete_CkStringBuilder $sbIncludeFile