/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ /** * Program doctext. * * Seriously, this is the documentation for this whole program. */ namespace java thrift.test namespace cpp thrift.test // C++ comment /* c style comment */ # the new unix comment /** Some doc text goes here. Wow I am [nesting these] (no more nesting.) */ enum Numberz { /** This is how to document a parameter */ ONE = 1, /** And this is a doc for a parameter that has no specific value assigned */ TWO, THREE, FIVE = 5, SIX, EIGHT = 8 } /** This is how you would do a typedef doc */ typedef i64 UserId /** And this is where you would document a struct */ struct Xtruct { /** And the members of a struct */ 1: string string_thing /** doct text goes before a comma */ 4: i8 byte_thing, 9: i32 i32_thing, 11: i64 i64_thing } /** * You can document constants now too. Yeehaw! */ const i32 INT32CONSTANT = 9853 const i16 INT16CONSTANT = 1616 /** Everyone get in on the docu-action! */ const map MAPCONSTANT = {'hello':'world', 'goodnight':'moon'} struct Xtruct2 { 1: i8 byte_thing, 2: Xtruct struct_thing, 3: i32 i32_thing } /** Struct insanity */ struct Insanity { /** This is doc for field 1 */ 1: map userMap, /** And this is doc for field 2 */ 2: list xtructs } exception Xception { 1: i32 errorCode, 2: string message } exception Xception2 { 1: i32 errorCode, 2: Xtruct struct_thing } /* C1 */ /** Doc */ /* C2 */ /* C3 */ struct EmptyStruct {} struct OneField { 1: EmptyStruct field } /** This is where you would document a Service */ service ThriftTest { /** And this is how you would document functions in a service */ void testVoid(), string testString(1: string thing), i8 testByte(1: byte thing), i32 testI32(1: i32 thing), /** Like this one */ i64 testI64(1: i64 thing), double testDouble(1: double thing), Xtruct testStruct(1: Xtruct thing), Xtruct2 testNest(1: Xtruct2 thing), map testMap(1: map thing), set testSet(1: set thing), list testList(1: list thing), /** This is an example of a function with params documented */ Numberz testEnum( /** This param is a thing */ 1: Numberz thing ), UserId testTypedef(1: UserId thing), map> testMapMap(1: i32 hello), /* So you think you've got this all worked, out eh? */ map> testInsanity(1: Insanity argument), } /// This style of Doxy-comment doesn't work. typedef i32 SorryNoGo /** * This is a trivial example of a multiline docstring. */ typedef i32 TrivialMultiLine /** * This is the canonical example * of a multiline docstring. */ typedef i32 StandardMultiLine /** * The last line is non-blank. * I said non-blank! */ typedef i32 LastLine /** Both the first line * are non blank. ;-) * and the last line */ typedef i32 FirstAndLastLine /** * INDENTED TITLE * The text is less indented. */ typedef i32 IndentedTitle /** First line indented. * Unfortunately, this does not get indented. */ typedef i32 FirstLineIndent /** * void code_in_comment() { * printf("hooray code!"); * } */ typedef i32 CodeInComment /** * Indented Docstring. * This whole docstring is indented. * This line is indented further. */ typedef i32 IndentedDocstring /** Irregular docstring. * We will have to punt * on this thing */ typedef i32 Irregular1 /** * note the space * before these lines * but not this * one */ typedef i32 Irregular2 /** * Flush against * the left. */ typedef i32 Flush /** No stars in this one. It should still work fine, though. Including indenting. */ typedef i32 NoStars /** Trailing whitespace Sloppy trailing whitespace is truncated. */ typedef i32 TrailingWhitespace /** * This is a big one. * * We'll have some blank lines in it. * * void as_well_as(some code) { * puts("YEEHAW!"); * } */ typedef i32 BigDog /** * * */ typedef i32 TotallyDegenerate /**no room for newline here*/ /* * / */ typedef i32 TestFor3501a /** * / */ typedef i32 TestFor3501b /* Comment-end tokens can of course have more than one asterisk */ struct TestFor3709_00 { /* ? */ 1: i32 foo } /* Comment-end tokens can of course have more than one asterisk **/ struct TestFor3709_01 { /* ? */ 1: i32 foo } /* Comment-end tokens can of course have more than one asterisk ***/ struct TestFor3709_02 { /* ? */ 1: i32 foo } /** Comment-end tokens can of course have more than one asterisk */ struct TestFor3709_03 { /* ? */ 1: i32 foo } /** Comment-end tokens can of course have more than one asterisk **/ struct TestFor3709_04 { /* ? */ 1: i32 foo } /** Comment-end tokens can of course have more than one asterisk ***/ struct TestFor3709_05 { /* ? */ 1: i32 foo } /*** Comment-end tokens can of course have more than one asterisk */ struct TestFor3709_06 { /* ? */ 1: i32 foo } /*** Comment-end tokens can of course have more than one asterisk **/ struct TestFor3709_07 { /* ? */ 1: i32 foo } /*** Comment-end tokens can of course have more than one asterisk ***/ struct TestFor3709_08 { /* ? */ 1: i32 foo } struct TestFor3709 { /** This is a comment */ 1: required string id, /** This is also a comment **/ 2: required string typeId, /** Yet another comment! */ 3: required i32 endTimestamp } /* THE END */