1#![allow(unsafe_op_in_unsafe_fn)]
2#![allow(unused_imports)]
4
5use autocxx::prelude::*;
6
7include_cpp! {
8 #include "xgrammar/xgrammar.h"
9 #include "dlpack/dlpack.h"
10 #include "cxx_utils.hpp"
11 #include "cxx_utils/testing.hpp"
12 safety!(unsafe_ffi)
13 generate!("xgrammar::CompiledGrammar")
15 generate!("xgrammar::GrammarCompiler")
16
17 generate!("xgrammar::SetMaxRecursionDepth")
19 generate!("xgrammar::GetMaxRecursionDepth")
20 generate!("xgrammar::GetSerializationVersion")
21
22 generate!("xgrammar::StructuralTagItem")
24 generate!("xgrammar::Grammar")
25
26 generate!("xgrammar::GetBitmaskSize")
28 generate!("xgrammar::GetBitmaskDLType")
29 generate!("xgrammar::ApplyTokenBitmaskInplaceCPU")
30 generate!("xgrammar::GrammarMatcher")
31 generate!("xgrammar::BatchGrammarMatcher")
32
33 generate!("xgrammar::VocabType")
35 generate!("xgrammar::TokenizerInfo")
36
37 generate!("cxx_utils::new_string_vector")
39 generate!("cxx_utils::string_vec_reserve")
40 generate!("cxx_utils::string_vec_push_bytes")
41
42 generate!("cxx_utils::make_tokenizer_info")
44 generate!("cxx_utils::tokenizer_info_deserialize_json_or_error")
45
46 generate!("cxx_utils::new_structural_tag_vector")
48 generate!("cxx_utils::structural_tag_vec_reserve")
49 generate!("cxx_utils::structural_tag_vec_push")
50
51 generate!("cxx_utils::grammar_from_json_schema")
53 generate!("cxx_utils::grammar_from_structural_tag")
54 generate!("cxx_utils::new_grammar_vector")
55 generate!("cxx_utils::grammar_vec_reserve")
56 generate!("cxx_utils::grammar_vec_push")
57 generate!("cxx_utils::grammar_deserialize_json_or_error")
58
59 generate!("cxx_utils::compiled_grammar_deserialize_json_or_error")
61
62 generate!("cxx_utils::make_grammar_compiler")
64 generate!("cxx_utils::compiler_compile_json_schema")
65 generate!("cxx_utils::compiler_compile_builtin_json")
66 generate!("cxx_utils::compiler_compile_regex")
67 generate!("cxx_utils::compiler_compile_structural_tag")
68 generate!("cxx_utils::compiler_compile_grammar_or_error")
69
70 generate!("cxx_utils::make_grammar_matcher")
72 generate!("cxx_utils::make_batch_grammar_matcher")
73 generate!("cxx_utils::new_grammar_matcher_vector")
74 generate!("cxx_utils::grammar_matcher_vec_reserve")
75 generate!("cxx_utils::grammar_matcher_vec_push")
76 generate!("cxx_utils::batch_matcher_batch_fill_next_token_bitmask")
77 generate!("cxx_utils::batch_accept_token")
78 generate!("cxx_utils::batch_accept_string")
79
80 generate!("cxx_utils::ebnf_to_grammar_no_normalization")
82 generate!("cxx_utils::json_schema_to_ebnf")
83 generate!("cxx_utils::qwen_xml_tool_calling_to_ebnf")
84 generate!("cxx_utils::get_masked_tokens_from_bitmask")
85 generate!("cxx_utils::SingleTokenResult")
86 generate!("cxx_utils::is_single_token_bitmask")
87
88 generate_pod!("DLTensor")
90 generate!("DLManagedTensor") generate_pod!("DLDevice")
92 generate_pod!("DLDataType")
93 generate_pod!("DLDeviceType")
94 generate_pod!("DLDataTypeCode")
95
96}
97
98pub use ffi::{
100 DLDataType, DLDataTypeCode, DLDevice, DLDeviceType, DLManagedTensor,
101 DLTensor,
102};
103#[allow(unused_imports)]
104use ffi::{
105 cxx_utils,
106 xgrammar::{
107 BatchGrammarMatcher as FFIBatchGrammarMatcher,
108 CompiledGrammar as FFICompiledGrammar,
109 GetBitmaskDLType as FFIGetBitmaskDLType,
110 GetBitmaskSize as FFIGetBitmaskSize,
111 GetMaxRecursionDepth as FFIGetMaxRecursionDepth,
112 GetSerializationVersion as FFIGetSerializationVersion,
113 Grammar as FFIGrammar, GrammarCompiler as FFIGrammarCompiler,
114 GrammarMatcher as FFIGrammarMatcher,
115 SetMaxRecursionDepth as FFISetMaxRecursionDepth,
116 StructuralTagItem as FFIStructuralTagItem,
117 TokenizerInfo as FFITokenizerInfo,
118 },
119};
120
121mod compiler;
122mod config;
123mod grammar;
124mod matcher;
125mod tokenizer_info;
126
127pub mod testing;
128
129pub use autocxx::{
130 c_int as cxx_int, c_longlong as cxx_longlong, c_ulong as cxx_ulong,
131 c_ulonglong as cxx_ulonglong,
132};
133pub use compiler::{CompiledGrammar, GrammarCompiler};
134pub use config::{
135 get_max_recursion_depth, get_serialization_version, set_max_recursion_depth,
136};
137pub use cxx::UniquePtr as CxxUniquePtr;
138pub use ffi::xgrammar::VocabType;
139pub use grammar::{Grammar, StructuralTagItem};
140pub use matcher::{
141 BatchGrammarMatcher, GrammarMatcher, allocate_token_bitmask,
142 get_bitmask_shape, reset_token_bitmask,
143};
144pub use tokenizer_info::TokenizerInfo;